部署AWS S3 BucketPolicy遇MalformedPolicy错误求助
解决AWS S3 BucketPolicy部署时的MalformedPolicy错误
问题原因
你的BucketPolicy YAML配置存在缩进错误,导致S3服务无法正确识别PolicyDocument结构,触发Unknown field version错误。YAML校验工具和sam validate --lint仅检查语法格式,不会验证CloudFormation资源的层级结构正确性,因此会出现语法通过但部署失败的情况。
修正后的配置
BucketPolicy: Type: AWS::S3::BucketPolicy Properties: PolicyDocument: Id: MyPolicy Version: '2012-10-17' Statement: - Sid: PublicReadForGetBucketObject Effect: Allow Principal: '*' Action: "s3:GetObject" Resource: !Join - "" - - "arn:aws:s3:::" - !Ref MyWebsite - /* Bucket: !Ref MyWebsite
关键修正点
- 将
Type和Properties字段缩进,使其作为BucketPolicy资源的子属性,而非同级字段。CloudFormation要求每个资源的属性必须嵌套在资源名称下,否则会解析出错。
内容的提问来源于stack exchange,提问作者Travis Salmon
相关产品推荐
相关产品推荐

