我有一个Yaml文件,用于使用CloudFormation创建堆栈。但是,当涉及到创建一些S3存储桶时,脚本失败,在控制台中出现400 Bad Request错误。我尝试运行仅执行此操作的脚本,但结果相同。这是我正在使用的Yaml文件
AWSTemplateFormatVersion: 2010-09-09
Parameters:
ArtifactsBucket:
Type: String
Default: artifacts.bucket
Description: S3 Bucket Name for CodeBuild Artifacts
DevBucket:
Type: String
Default: dev.bucket
Description: S3 Bucket Name for Dev environment.
StagingBucket:
Type: String
Default: staging.bucket
Description: S3 Bucket Name for Staging environment
ProductionBucket:
Type: String
Default: production.bucket
Description: S3 Bucket Name for Production environment
Resources:
# S3 Bucket for build artifacts
BuildArtifactsBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${ArtifactsBucket}'
# S3 Bucket for Dev environment
DevS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${DevBucket}'
# S3 Bucket for Staging environment
StagingS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${StagingBucket}'
# S3 Bucket for Production environment
ProductionS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${ProductionBucket}'
我真的不明白这是怎么回事,因为如果我只留下一个S3存储桶资源,那么它将起作用
答案 0 :(得分:3)
您完全有可能在S3控制api中碰到油门。
为避免过多的并行请求,您可以添加一个DependsOn
参数来强制按顺序创建存储桶:
AWSTemplateFormatVersion: 2010-09-09
Parameters:
ArtifactsBucket:
Type: String
Default: artifacts.bucket
Description: S3 Bucket Name for CodeBuild Artifacts
DevBucket:
Type: String
Default: dev.bucket
Description: S3 Bucket Name for Dev environment.
StagingBucket:
Type: String
Default: staging.bucket
Description: S3 Bucket Name for Staging environment
ProductionBucket:
Type: String
Default: production.bucket
Description: S3 Bucket Name for Production environment
Resources:
# S3 Bucket for build artifacts
BuildArtifactsBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${ArtifactsBucket}'
# S3 Bucket for Dev environment
DevS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${DevBucket}'
DependsOn: "BuildArtifactsBucket"
# S3 Bucket for Staging environment
StagingS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${StagingBucket}'
DependsOn: "DevS3Bucket"
# S3 Bucket for Production environment
ProductionS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Sub '${ProductionBucket}'
DependsOn: "StagingS3Bucket"
此处所有存储桶将按顺序创建。您可能可以将它们分为几组,而不是一次严格地分组;实验一下,看看有什么用。