2017-10-19 53 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, '/*']]