Terraformのaws_s3_bucket_lifecycle_configuration対応

概要

Terraform で下記deprectatedが表示された場合の対応です。

╷
│ Warning: Argument is deprecated
│
│   with aws_s3_bucket.example,
│   on codepipeline.tf line 1, in resource "aws_s3_bucket" "example":
│    1: resource "aws_s3_bucket" "example" {
│
│ Use the aws_s3_bucket_lifecycle_configuration resource instead
│

対応内容

まず、S3の該当行をコピーして削除します。(あとでコピーするために一旦コメントアウトでも良さそう)
削除しても、差分にはなりません。

次に新しいterraformのリソース名でコードを追加します。内容は先程コピーした値です。

resource "aws_s3_bucket_lifecycle_configuration" "example" {
  bucket = aws_s3_bucket.example.bucket

  rule {
    id      = "example"
    status = "Enabled" 

    filter {
            and {
                tags                     = {
                    "hoge" = "true"
                }
            }
    }

    noncurrent_version_expiration {
      noncurrent_days = 120
    }
  }
}

次にインポートします。

terraform import aws_s3_bucket_lifecycle_configuration.example S3バケット名

terraform planが通ればOKです。