📚
Terraformでs3暗号化の差分が出続ける
概要
TerraformやAWS Providerのバージョンを変更していないにも関わらず、plan/apply時に以下のs3の暗号化設定の差分が出るようになった。
- server_side_encryption_configuration {
- rule {
- bucket_key_enabled = false -> null
- apply_server_side_encryption_by_default {
- sse_algorithm = "AES256" -> null
結論
aws providerのバージョンを以下より新しいものに更新しましょう。
- v4.49.0
- v3.76.1
- v2.70.2
環境
Terraform : 1.3.2
AWS Provider : 3.39.0
事象
terraform planを実行したところ、以下の差分が検出されました。
s3の設定や、TerraformやAWS Providerのバージョンに変更はしていません。当然、Management Consoleから変更もしていません。
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
~ update in-place
Terraform will perform the following actions:
# aws_s3_bucket.test-bucket will be updated in-place
~ resource "aws_s3_bucket" "test-bucket" {
id = "test-bucket-XXXXXXXXXX"
tags = {}
# (10 unchanged attributes hidden)
- server_side_encryption_configuration {
- rule {
- bucket_key_enabled = false -> null
- apply_server_side_encryption_by_default {
- sse_algorithm = "AES256" -> null
}
}
}
# (1 unchanged block hidden)
}
Plan: 0 to add, 1 to change, 0 to destroy.
調査
tfstateの状態の確認
"server_side_encryption_configuration": [
{
"rule": [
{
"apply_server_side_encryption_by_default": [
{
"kms_master_key_id": "",
"sse_algorithm": "AES256"
}
],
"bucket_key_enabled": false
}
]
}
],
Bucketの設定
tfstateと一致していそう
AWS公式
そういえば、デフォルトで暗号化が有効化されるとアナウンスが出ていたので、AWS側で仕様変更が入った可能性がありそう。
AWS Providerのissue/PR検索
既に対応版がリリースされていました。
対応
結論に記載の通りですが、AWS Providerを更新することで、差分が出なくなりました。
Providerのバージョン指定の変更
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
- version = "3.39.0"
+ version = "3.76.1"
}
}
required_version = ">= 1.3"
}
Providerを更新して、再度plan実行
% terraform init -upgrade
% terraform plan
No changes. Your infrastructure matches the configuration.
雑感
- ちなみに、Providerを更新せずにapplyをしてもfailはしませんが、planを実行すると同じ差分が出続けます。
- おそらく自分のアカウントにデフォルトで暗号化が有効になる変更が反映されたのではないかと思います。(AWSからアナウンスが出て時間が経っていたので、忘れていました)
- まだProviderの2系や3系へもアップデートがされており、感謝。(そろそろ4系に更新しないとと思いつつ、s3のリファクタが...)
Discussion