ServiceLinked Roleというものがあり、AWSが自動的に作成し、作成したリソースと暗黙的にアタッチされるものがある。
このServiceLinked Roleを作成する前に、ECSクラスタを作成しようとすると、失敗するというわけ。
AWSコンソールから作成する場合は特に考えなくて良いのだけど、Terraformオンリーで操作しようとすると、若干のタイムラグがあるのか、serviceLikedRole作成前に、クラスタ作成APIが呼ばれて、失敗してしまう。ということだと思われる。
Terraformでコンソールでの操作を挟まずに1発で成功させるには、servicelinkedRoleをTerraformで作成するようにすると良い。
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
