Terraformのaws_s3_bucket_server_side_encryption_configuration対応

概要

S3で下記Deprecatedのログが出ることがあります。

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

これはS3バケットで server_side_encryption_configuration を使用しているときにでるようです。

https://dev.classmethod.jp/articles/terraform-s3-v4-9-0-refactoring/

対応内容

まず、該当行を削除します。削除しただけでは差分にならないようです。
そして、下記を追加します。

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

  rule {
    bucket_key_enabled = false  # ここは必要じゃない場合もあり
    apply_server_side_encryption_by_default {
      sse_algorithm = "AES256"
    }
  }
}

もちろんこのままでは差分となってしまうので、importが必要です。

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_server_side_encryption_configuration#import

terraform import aws_s3_bucket_server_side_encryption_configuration.example S3バケット名