[AWS] TerraformでS3バケット作成時に『Warning: Argument is deprecated』が出る原因と対策

スポンサーリンク

概要

TerraformでS3バケットを作成するために以下の内容でterraform planを実行したところ、
Warning: Argument is deprecated
Use the aws_s3_bucket_cors_configuration resource instead

という警告が表示された。

resource "aws_s3_bucket" "public_bucket" {
  bucket = "hogehoge-hogehoge12349876"
  acl = "public-read"
  cors_rule {
    allowed_origins = ["*"]
    allowed_methods = ["GET"]
    allowed_headers = ["*"]
    max_age_seconds = 3000
  }
}

原因

古いバージョンのTerraformに存在したaws_s3_bucketリソースの引数の多くは、新しいバージョンのTerraformでは別のリソースとして定義する必要がある。
上記の例の場合、aclはaws_s3_bucket_aclリソース、cors_ruleはaws_s3_bucket_cors_configurationリソースとして以下のように定義する。

resource "aws_s3_bucket" "public_bucket" {
  bucket = "hogehoge-hogehoge12349876"
}
resource "aws_s3_bucket_acl" "public_bucket_acl" {
  bucket = aws_s3_bucket.public_bucket.id
  acl = "public-read"
}
resource "aws_s3_bucket_cors_configuration" "public_bucket__cors_configuration" {
  bucket = aws_s3_bucket.public_bucket.id
  cors_rule {
    allowed_origins = ["*"]
    allowed_methods = ["GET"]
    allowed_headers = ["*"]
    max_age_seconds = 3000
  }
}

おすすめ書籍

コメント