在现有的S3存储桶中使用CloudFormation


27

我想使用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

我创建了存储区Preview.website.com。我的意思是,此帐户“拥有”该存储桶。如何设置之类的东西AccessControl,并WebsiteConfiguration与CloudFormation现有的桶?

我看过另一个问题,询问类似的问题,但没有合适的答案。

Answers:


7

我相信您在使用CloudFormation修改AWS基础设施时错了。CloudFormation的目标是以模板方式创建AWS基础架构。它已扩展为允许对其创建的资源进行某种管理,但管理现有基础结构并不是其目标。从欢迎页面

AWS CloudFormation使您能够可预测地重复创建和配置AWS基础架构部署。

我相信您可以使用AWS :: S3 :: BucketPolicy在现有存储桶上设置存储桶策略。除此之外,您还可以使用AWS CLI S3 API修改存储桶:


17
他可能来自不同的方向,但是事实是,当您删除堆栈时,如果S3存储桶的删除策略是“保留”,然后再次提供相同的堆栈,则会出现此错误。至少可以说很烦。至少对于可以快照和还原的卷,使用S3绝对无能为力。
史密斯卧铺

2
另一个方向是,如果您想重命名堆栈。我之所以投票,是因为该答案假设OP想要修改AWS基础设施。通常仅由于CF的其他限制才是正确的,因此这样做并没有错。
user239558
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.