[アップデート] Amazon Forecast上のリソースにタグ付けができるようになりました

2020.07.28

データアナリティクス事業本部の貞松です。
毎度おなじみ、Amazon Forecastのアップデートです。

Amazon Forecastのアップデートにより、Forecast上の各種リソースに対して管理用のタグを付けられるようになりました。
これにより、所有者や環境などの属性でリソースを分類することができます。また、付加したタグによりIAMポリシーのリソース単位でのアクセス制御にタグを利用することができます。

Amazon Forecast でリソースのタグ付け機能のサポートを開始

本記事では、リソースに付加できるタグの仕様や実際にタグを操作する方法について解説します。

リソースタグの仕様

リソースタグの仕様は以下の通りです。

  • 文字数上限
    • キー:最大128文字
    • 値:最大256文字
  • 文字種
    • Unicode文字、数字、空白、または次の記号のいずれかが使用できます _ . : / = + - .
    • タグのキーと値は大文字と小文字が区別されます。
  • その他の制限
    • 関連付けられているリソースごとに各タグキーは一意である必要があります。
    • 1つのタグキーに対するタグの値は1つだけです。
    • aws:AWS:は予約語の為、キーのプレフィックスとして使用することはできません。
    • タグのみに基づいてリソースを更新または削除することはできません。使用する操作に応じて、Amazonリソースネーム(ARN)またはリソースIDも指定する必要があります。
    • タグを公開リソースまたは共有リソースに関連付けることができます。ただし、タグはAWSアカウントでのみ使用でき、リソースを共有する他のアカウントでは使用できません。
    • タグは対象のAWSアカウントの指定されたAWSリージョンにあるリソースに対してのみ使用できます。

リソースへのタグの追加

Forecastのリソースに対するタグの操作(追加、表示、更新、削除)は、マネジメントコンソール、AWS CLI、AWS SDKから実行することができます。
以下、それぞれの方法でタグをリソースに追加する手順を解説していきます。

マネジメントコンソールの場合

アップデートにより、下図のように各リソースの作成画面にタグの設定が追加されています。下図はデータセットグループの作成画面ですが、その他データセットや予測子の作成画面も同様です。

また、既に作成済みのリソースに対して、タグの追加や削除を行うことができます。
各リソース画面のTagsセクションにあるManage tagsボタンをクリックします。

タグの編集画面が開くので、ここでタグの追加や削除を実施します。

AWS CLI

実行環境

  • aws-cli:2.0.34
  • Python:3.7.4
  • Darwin:19.6.0
  • botocore:2.0.0dev38

コマンドサンプル

リソース作成時にタグ付けする場合は--tags={key=value}オプションを付加して実行します。
下記はデータセット作成時にタグ付けする一例です。

aws forecast create-dataset --dataset-name=myDataSet --dataset-type=RELATED_TIME_SERIES --domain=RETAIL --data-frequency=D --schema=file://schema.json --tags=Key=Environment,Value=Test

既存のリソースにタグ付けする場合はtag-resourceコマンドを使用します。
対象となるリソースのARNと付加するタグのKeyとValueを指定します。

aws forecast tag-resource --resource-arn resource-arn --tags=Key=Environment,Value=Test

リソースからタグを削除する場合はuntag-resourceコマンドを使用します。 対象となるリソースのARNと削除するタグのKeyを指定します。

aws forecast untag-resource --resource-arn resource-arn --tag-keys=Environment

AWS SDK (Python)

実行環境

  • python:3.7.6
  • boto3:1.13.17

コードサンプル

boto3の記法に沿って記述するだけで、パラメータはCLIと変わりません。

リソース作成時にタグ付けする場合はcreate_datasetに対してTagsを指定します。

import boto3

client = boto3.client('forecast')

response = client.create_dataset(
    DatasetName='myDataSet',
    Domain='CUSTOM',
    DatasetType='RELATED_TIME_SERIES',
    DataFrequency='D',
    Schema={
        'Attributes': [
          {
            'AttributeName': 'item_id',
            'AttributeType': 'string'
          },
          {
            'AttributeName': 'timestamp',
            'AttributeType': 'timestamp'
          }
        ]
    },
    Tags=[
        {
            'Key': 'Environment',
            'Value': 'Test'
        },
    ]
)
print(response['DatasetArn'])

既存のリソースにタグ付けする場合はtag_resourceに対してResourceArnTagsを指定します。

import boto3

client = boto3.client('forecast')

response = client.tag_resource(
    ResourceArn='resource-arn',
    Tags=[
        {
            'Key': 'Environment',
            'Value': 'Test'
        },
    ]
)

リソースのタグを削除する場合はuntag_resourceに対してResourceArnと'TagKeys'を指定します。

import boto3

client = boto3.client('forecast')

response = client.untag_resource(
    ResourceArn='resource-arn',
    TagKeys=[
        'Environment'
    ]
)

まとめ

Amazon Forecastのアップデートで可能になったリソースに対するタグ付けについて一通り確認しました。
Forecast以外のサービスでのタグ付けと同様に、アクセス制御やコスト管理などにタグ付け戦略を適用できるので、実運用時の利便性が向上していると言えそうです。