如何在 AWS SAM 模板中限制对 S3 存储桶的公共访问

rlc*_*ews 4 amazon-s3 amazon-web-services aws-cloudformation

我目前正在尝试使用 SAM 模板为云形成部署定义一个 s3 存储桶。按照文档,我认为我正确设置了 PublicAccessBlockConfiguration:

(yaml)
    S3Bucket1:
        Type: AWS::S3::Bucket
        Properties:
          BucketName: abl-ar-report-container 
          BucketEncryption: 
            ServerSideEncryptionConfiguration: 
            - ServerSideEncryptionByDefault:
                SSEAlgorithm: AES256
          PublicAccessBlockConfiguration:
            BlockPublicAcls : true
            BlockPublicPolicy : true
            IgnorePublicAcls : true
            RestrictPublicBuckets : true
Run Code Online (Sandbox Code Playgroud)

但是,当我部署时,我收到以下消息:

ID 为 [S3Bucket1] 的资源无效。未为 AWS::S3::Bucket 类型的资源定义属性 PublicAccessBlockConfiguration

我确实在 git 上看到了一些对模板变体的引用,我将 AWS 模板声明为:

AWSTemplateFormatVersion: 2010-09-09
Description: A template for a Node.js-based application 

Transform: AWS::Serverless-2016-10-31
Run Code Online (Sandbox Code Playgroud)

经过进一步挖掘,我认为我将 CF 模板语法与 SAM 语法混合在一起。任何人都可以指出这些设置的正确文档或语法吗?

bwe*_*est 5

我对此进行了深入研究,目前它是 SAM 中的一个错误。这是GitHub 问题。有一个补丁已经合并,应该在 v1.10.0 中修复。

问题的根源在于 SAM 中的 s3 模型有一个硬编码的属性列表,并且PublicAccessBlockConfiguration相对较新,尚未添加。

我希望这有帮助。