Amazon ECS タスクのタグ付けに関する問題をトラブルシューティングする方法を教えてください。
Amazon Elastic Container Service (Amazon ECS) でのタスクタグの問題をトラブルシューティングしたいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
タスクタグを Amazon ECS で設定する際に、次の問題が発生する可能性があります。
- タグがサービスやタスク定義からタスクに伝播されない。
- タグの ARN とリソース ID の形式が古くなっている。
- AWS Identity and Access Management (IAM) アクセス許可またはタグ制限が欠けているため、Amazon ECS リソースを新規作成したり、タグをリソースに追加したりすることができない。
- AWS Billing and Cost Management コンソールの [請求] ページに Amazon ECS タグが表示されない。
PropagateTags パラメータを使用してサービスまたはタスク定義からタスクに伝播する
PropagateTags パラメータは、デフォルトでは有効になっていません。タスク定義またはサービスからタスクにタグをコピーするには、PropagateTags を有効にします。タグは、タスクの実行、サービスの作成、サービスの更新の際にコピーできます。
注: 次のコマンドで、実際のものでそれぞれ servicename をサービス名に、clustername をクラスター名に、region AWS リージョンに置き換えます。さらに、taskdefinitionname を実際のタスク定義名に、taskdefinitionversion をタスク定義のバージョンに置き換えます。
特定のサービスで PropagateTags が有効になっているかどうかを確認するには、次の describe-services コマンドを実行します。
aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].propagateTags' --output text
新しいスタンドアロンタスクでタグの伝播を有効にするには、次の run-task コマンドを実行します。
aws ecs run-task --cluster clustername --task-definition taskdefinitionname:taskdefinitionversion --launch-type FARGATE/EC2 --propagate-tags TASK_DEFINITION/SERVICE
新しいサービスでタグの伝播を有効にするには、次の create-service コマンドを実行します。
aws ecs create-service --cluster clustername --service-name servicename --task-definition taskdefinitionname:taskdefinitionversion --desired-count 2 --launch-type FARGATE --platform-version LATEST --network-configuration "awsvpcConfiguration={subnets=[subnet-abcdef123],securityGroups=[sg-pqrst5678]}" --propagateTags TASK_DEFINITION/SERVICE
既存のサービスでタグの伝播を有効にするには、次の update-service コマンドを実行します。
aws ecs update-service --cluster clustername --service servicename --propagate-tags SERVICE/TASK_DEFINITION --force-new-deployment
Amazon ECS コンソールを使用してタグの伝播を有効にすることもできます。
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- Amazon ECS リソースのリージョンを選択します。
- ナビゲーションペインで [タスク定義] を選択します。
- タスク定義をリソースリストから選択し、[アクション] を選択します。
- [サービスの作成] または [タスクの実行] を選択します。
- [タスクのタグ付け設定] で [サービス] または [タスク定義] を選択します。
注: デフォルトのオプションは、[伝播しない] です。
AWS CloudFormation を使用して Amazon ECS のタグを構成するには、AWS::ECS::Service リソースを宣言する必要があります。AWS::ECS::Service を宣言するには、EnableECSManagedTags プロパティと PropagateTags プロパティに SERVICE 値または TASK_DEFINITION 値を使用します。
注:
- スタックを CloudFormation で作成した後に Amazon ECS プロパティに関連するサービスタグを使用するには、スタックとリソース置換を更新する必要があります。詳細については、「スタックリソースの更新動作について」を参照してください。
- スケジュール済みタスクについては、Amazon ECS RunTask API から直接起動するタスクと同じ設定にアクセスできます。
正しい ARN 形式を使用する
Amazon ECS リソースにタグ付けするには、新しい ARN と ID 形式を使用する必要があります。Amazon ECS デプロイを新しい形式に移行するには、「Amazon ECS デプロイを新しい ARN とリソース ID 形式に移行する」を参照してください。
注: 既存のリソースは、リソースを再作成した後にのみ新しい ARN 形式を受け付けます。
必要なアクセス許可が IAM エンティティにあることおよび、タグの制限を確認する
すべての AWS アカウントはタグ付け認証を使用します。Amazon ECS リソースの作成時にタグを付けるには、IAM プリンシパルに ecs:TagResource アクセス許可が必要です。次の Amazon ECS API にもこのアクセス許可が必要です。
- CreateCapacityProvider
- CreateCluster
- CreateService
- CreateTaskSet
- RegisterContainerInstance
- RegisterTaskDefinition
- RunTask
- StartTask
Amazon ECS サービスにタグを追加したり、リソースを作成したりできない場合は、次の手順を実行してこの問題をトラブルシューティングします。
- AWS CloudTrail イベントで TagResourceイベントを確認します。
- イベントをレビューし、次のいずれかのエラーメッセージがないか確認します。
AccessDenied
または、
現在タグを更新できません。数分待ってから再試行してください
上記のいずれかのエラーが発生した場合、IAM エンティティに ecs:TagResource アクセス許可が欠けています。 - IAM コンソールまたは AWS CLI を使用し、ecs:TagResource アクセス許可を IAM エンティティに追加します。
- リソースを再作成するか、Amazon ECS クラスターにタグを再度追加します。
- Amazon ECS タグがタグの制限に準拠していることを確認します。
Billing and Cost Management で問題が発生しているかどうかを確認する
Amazon ECS タスクをタグで絞り込んでもコストを確認できない場合は、必要なタグが Amazon ECS タスクにあることを確認してください。次の list-tags-for-resource コマンドを実行します。
aws ecs list-tags-for-resource --resource-arn value
注: value は、タスクの ARN に置き換えます。
Amazon ECS コンソールを使用して Amazon ECS タスクのタグを確認するには、次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ECS リソースのリージョンを選択します。
- ナビゲーションペインで、リソースタイプを選択します ([クラスター] など)。
- リソースを選択し、[タグ] を選択すると、そのリソースに存在するすべてのタグが表示されます。
マネージドタグを確認するには、Amazon ECS マネージドタグを有効にする必要があります。Amazon ECS マネージドタグが有効になっているかどうかを確認するには、次の describe-services コマンドを実行します。
aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].enableECSManagedTags' --output text
注: 実際のものでそれぞれ servicename をサービス名に、clustername をクラスター名に、region をリージョンに置き換えます。
コマンドの出力で、enableECSManagedTags が true に設定されているかどうかを確認します。
コンソールを使用して Amazon ECS マネージドタグを有効にするには、次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ECS リソースのリージョンを選択します。
- ナビゲーションペインで [タスク定義] を選択します。
- タスク定義をリソースリストから選択し、[アクション] を選択します。
- [サービスの作成] または [タスクの実行] を選択します。
- [タスクのタグ付け設定] で [ECS マネージドタグを有効にする] を選択します。
AWS CLI を使用して Amazon ECS マネージドタグを有効にするには、update-service コマンドを実行します。
aws ecs update-service --cluster clustername --service servicename --enable-ecs-managed-tags --force-new-deployment
注: お使いのものでそれぞれ、clustername をクラスター名に、servicename をサービス名に置き換えます。
AWS Cost Explorer では表示されていないタグであっても、請求用に使用するタグがリストに含まれる場合があります。この問題を解決するには、Billing and Cost Management コンソールでコスト配分タグをアクティブ化します。
注: タグがアクティブ化するまで最大 24 時間かかることがあります。
関連情報
- トピック
- Containers
- 言語
- 日本語
