9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Qiita株式会社Advent Calendar 2022

Day 13

terraform-provider-aws v3.74.0 以降で "aws_ecs_cluster" の "capacity_providers", "default_capacity_provider_strategy" を定義する場合は "aws_ecs_cluster_capacity_providers" を利用しましょう

Last updated at Posted at 2022-12-12

はじめに

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_clustercapacity_providersdefault_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 and default_capacity_provider_strategy arguments have been deprecated. Use the aws_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

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?