[小ネタ]ECSタスクのタグ付けはタグの伝播元を設定しよう

タグの伝播元はサービスまたはタスク定義を指定できます。
2023.05.17

困っていた

こんにちは!AWS事業本部のおつまみです。

皆さん、ECSタスクに自動でタグ付けをしたいと思ったことはありますか?私はあります。

起動しているECSタスク毎の費用を管理するために、コスト配分タグを設定しようと思いました。 そこで、ECSタスク定義にはこのようにタグを付与しました。

しかし、ECSタスクを起動しても、タグは付与されていないようでした。

こちらの問題について解決方法をご紹介します!

結論

  • ECSタスク定義またはサービスについてる同じタグをタスクに伝播するためには、「タグの伝播元」を設定する必要があります。 
  • デフォルトでは「伝播しない」になっています。

変更方法

マネジメントコンソール経由

  1. Amazon ECS コンソールを開き、[タスク定義]を選択します。

  2. 対象のタスク定義を選択し、[デプロイ]→[タスクの実行]または[サービスの作成]選択します。今回はタスク定義からタグを伝播させるため、[タスクの実行]を選択します。

  3. [タグの伝播元]で、デフォルトは [伝播しない]になっています。そのため[サービス]または [タスク定義]を選択します。

さっそく起動したタスクを確認してみましょう。

無事タグが付与されていることを確認できました!

AWS CLI経由

タスクの実行時またはサービスの作成時は、RunTask および CreateService API を使用します。 タグ伝播には、--propagate-tagsパラメータを指定します。

タスク定義からタスクにタグを伝播するかどうかを指定します。値が指定されていない場合、タグは伝播されません。タグはタスクの作成時にのみタスクに伝播できます。タスクの作成後にタスクにタグを追加するには、TagResource API アクションを使用します。

可能な値:

  • TASK_DEFINITION
  • SERVICE
  • NONE

以下のコマンドを実行します。

aws ecs run-task \
--cluster "${CLUSTER_NAME}" \
--task-definition "${TASK_DEF_ARN}" \
--network-configuration "${NETWORK_CONFIG}" \
--launch-type FARGATE \
--propagate-tags TASK_DEFINITION \

こちらも起動したタスクを確認してみましょう。

無事タグが付与されていることを確認できました!

最後に

今回はECS タスクのタグ付けをタスク定義・サービスから伝播する方法をご紹介しました。

最後までお読みいただきありがとうございました!   どなたかのお役に立てれば幸いです。

以上、おつまみ(@AWS11077)でした!

参考

Amazon ECS リソースのタグ付け - Amazon ECS

Amazon ECS でのタスクのタグ付けに関連する問題をトラブルシューティングする | AWS re:Post