はじめに
Terraform AWS provider (terraform-provider-aws) の更新を日々行えていますでしょうか
Terraform AWS provider v4.0.0 時点で deprecated の定義が追加された "aws_ecs_cluster" の "capacity_providers" 等の定義を置き換えるために必要な情報をまとめました
Terraform AWS provider について
本記事では、 Terraform AWS provider の説明は省略します README や Docs を参照してください
Resource aws_ecs_cluster_capacity_providers
について
Resource aws_ecs_cluster_capacity_providers
は v3.74.0 で追加されました。
その後、 aws_ecs_cluster
の capacity_providers
や default_capacity_provider_strategy
を使用すると、意図しない依存関係が作られてしまい、リソースの削除などが実施出来ない等が明らかになり、 resource aws_ecs_cluster_capacity_providers
を使用するよう v4.0.0 で warning を出力する定義が追加されました
そのため、 v4.0.0 に更新した後、 terraform apply
等を実行すると以下のような warning が出力されるようになりました
╷
│ Warning: Argument is deprecated
│
│ with aws_ecs_cluster.resource_name,
│ on aws_ecs_cluster.tf line 1, in resource "aws_ecs_cluster" "resource_name":
│ 1: resource "aws_ecs_cluster" "resource_name" {
│
│ Use the aws_ecs_cluster_capacity_providers resource instead
│
解決方法について
CHANGELOG.md
にも記載されている通り、 aws_ecs_cluster_capacity_providers
を使うように修正する必要があります
resource/aws_ecs_cluster: The
capacity_providers
anddefault_capacity_provider_strategy
arguments have been deprecated. Use theaws_ecs_cluster_capacity_providers
resource instead. (#22783)
v3.74.0 以前では、 以下のように定義していました
resource "aws_ecs_cluster" "example" {
name = "example"
capacity_providers = [aws_ecs_capacity_provider.example.name]
default_capacity_provider_strategy {
base = 1
weight = 100
capacity_provider = aws_ecs_capacity_provider.example.name
}
}
resource "aws_ecs_capacity_provider" "example" {
name = "example"
auto_scaling_group_provider {
auto_scaling_group_arn = aws_autoscaling_group.example.arn
}
}
# aws_autoscaling_group の定義は省略...
しかし、非推奨となった今は、 aws_ecs_cluster_capacity_providers
を利用し以下のように定義する必要があります
resource "aws_ecs_cluster" "example" {
name = "example"
}
resource "aws_ecs_cluster_capacity_providers" "example" {
cluster_name = aws_ecs_cluster.example.name
capacity_providers = [aws_ecs_capacity_provider.example.name]
default_capacity_provider_strategy {
base = 1
weight = 100
capacity_provider = aws_ecs_capacity_provider.example.name
}
}
resource "aws_ecs_capacity_provider" "example" {
name = "example"
auto_scaling_group_provider {
auto_scaling_group_arn = aws_autoscaling_group.example.arn
}
}
# aws_autoscaling_group の定義は省略...
Reference