给定一个定义了以下内容的 CloudFormation 模板:
- KMS key
- KMS key 别名
- 一个 S3 存储桶
如果由于某种原因我需要删除 CloudFormation 堆栈并重新部署,删除操作将保留创建的 KMS key 和别名。 (这是明智的,我不想丢失我的 key ,所有东西都是用它加密的)。
但这意味着当我重新部署堆栈时,它会失败,因为具有该名称的别名已存在。
我可以通过 CLI 删除别名并重新部署,这将为新的 KMS key 创建别名。
CloudFormation 堆栈是否可以使用初始部署中的现有 KMS key ?
另外:我不是 100% 清楚 S3 存储桶中的加密数据在别名更改后会发生什么情况,AWS 是否知道自动查找之前加密的 KMS key 或重新加密发生?
最佳答案
我建议您使用一个仅创建 KMS 和 export its value on the outputs 的堆栈:
Resources:
KmsKey:
Type: AWS::KMS::Key
Properties:
...
Outputs:
S3KmsKeyId:
Description: The KMS Key used
Value: !Ref KmsKey
Export:
Name: S3KmsKeyId
然后您可以拥有第二个堆栈,仅创建 S3 存储桶,您可以在其中 reference the Exported Value :
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
...
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
KMSMasterKeyID: !ImportValue S3KmsKeyId
SSEAlgorithm: aws:kms
关于amazon-web-services - CloudFormation KMS 加密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52987597/