コスト追跡とコンプライアンス用途で Amazon ECS リソースにタグを付ける方法を教えてください。
Amazon Elastic Container Service (Amazon ECS) のリソースにタグを付けて、コストとコンプライアンスを追跡したいです。
簡単な説明
タグを使用して Amazon ECS リソースにカスタムメタデータを割り当てます。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
アカウントレベルでリソースのタグ付け認可を有効にする
クラスターまたはサービスの作成時にタグを使用、作成するには、アクセス許可 ecs:TagResource が必要です。ecsCreateCluster などの、リソースの作成に必要なアクションのアクセス許可も必要です。
AWS アカウントレベルでの、現在のタグ付け認可に関するステータスを確認するには、次の list-account-settings AWS CLI コマンドを実行します。
aws ecs list-account-settings --effective-settings
コマンドの出力で、タグ付け認可が有効化済みかどうかを確認します。タグ付け認証を有効にしていない場合は、次の put-account-setting-default コマンドを実行して有効化します。
aws ecs put-account-setting-default --name tagResourceAuthorization --value on --region regionname
注: regionname は、お使いの AWS リージョンに置き換えます。
正しい ARN 形式を使用する
Amazon ECS リソースにタグ付けするには、新しい ARN と ID 形式を使用する必要があります。Amazon ECS デプロイを新しい ARN とリソース ID 形式に移行する必要がある場合があります。
必要なアクセス許可が IAM エンティティにあることを確認し、タグ制限を確認する
Amazon ECS サービスにタグを追加できない場合は、AWS Identity and Access Management (IAM) エンティティに必要なアクセス許可があることを確認してください。詳細については、「Amazon ECS タスクでの、タグ付けの問題をトラブルシューティングする方法を教えてください」の「IAM エンティティに必要なアクセス許可があることおよび、タグ制限を確認する」セクションを参照してください。
請求用に Amazon ECS マネージドタグを使用する
enableECSManagedTags パラメータを有効化する
Amazon ECS マネージドタグを使用すると、Amazon ECS は新しく起動したすべてのタスクにクラスター情報および、タスク定義またはサービスタグを自動的にタグ付けします。Amazon ECS により、タスクにアタッチされている Amazon Elastic Block Service (Amazon EBS) ボリュームもタグ付けされます。PropagateTags パラメータは、デフォルトでは有効になっていません。タグをタスク定義またはサービスからタスクにコピーするには、このパラメータを有効化します。
サービスの作成時に enableECSManagedTags パラメータを有効にするには、次の create-service コマンドを実行します。
aws ecs create-service \ --cluster clustername \ --service-name servicename \ --task-definition taskdefinitionname \ --desired-count 1 \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABCD],securityGroups=[sg-ABC],assignPublicIp=ENABLED}"
注: 実際のものでそれぞれ clustername をクラスター名に、servicename をサービス名に、taskdefinitionname をタスク定義名に置き換えます。ネットワーク設定を**--network-configuration** オプションに追加します。
タスクの実行時に enableECSManagedTags パラメータを有効化するには、次の run-task コマンドを実行します。
aws ecs run-task \ --cluster clustername \ --task-definition taskdefinitionname \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABC],securityGroups=[sg-ABC]}"
注: 実際のものでそれぞれ、clustername をクラスター名に、taskdefinitionname をタスク定義名に置き換えます。ネットワーク設定を**--network-configuration** オプションに追加します。
Amazon ECS マネージドタグを有効にする
Amazon ECS コンソールまたは AWS CLI を使用してマネージドタグを有効にします。
Amazon ECS コンソール
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ECS リソースのリージョンを選択します。
- ナビゲーションペインで [タスク定義] を選択します。
- タスク定義をリソースリストから選択し、[アクション] を選択します。
- [サービスの作成] または [タスクの実行] を選択します。
- [タスクのタグ付け設定] で [ECS マネージドタグを有効にする] を選択します。
注: タスク定義またはサービスからタスクにタグをコピーするには、[タグの伝播元] でリソースを選択します。デフォルトでは、PropagateTags パラメータは Do not propagate (伝播しない) に設定されています。
AWS CLI
次の update-service コマンドを実行します。
aws ecs update-service --cluster clustername --service servicename --enable-ecs-managed-tags --force-new-deployment
注: お使いのものでそれぞれ、servicename をサービス名に、clustername をクラスター名に置き換えます。
タグの伝播を設定する
タグの伝播はデフォルトでは無効になっています。特定のサービスで PropagateTags が有効かどうかを確認するには、次の describe-services コマンドを実行します。
aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].propagateTags' --output text
注: 実際のものでそれぞれ、servicename をサービス名に、clustername をクラスター名に、region をリージョンに置き換えます。
サービスの作成時にタグの伝播を追加するには、次の create-service コマンドを実行します。
aws ecs create-service \ --cluster clustername \ --service-name servicename \ --task-definition taskdefinitionname \ --desired-count 1 \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --propagate-tags TASK_DEFINITION-SERVICE \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABCD],securityGroups=[sg-ABC],assignPublicIp=ENABLED}"
注: 実際のものでそれぞれ clustername をクラスター名に、servicename をサービス名に、taskdefinitionname をタスク定義に置き換えます。さらに、FARGATE をお使いの起動タイプに、TASK_DEFINITION-SERVICE をタスクの伝播対象に応じて TASK_DEFINITION または SERVICE に置き換えます。ネットワーク設定を**--network-configuration** オプションに追加します。
タスクの実行時にタグの伝播を追加するには、次の run-task コマンドを実行します。
aws ecs run-task \ --cluster clustername \ --task-definition taskdefinitionname \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --propagate-tags TASK_DEFINITION-SERVICE \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABC],securityGroups=[sg-ABC]}"
注: 実際のものでそれぞれ、clustername をクラスター名に、taskdefinitionname をタスク定義に置き換えます。さらに、FARGATE をお使いの起動タイプに、TASK_DEFINITION-SERVICE をタスクの伝播対象に応じて TASK_DEFINITION または SERVICE に置き換えます。ネットワーク設定を**--network-configuration** オプションに追加します。
既存のサービスにタグの伝播を追加するには、次の update-service コマンドを実行します。
aws ecs update-service --cluster clustername --service servicename --propagate-tags servicetagdefinition --force-new-deployment
注: 実際のものでそれぞれ servicename をサービス名に、clustername をクラスター名に、servicetagdefinition をサービスまたはタスク定義名に置き換えます。
コスト配分タグを有効化し、請求レポートに表示されるようにする必要があります。
注: タグがアクティブ化するまで最大 24 時間かかることがあります。
関連情報
- トピック
- Containers
- 言語
- 日本語

関連するコンテンツ
質問済み 6年前
AWS公式更新しました 2年前