问题描述
我有一个采用这种配置的 S3 存储桶:
我正在尝试通过 CDK 创建具有相同配置的存储桶:
Bucket.Builder.create(this,"test1")
.bucketName("com.myorg.test1")
.encryption(BucketEncryption.KMS_MANAGED)
.bucketKeyEnabled(true)
.build()
但我收到此错误:
错误:指定了bucketKeyEnabled,因此'encryption'必须设置为KMS(值:MANAGED)
这对我来说似乎是一个错误,但我对 CDK 比较陌生,所以我不确定。是我做错了什么,还是这确实是一个错误?
解决方法
bucketKeyEnabled 标志,直接来自文档:
指定 Amazon S3 是否应将 S3 存储桶密钥与 使用 KMS (SSE-KMS) 的服务器端加密
BucketEncryption 有 4 个选项。
NONE - 无加密
MANAGED - 由 AWS 管理的 Kms 密钥
S3MANAGED - 由 S3 管理的密钥
KMS - 由用户管理的密钥,将创建一个新的 KMS 密钥。
我们根本不需要为任何场景设置 bucketKeyEnabled。在这种情况下,我们只需要 aws/s3 ,所以,
bucketKeyEnabled:不需要设置。(因为这仅适用于 SSE-KMS)
加密:应设置为 BucketEncryption.S3_MANAGED
示例:
const buck = new s3.Bucket(this,"my-bucket",{
bucketName: "my-test-bucket-1234",encryption: s3.BucketEncryption.KMS_MANAGED,});