You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform v0.11.0配置S3存储桶KMS加密时server_side_encryption_configuration不被识别

问题原因及解决方案

你遇到这个问题的核心原因是Terraform v0.11.0是一个非常老旧的版本(发布于2017年),它搭配的AWS Provider版本也相对早期,而server_side_encryption_configuration作为aws_s3_bucket资源的嵌套块,是在后续的AWS Provider版本中才引入的——在Terraform 0.11的生态里,S3桶的服务器端加密配置根本不是这么实现的。

而且你猜测的没错,报错和kms_master_key_id无关,问题本质是0.11不认识你写的这个嵌套块结构。

0.11中正确的S3加密配置方式

在Terraform 0.11和对应的早期AWS Provider版本中,你需要通过单独的资源来配置S3桶的加密,而不是把配置嵌套在aws_s3_bucket里。具体写法如下:

  1. 先定义你的S3桶资源:
resource "aws_s3_bucket" "my_bucket" {
  bucket = "your-unique-bucket-name"
  # 这里放桶的其他基础配置,比如版本控制、标签等
}
  1. 再创建独立的加密配置资源关联到这个桶:
resource "aws_s3_bucket_server_side_encryption_configuration" "my_bucket_encryption" {
  bucket = "${aws_s3_bucket.my_bucket.id}"

  rule {
    apply_server_side_encryption_by_default {
      # 替换成你的KMS密钥ARN或ID
      kms_master_key_id = "arn:aws:kms:us-east-1:123456789012:key/your-key-id"
      sse_algorithm     = "aws:kms" # 如果你用S3托管密钥,这里写"AES256"
    }
  }
}

额外建议

Terraform 0.11已经停止维护多年了,不仅缺少很多新功能,还可能存在未修复的安全漏洞。如果条件允许,强烈建议你升级到Terraform 1.x或更高版本(现在最新的是1.5+),同时搭配对应的AWS Provider版本,这样不仅能使用更简洁的嵌套块写法,还能获得更好的稳定性和安全性。

内容的提问来源于stack exchange,提问作者Todd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:22:51