AWS SAM:如何使用 SAM 创建具有现有加密密钥的 S3 存储桶

AWS SAM: How to create an S3 bucket with an already existing encryption key using SAM


我是 SAM(和 CloudFormation)的新手,我今天了解到您可以通过向 SAM yaml 模板添加类似这样的内容来创建一个新存储桶:

Resources:
    my-great-new-bucket:
       Type:AWS::S3::Bucket

SAM 是否提供一种方法来将 已经存在的 KMS 加密密钥添加到新创建的存储桶(并启用存储桶密钥)?

对于 boto,我将执行以下操作来实现此目的:

 response = client.put_bucket_encryption(Bucket= bucketName, ServerSideEncryptionConfiguration={
        "Rules": [
            {
              "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "aws:kms",
                "KMSMasterKeyID": myKeyArn
              },
              "BucketKeyEnabled": True
            }
          ]
        })    

如何将此操作转换为 SAM 模板?

所以S3::Bucket不是SAM资源而是普通的CloudFormation资源。 您可以通过将 KMS-KEY-ARN 更改为您的密钥的密钥 ID 来实现此目的。

Resources:
  EncryptedS3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - BucketKeyEnabled: true
            ServerSideEncryptionByDefault:
              SSEAlgorithm: 'aws:kms'
              KMSMasterKeyID: KMS-KEY-ARN