S3 创建 CloudFormation 导致 400 Bad Request

Ben*_*Ben 10 amazon-s3 aws-cloudformation

使用 CloudFormation 创建 S3 存储桶时遇到此问题。我收到一个 400 Bad 的请求。如果有人可以提供帮助,将不胜感激。

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

模板:

    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, '/*']]
Run Code Online (Sandbox Code Playgroud)

错误

错误请求(服务:亚马逊 S3;状态代码:400;错误代码:400 错误请求;请求 ID:B4AEAA3C454B7868;S3 扩展请求 ID:ATFscTA4dQw8J8AYUfkIARYhiT4/BpVWRcD172WnR75Uzm+i5Z6dlz=

小智 9

你应该使用!Ref BucketName而不是${BucketName}

  MYBUCKET:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
Run Code Online (Sandbox Code Playgroud)


Bor*_*ris 7

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

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

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