ServiceLinked Roleというものがあり、AWSが自動的に作成し、作成したリソースと暗黙的にアタッチされるものがある。
このServiceLinked Roleを作成する前に、ECSクラスタを作成しようとすると、失敗するというわけ。
AWSコンソールから作成する場合は特に考えなくて良いのだけど、Terraformオンリーで操作しようとすると、若干のタイムラグがあるのか、serviceLikedRole作成前に、クラスタ作成APIが呼ばれて、失敗してしまう。ということだと思われる。
Terraformでコンソールでの操作を挟まずに1発で成功させるには、servicelinkedRoleをTerraformで作成するようにすると良い。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
resource "aws_ecs_cluster" "cluster" { name = "ecs-cluster" setting { name = "containerInsights" value = "enabled" } depends_on = [aws_iam_service_linked_role.ecs] } resource "aws_iam_service_linked_role" "ecs" { aws_service_name = "ecs.amazonaws.com" } |
ちなみに、
・AWSコンソールで一度ECSクラスタを作り、削除する
・Terraform Apply実行して、一度失敗させる
ということをしても、自動的にServiceLikedRoleは作られるので、こだわる必要がなければこれらで対応するでもOK