使用 CloudFormation,我想在现有存储桶上设置AWS::S3::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
我已经创建了 bucket preview.website.com
。我的意思是,这个帐户拥有那个存储桶。如何使用 CloudFormation 在现有存储桶上设置AccessControl
和之类的东西?WebsiteConfiguration
我看到另一个问题问类似的问题,但没有合适的答案。
我相信您错误地使用 CloudFormation 来修改您的 AWS 基础设施。CloudFormation 的目标是以模板方式创建 AWS 基础设施。它已被扩展以允许对其创建的资源进行一些管理,但管理现有基础设施并不是它的目标。从欢迎页面:
我相信您最接近的方法是使用AWS::S3::BucketPolicy在现有存储桶上设置存储桶策略。除此之外,您还可以使用AWS CLI S3 API来修改您的存储桶: