Amazon Elastic Container Service (Amazon ECS) のタスクタグの問題をトラブルシューティングしようと考えています。
解決策
タスクタグを Amazon ECS で設定すると、次の問題が発生する可能性があります。
- タグがサービスやタスク定義からタスクに伝達されない。
- 古い ARN/リソース ID 形式をタグに使用している。
- AWS Identity and Access Management (IAM) アクセス許可やタグ制限がないため、タグを ECS リソースに追加できない。
- ECS タグが AWS Billing ダッシュボードに表示されない。.
これらの問題をトラブルシューティングするには、次のタスクを実行します。
PropagateTags パラメーターを使用して、サービスかタスク定義からタスクに伝達する
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、必ずAWS CLI の最新バージョンを使用してください。
**PropagateTags ** パラメーターは、デフォルトではオンになっていません。タグをタスク定義またはサービスからタスクにコピーするには、パラメーターをオンにします。タグは、タスクの実行、サービスの作成、サービスの更新の際にコピーできます。
PropagateTags が特定のサービスでオンになっているかどうかを確認するには、次のコマンドを AWS CLI で実行します。
aws ecs describe-services --services <servicename> --cluster <clustername> --region <region> --query 'services[*].propagateTags' --output text
注: servicename、clustername、region は、自分の値に置き換えてください。
AWS CLI を使用して、タグがサービス定義かタスク定義から伝達されるよう設定するには、run-task コマンド、create-service コマンド、update-service コマンドを実行します。
コンソールを使用してタグ伝達をオンにするには、次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ECS リソースの AWS リージョンを選択します。
- ナビゲーションペインで、[タスク定義] を選択します。
- タスク定義をリソースリストから選択し、[アクション] を選択します。
- [サービスの作成] または [タスクの実行] を選択します。
- [タスクタグ設定] で、[サービス] または [タスク定義] を選択します。
注: デフォルトオプションは、Do not propagate です。
AWS CLI を使用して、既存のサービスのタグ伝達を更新するには、次のコマンドを実行します。
aws ecs update-service --cluster <clustername> --service <servicename> --propagate-tags <SERVICE/TASK_DEFINITION> --force-new-deployment
AWS CloudFormation を使用して、タグを ECS に設定するには、AWS::ECS::Service リソースを宣言する必要があります。AWS::ECS::Service を宣言するには、EnableECSManagedTags プロパティと PropagateTags プロパティに SERVICE 値または TASK_DEFINITION 値を使用します。
注:
- スタックを CloudFormation で作成した後に ECS プロパティ関連のサービスタグを使用するには、スタックとリソース置換を更新する必要があります。この更新により、サービスが CloudFormation 経由で削除されて再作成されます。
- スケジュール済みタスクについては、Amazon ECS RunTask API から直接起動されたタスクと同じ設定にアクセスできます。
新しい ARN 形式を使用する
Amazon ECS リソースにタグ付けするには、新しい ARN/ID 形式を使用する必要があります。ECS デプロイを新しい ARN/リソース ID 形式に移行するには、「Amazon ECS デプロイの新しい ARN/リソース ID 形式への移行」を参照してください。
注: 既存のリソースでは、新しい ARN 形式をリソースが再作成されるまで受け付けません。
必要とされる権限が IAM エンティティにあることを確認し、タグ制限を確認する
タグを ECS サービスに追加できない場合は、次の手順を実行します。
- AWS CloudTrail イベントで TagResourceイベントを確認します。
- イベントを確認して、次のいずれかのエラーメッセージがないか確認します。
「AccessDenied」
「The tags cannot be updated at this time.Wait a few minutes and try again」
前述のエラーのいずれかがあった場合、その IAM エンティティには ecs:TagResource 権限がありません。
- IAM コンソールまたは AWS CLI のいずれかを使用して、ecs:TagResource アクセス権限を IAM エンティティに追加します。
- タグを ECS クラスターに再度追加してみます。
- ECS タグがタグ制限の範囲内にあることを確認します。
AWS Billing and Cost Management の問題がないか確認する
必要とされるタグが ECS タスクレベルにあることを確認するため、次のように list-tags-for-resource コマンドを実行します。
aws ecs list-tags-for-resource --resource-arn <value>
注: 値は、自分の ARN に置き換えてください。
コンソールを使用して、必要とされるタグが ECS タスクにあることを確認するには、次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ECS リソースのリージョンを選択します。
- ナビゲーションペインで、リソースタイプ (クラスター など) を選択します。
- リソースをリソースリストから選択し、**[タグ] **を選択します。タグが存在する場合は、タグが一覧表示されます。
マネージドタグを探している場合は、[ECS マネージドタグ] をオンにします。**[ECS マネージドタグ] **がオンになっていることを確認するには、次のコマンドを実行します。
aws ecs describe-services --services <servicename> --cluster <clustername> --region <region> --query 'services[*].enableECSManagedTags' --output text
注: servicename、clustername、region は、自分の値に置き換えてください。
コマンドの出力には、enableECSManagedTags 値が含まれています。
コンソールを使用して **[ECS マネージドタグ]**をオンにするには、次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ECS リソースのリージョンを選択します。
- ナビゲーションペインで、[タスク定義] を選択します。
- タスク定義をリソースリストから選択し、[アクション] を選択します。
- [サービスの作成] または [タスクの実行] を選択します。
- [タスクタグ設定] で、[ECS マネージドタグの有効化] を選択します。
AWS CLI を使用して **[ECS マネージドタグ]**をオンにするには、次のように update-service コマンドを実行します。
aws ecs update-service --cluster <clustername> --service <servicename> --enable-ecs-managed-tags --force-new-deployment
請求に使用するタグがリストされていたとしても、そのタグは AWS Cost Explorer には表示されません。この問題を解決するには、Billing and Cost Management コンソールでコスト配分タグをアクティブ化します。
注: タグがアクティブ化するまで最大 24 時間かかることがあります。
関連情報
Amazon ECS トラブルシューティング
Amazon ECS リソースのタグ付け