2017-10-19 52 views
1

我有这个S3桶和策略,我正在部署到CloudFormation。Cloudformation桶策略 - “声明缺少必需元素”

Resources: 
    ReportsBucket: 
    Type: AWS::S3::Bucket 

    BucketPolicy: 
    Type: AWS::S3::BucketPolicy 
    Properties: 
     Bucket: !Ref ReportsBucket 
     PolicyDocument: 
     Id: ReportPolicy 
     Version: "2012-10-17" 
     Statement: 
      - Sid: ReportBucketPolicyDoc 
      Effect: Allow 
      Action: "s3:*" 
      Principal: 
       AWS: !Join ['', ["arn:aws:iam::", !Ref "AWS::AccountId", ":root"]] 
      Resource: !Join ['', ['arn:aws:s3:::', !Ref S3Bucket, '/*']] 

它失败,

UPDATE_ROLLBACK_IN_PROGRESS AWS::CloudFormation::Stack {my stack name} The following resource(s) failed to create: [BucketPolicy]. 
CREATE_FAILED AWS::S3::BucketPolicy BucketPolicy Statement is missing required element 

这有什么错我的政策是什么?

回答

2

它有两个问题:

  • 在第一行缺少AWSTemplateFormatVersion(所需元件
  • 参考S3Bucket应该是ReportsBucket

更新版本:

AWSTemplateFormatVersion: 2010-09-09 
Resources: 
    ReportsBucket: 
    Type: AWS::S3::Bucket 

    BucketPolicy: 
    Type: AWS::S3::BucketPolicy 
    Properties: 
     Bucket: !Ref ReportsBucket 
     PolicyDocument: 
     Id: ReportPolicy 
     Version: "2012-10-17" 
     Statement: 
      - Sid: ReportBucketPolicyDoc 
      Effect: Allow 
      Action: "s3:*" 
      Principal: 
       AWS: !Join ['', ["arn:aws:iam::", !Ref "AWS::AccountId", ":root"]] 
      Resource: !Join ['', ['arn:aws:s3:::', !Ref ReportsBucket, '/*']]