S3 Creation CloudFormation导致400错误请求

时间:2019-01-21 15:24:00

标签: amazon-s3

使用CloudFormation创建S3 Bukcet时遇到此问题。我收到400错误的要求。不胜感激,如果有人可以帮忙!

   aws cloudformation deploy --profile DEV --stack-name testBucket --template-file create_bucket.yml --region us-east-1 --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --parameter-overrides BucketName=myBucket

YAML

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  BucketName:
    Description: Provisioned read throughput for each table
    Type: String
Resources:
  MYBUCKET:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: ${BucketName}
  MYBUCKETPOLICY:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref MYBUCKET
      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 MYBUCKET, '/*']]

错误

  

错误请求(服务:Amazon S3;状态代码:400;错误代码:400错误   请求;申请编号:B4AEAA3C454B7868; S3扩展请求ID:   ATFscTA4dQw8J8AYUfkIARYhiT4 / BpVWRcD172WnR75Uzm + i5dlHOTC2HCb9drkO16dzYiELJZc =)

3 个答案:

答案 0 :(得分:5)

以下主题适用于任何尝试更改 S3 存储桶区域的人就在删除另一个区域中的存储桶。

本质上,在一个区域中删除存储桶与所有其他区域中的名称可用之间存在延迟。因此,如果您在 ap-southeast-2 中删除了一个存储桶,然后尝试创建一个与 us-east-1 同名的存储桶,您应该会收到此类错误。

https://github.com/aws/aws-cdk/issues/6646#issuecomment-597905903

答案 1 :(得分:3)

您应该使用!Ref BucketName代替$ {BucketName}

  MYBUCKET:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName

答案 2 :(得分:1)

您没有正确引用 BucketName 参数:

MYBUCKET:
  Type: AWS::S3::Bucket
    Properties:
    BucketName: !Sub ${BucketName}  # Or !Ref BucketName