我尝试使用以下 yaml 在 CloudFormation 中创建 S3 存储桶策略:
cloudTrailBucketPolicy:
Type: "AWS::S3::BucketPolicy"
Properties:
Bucket:
Ref: cloudtrailBucket
PolicyDocument:
-
Action:
- "s3:GetBucketAcl"
Effect: Allow
Resource:
Fn::Join:
- ""
-
- "arn:aws:s3:::"
-
Ref: cloudtrailBucket
- "/*"
Principal: "*"
-
Action:
- "s3:PutObject"
Effect: Allow
Resource:
Fn::Join:
- ""
-
- "arn:aws:s3:::"
-
Ref: cloudtrailBucket
- "/*"
Principal:
Service: cloudtrail.amazonaws.com
当我尝试执行此操作时,我收到一条消息“PolicyDocument 属性的值必须是一个对象”
大家有什么想法吗?
最佳答案
看起来您解决了这个问题,但为了便于阅读,您可以使用 !Sub 来压缩格式,并知道该操作允许单个值以及列表。我喜欢 yaml 的主要原因之一是你使用较少的垂直。
政策文档:
-
操作:“s3:GetBucketAcl”
效果:允许
资源:!Sub arn:aws:s3:::${cloudtrailBucket}
主要的: ”*”
-
操作:“s3:PutObject”
效果:允许
资源:!Sub arn:aws:s3:::${cloudtrailBucket}/*
主要的:
服务:cloudtrail.amazonaws.com
关于amazon-s3 - 在 CloudFormation yaml 中创建 BucketPolicy 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42448469/