使用 CloudFormation,我想设置一些属性AWS::S3::存储桶在现存的bucket。换句话说,我不想创建 bucket,我只想强制执行一些设置。这是我的 CloudFormation JSON 的一个示例:
"websitePreviewBucket": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": "PublicRead",
"VersioningConfiguration": {
"Status": "Suspended"
},
"BucketName": "preview.website.com",
"WebsiteConfiguration": {
"IndexDocument": "index.html",
"ErrorDocument": "error.html"
}
}
},
毫不奇怪,这在 CloudFormation 控制台中失败了:
The following resource(s) failed to create: [websitePreviewBucket].
preview.website.com already exists
我已经创建了存储桶preview.website.com
。我的意思是,这个账户拥有该存储桶。如何使用CloudFormation 在现有存储桶上设置诸如AccessControl
和 之类的内容?WebsiteConfiguration
我见过另一个问题询问类似问题,但没有合适的答案。
答案1
我认为您使用 CloudFormation 修改 AWS 基础设施是错误的。CloudFormation 的目标是以模板化方式创建 AWS 基础设施。它已扩展以允许对其创建的资源进行一些管理,但管理现有基础设施并不是它的目标。从欢迎页面:
AWS CloudFormation 使您能够可预测且重复地创建和配置 AWS 基础设施部署。
我相信你能得到的最接近的方法是使用以下方法在现有存储桶上设置存储桶策略AWS::S3::存储桶策略。除此之外,您还可以使用AWS CLI S3 API修改你的存储桶: