如何通过Terraform为新S3存储桶启用S3 Bucket Key?
使用Terraform启用S3 Bucket Key的实现方法
要在Terraform中为S3存储桶启用Bucket Key,核心是在服务器端加密配置中添加bucket_key_enabled = true参数,且仅适用于采用KMS加密(sse_algorithm = "aws:kms")的存储桶。以下是具体实现示例:
方法一:使用独立的加密配置资源
resource "aws_s3_bucket" "example_bucket" { bucket = "your-unique-bucket-name" } resource "aws_s3_bucket_server_side_encryption_configuration" "example_encryption" { bucket = aws_s3_bucket.example_bucket.id rule { apply_server_side_encryption_by_default { # 可替换为自定义KMS密钥ARN或AWS托管的S3 KMS密钥ARN(格式:arn:aws:kms:区域:账号ID:key/aws/s3) kms_master_key_id = "arn:aws:kms:us-east-1:123456789012:key/your-kms-key-id" sse_algorithm = "aws:kms" bucket_key_enabled = true # 启用Bucket Key的关键配置 } } }
方法二:内嵌加密配置到存储桶资源
部分新版本Terraform AWS Provider支持直接在aws_s3_bucket资源中内嵌加密配置,示例如下:
resource "aws_s3_bucket" "example_bucket" { bucket = "your-unique-bucket-name" server_side_encryption_configuration { rule { apply_server_side_encryption_by_default { sse_algorithm = "aws:kms" kms_master_key_id = "arn:aws:kms:us-east-1:123456789012:key/your-kms-key-id" bucket_key_enabled = true } } } }
注意事项
- 确保使用的Terraform AWS Provider版本在3.70.0及以上,该版本开始支持
bucket_key_enabled参数 - Bucket Key仅兼容KMS加密方式,不能与SSE-S3(AES256)配合使用
- 若使用AWS托管的KMS密钥,
kms_master_key_id可设置为对应区域的aws/s3密钥ARN
内容的提问来源于stack exchange,提问作者boringDeveloper
相关产品推荐
相关产品推荐

