我目前正在尝试使用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
但是,当我部署时,会收到以下消息:
标识为[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
进一步研究之后,我想我将CF模板语法与SAM语法混合在一起。谁能指出这些设置的正确文档或语法?
答案 0 :(得分:1)
我对此进行了深入研究,目前它是SAM中的错误。这是GitHub issue。有一个patch已被合并,应该在v1.10.0中修复。
问题的根源是SAM中的s3模型具有硬编码的属性列表,而PublicAccessBlockConfiguration
相对较新并且尚未添加。
我希望这会有所帮助。
答案 1 :(得分:0)
我建议使用默认设置创建s3bucket。默认情况下,S3被禁止公开访问。只需将IAM角色/策略与reads3对象关联即可进行CFN部署