Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

Amazon ECS リソースのタグ付け

Amazon ECS タスク、サービス、タスク定義、クラスター、およびコンテナインスタンスを管理しやすいように、タグという形式で独自のメタデータをオプションで各リソースに割り当てることができます。ここでは、タグとその作成方法について説明します。

重要

この機能を使用するには、新形式の Amazon リソースネーム (ARN) とリソース識別子 (ID) をオプトインする必要があります。詳細については、「Amazon リソースネーム (ARN) と ID」を参照してください。

タグの基本

タグとは、AWS リソースに付けるラベルです。タグはそれぞれ、1 つのキーとオプションの 1 つので構成されており、どちらもお客様側が定義します。

タグを使用すると、AWS リソースを用途、所有者、環境などのさまざまな方法で分類できます。同じ型のリソースが多い場合に役立ちます — 割り当てたタグに基づいて特定のリソースをすばやく識別できます。たとえば、アカウントの Amazon ECS コンテナインスタンスに一連のタグを定義して、各コンテナインスタンスの所有者やスタックレベルを追跡しやすくすることができます。

ニーズを満たす一連のタグキーをリソースタイプごとに考案されることをお勧めします。一貫性のあるタグキーセットを使用することで、リソースの管理が容易になります。追加したタグに基づいてリソースを検索およびフィルタリングできます。

タグは Amazon ECS にとっては何の意味もなく、文字列としてだけ解釈されます。また、タグは自動的にリソースに割り当てられます。タグのキーと値は編集でき、タグはリソースからいつでも削除できます。タグの値を空の文字列に設定することはできますが、タグの値を null に設定することはできません。特定のリソースについて既存のタグと同じキーを持つタグを追加した場合、古い値は新しい値によって上書きされます。リソースを削除すると、リソースのタグも削除されます。

AWS マネジメントコンソール、AWS CLI、および Amazon ECS API を使用してタグを操作できます。

AWS Identity and Access Management (IAM) を使用している場合は、AWS アカウント内のどのユーザーがタグを作成、編集、削除するアクセス許可を持つかを制御できます。

リソースにタグを付ける

Amazon ECS の新規または既存のタスク、サービス、タスク定義、およびクラスターにタグ付けできます。

Amazon ECS コンソールを使用している場合、新規リソースには作成時にタグを適用でき、既存のリソースには関連するリソースページの [Tags (タグ)] タブを使用していつでもタグを適用できます。タスク定義からタスクにタグをコピーするタスクを実行するとき、またはサービスあるいはタスク定義からサービス内のタスクにタグをコピーするサービスを作成するとき、[Propagate tags from (タグの伝播元)] オプションが使用できます。

Amazon ECS API、AWS CLI、または AWS SDK を使用している場合、関連する API アクションの tags パラメータを使用して新規リソースにタグを適用でき、TagResource API アクションを使用して既存のリソースにタグを適用できます。詳細については、「TagResource」を参照してください。タスク定義からタスクにタグをコピーするタスクを実行するとき、またはサービスあるいはタスク定義からサービス内のタスクにタグをコピーするサービスを作成するとき、[propagateTags] パラメータが使用できます。詳細については、「RunTask」および「CreateService」を参照してください。

さらに、リソース作成アクションによっては、リソースの作成時にリソースのタグを指定できます。リソースの作成時にタグを適用できない場合は、リソース作成プロセスがロールバックされます。これにより、リソースがタグ付きで作成されるか、まったく作成されないようになるため、タグ付けされていないリソースが存在することがなくなります。作成時にリソースにタグ付けすることで、リソース作成後にカスタムタグ付けスクリプトを実行する必要がなくなります。

次の表は、タグ付け可能な Amazon ECS リソースおよび作成時にタグ付け可能なリソースについて説明しています。

Amazon ECS リソースでのタグ付けのサポート

リソース タグをサポート タグの伝播をサポート 作成時のタグ付けをサポート (Amazon ECS API、AWS CLI、AWS SDK)

Amazon ECS タスク

はい

はい、タスク定義からサポートします。

はい

Amazon ECS サービス

はい

はい、タスク定義またはサービス内のタスクへのサービスのいずれかからサポートします。

はい

Amazon ECS タスク定義

はい

いいえ

はい

Amazon ECS クラスター

はい

いいえ

はい

Amazon ECS コンテナインスタンス

はい

はい、Amazon EC2 インスタンスからサポートします。詳細については、「コンテナインスタンスへのタグの追加」を参照してください。

はい

タグの制限

タグには以下のような基本制限があります。

  • リソースあたりのタグの最大数は 50 です。

  • タグキーは、リソースごとにそれぞれ一意である必要があります。また、各タグキーに設定できる値は 1 つのみです。

  • キーの最大長 – 128 文字 (Unicode) (UTF-8)

  • 値の最大長 – 256 文字 (Unicode) (UTF-8)

  • 複数のサービス間およびリソース間でタグ付けスキーマを使用する場合、他のサービスでも許可される文字に制限が適用されることがあるのでご注意ください。一般的に使用が許可される文字は、UTF-8 で表現できる文字、数字、スペース、および +、-、=、.、_、:、/、@。

  • タグのキーと値は大文字と小文字が区別されます。

  • aws:AWS:、またはその大文字または小文字の組み合わせを、キーまたは値のプレフィックスとして使用しないでください。これらの文字列は AWS による使用のために予約されています。このプレフィックスが含まれるタグのキーや値を編集したり削除することはできません。このプレフィックスを持つタグは、リソースあたりのタグ数の制限時には計算されません。

請求用のリソースにタグを付ける

Amazon ECS マネージドタグを有効にすると、Amazon ECS は新たに起動されたすべてのタスクに、クラスター名を使用して自動的にタグ付けします。サービスに属するタスクにも、サービス名を使用してタグ付けされます。これらのマネージドタグは、コスト配分を有効にした後にコストと使用状況レポートでコスト配分を確認するときに便利です。詳細については、「Amazon ECS 使用状況レポート」を参照してください。

リソースを組み合わせたコストを確認するには、同じタグキー値を持つリソースに基づいて、請求情報を整理します。たとえば、複数のリソースに特定のアプリケーション名のタグを付け、請求情報を整理することで、複数のサービスを利用しているアプリケーションの合計コストを確認することができます。タグによるコスト配分レポートの設定の詳細については、AWS Billing and Cost Management ユーザーガイド の「毎月のコスト配分レポート」を参照してください。

重要

この機能を使用するには、新形式の Amazon リソースネーム (ARN) とリソース識別子 (ID) をオプトインする必要があります。詳細については、「Amazon リソースネーム (ARN) と ID」を参照してください。

注記

レポートを有効にすると、約 24 時間後に、今月のデータを表示できるようになります。

コンソールでのタグの処理

Amazon ECS コンソールを使用して、新規または既存のタスク、サービス、タスク定義、クラスター、またはコンテナインスタンスに関連付けられているタグを管理できます。

Amazon ECS コンソールでリソース固有のページを選択すると、リソースリストが表示されます。たとえば、ナビゲーションペインで [Clusters (クラスター)] を選択すると、Amazon ECS クラスターのリストがコンソールに表示されます。そのリスト (特定のクラスターなど) からリソースを 1 つ選択すると、そのリソースでタグがサポートされている場合は、[Tags (タグ)] タブでタグを表示および管理できます。

個々のリソースでの起動時のタグの追加

以下のリソースでは、リソースの作成時にタグを指定できます。

タスク コンソール

1 つまたは複数のタスクを実行する

タスクの実行

サービスを作成する

サービスの作成

タスク定義を登録する

タスク定義の作成

クラスターを作成する

クラスターの作成

1 つまたは複数のコンテナインスタンスを実行する

Amazon ECS コンテナインスタンスの起動

個々のリソースでのタグの追加と削除

Amazon ECS では、クラスター、サービス、およびタスク定義に関連付けられているタグを、そのリソースのページから直接追加または削除できます。コンテナインスタンスのタグ付けの詳細については、「コンテナインスタンスへのタグの追加」を参照してください。

個々のリソースにタグを追加するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインでリソースタイプ (例: [Clusters (クラスター)]) を選択します。

  4. リソースリストからリソースを選択して [Tags (タグ)]、[Edit (編集)] の順に選択します。

  5. [Edit Tags (タグの編集)] ダイアログボックスで、各タグのキーと値を指定してから [Save (保存)] を選択します。

個々のリソースからタグを削除するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインでリソースタイプ (例: [Clusters (クラスター)]) を選択します。

  4. リソースリストからリソースを選択して [Tags (タグ)]、[Edit (編集)] の順に選択します。

  5. [Edit Tags (タグの編集)] ページで、削除する各タグの [Delete (削除)] アイコンを選択してから [Save (保存)] を選択します。

コンテナインスタンスへのタグの追加

以下のいずれかの方法で、コンテナインスタンスにタグを関連付けることができます。

  • 方法 1 – Amazon EC2 API、CLI、またはコンソールを使用してコンテナインスタンスを作成するときに、コンテナエージェントの設定パラメータ ECS_CONTAINER_INSTANCE_TAGS を使用してインスタンスにユーザーデータを渡すことで、タグを指定します。これにより、Amazon ECS のコンテナインスタンスにのみ関連付けられているタグが作成され、Amazon EC2 API では一覧表示できなくなります。詳細については、「Amazon EC2 ユーザーデータを使用してコンテナインスタンスをブートストラップする」を参照してください。

    重要

    Amazon EC2 Auto Scaling グループを使用してコンテナインスタンスを起動する場合は、ECS_CONTAINER_INSTANCE_TAGS エージェント設定パラメータを使用してタグを追加する必要があります。これは、Auto Scaling グループを使用して起動されている Amazon EC2 インスタンスにタグが追加される方法が原因です。

    コンテナインスタンスにタグを関連付けるユーザーデータスクリプトの例を以下に示しています。

    #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"} EOF
  • 方法 2 – Amazon EC2 API、CLI、またはコンソールを使用してコンテナインスタンスを作成するときに、TagSpecification.N パラメータを使用してタグを指定し、コンテナエージェント設定パラメータ ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM を使用してインスタンスにユーザーデータを渡します。それにより、タグが Amazon EC2 から Amazon ECS に伝達されます。

    以下に、Amazon EC2 インスタンスに関連付けられたタグを伝達し、さらに MyCluster という名前のクラスターでインスタンスを登録するユーザーデータスクリプトの例を示します。

    #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance EOF

    コンテナインスタンスのタグが Amazon EC2 から Amazon ECS に伝達されることを許可するには、以下のアクセス許可を Amazon ECS コンテナインスタンスの IAM ロールにインラインポリシーとして手動で追加します。詳細については、「IAM ポリシーの追加と削除」を参照してください。

    • ec2:DescribeTags

    アクセス許可を追加するインラインポリシーの例を以下に示します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeTags" ], "Resource": "*" } ] }

CLI または API でのタグの操作

リソースのタグの追加、更新、リスト表示、および削除には、次を使用します。対応するドキュメントに例が記載されています。

Amazon ECS リソースでのタグ付けのサポート

タスク AWS CLI API アクション

1 つ以上のタグを追加、または上書きします。

tag-resource

TagResource

1 つ以上のタグを削除します。

untag-resource

UntagResource

以下の例では、AWS CLI を使用して、リソースに対してタグ付けまたはタグ削除する方法を示しています。

例 1: 既存のクラスターへのタグ付け

次のコマンドは既存のクラスターにタグ付けします。

aws ecs tag-resource --resource-arn resource_ARN --tags key=stack,value=dev

例 2: 既存のクラスターでのタグ削除

次のコマンドは既存のクラスターからタグを削除します。

aws ecs untag-resource --resource-arn resource_ARN --tag-keys tag_key

例 3: リソースのタグのリスト取得

次のコマンドは、既存のリソースに関連付けられているタグのリストを取得します。

aws ecs list-tags-for-resource --resource-arn resource_ARN

一部のリソース作成アクションでは、リソースの作成時にタグを指定できます。以下のアクションでは、作成時のタグ付けがサポートされます。

タスク AWS CLI AWS Tools for Windows PowerShell API アクション

1 つまたは複数のタスクを実行する

run-task

Start-ECSTask

RunTask

サービスを作成する

create-service

New-ECSService

CreateService

タスク定義を登録する

register-task-definition

Register-ECSTaskDefinition

RegisterTaskDefinition

クラスターを作成する

create-cluster

New-ECSCluster

CreateCluster

1 つまたは複数のコンテナインスタンスを実行する

run-instances

New-EC2Instance

RunInstances

次の例は、リソースの作成時にタグを適用する方法を示しています。

例 1: クラスターを作成してタグを適用する

次のコマンドは、devcluster という名前のクラスターを作成し、キーが team で値が devs のタグを追加します。

aws ecs create-cluster --cluster-name devcluster --tags key=team,value=devs

例 2: サービスを作成してタグを適用する

次のコマンドは、application という名前のサービスを作成し、キーが stack で値が dev のタグを追加します。

aws ecs create-service --service-name application --task-definition task-def-app --tags key=stack,value=dev

例 3: タグを使用してサービスを作成し、サービス内のタスクにタグを伝播する

--propagateTags パラメータを使用すると、タスク定義またはサービスからサービス内のタスクにタグをコピーできます。次のコマンドは、タグ付きのサービスを作成し、そのタグをそのサービス内のタスクに伝達します。

aws ecs create-service --service-name application --task-definition task-def-app --tags key=stack,value=dev --propagateTags Service