使用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 =)
答案 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