⏳
ECSサービスのタグをECSタスクに伝播させる
はじめに
今回はECSタスクにタグを設定してみます。
タグの伝播(tag propagation
)という機能があり、ECSサービスかタスク定義のタグをタスクに自動で適用させることが可能となるため、それを試してみます。
なぜ設定する必要がある?
例えばECSのコストをタグで管理する場合、ECSタスク
にタグをつける必要があります。
タスクはオートスケール・インで削除・生成が発生するため、手動でタスクにタグをつけるのは望ましくありません。
そこでタグの伝播を有効にすると自動でタスクにコストタグが付与されるため、
正確にタグのコストを出せるようになります。
検証
事前確認
- ECSリソース群準備済み
- ECSサービスに伝播したいタグを設定済み
設定の確認
awscliとjqで確認します。
デフォルトでは有効になっていないため、NONE
となっていることを確認します。
$ aws ecs describe-services \
> --services <service_name>\
> --cluster <cluster_name> | jq ".services[].propagateTags"
"NONE"
設定の適用
こちらもawscliで試します。
Serviceのタグがタスクに伝播されるように設定してみます。
aws ecs update-service \
--service <service_name> \
--cluster <cluster_name> \
--propagate-tags "SERVICE"
また既存のタスクには適用されないため、再デプロイする必要があります
aws ecs update-service \
--service <service_name> \
--cluster <cluster_name> \
--force-new-deployment
タグがついていることを確認
タスクにタグが付与されていたらOKです。
Terraform化
せっかくなのでTerraform化します。
aws_ecs_service
でpropagate_tags
を設定すればよいです。
resource "aws_ecs_service" "service" {
// 略
propagate_tags = "SERVICE"
tags = {
"tag_propagate" = "True"
}
}
おわりに
無事に設定出来ました。
ECSタスクの正確なコスト集計にご利用下さい。
参考
Discussion