Amazon-S3

將 CloudFormation 與現有 S3 儲存桶一起使用

  • June 5, 2020

使用 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 CloudFormation 使您能夠以可預測的方式重複創建和預置 AWS 基礎設施部署。

我相信您最接近的方法是使用AWS::S3::BucketPolicy在現有儲存桶上設置儲存桶策略。除此之外,您還可以使用AWS CLI S3 API來修改您的儲存桶:

引用自:https://serverfault.com/questions/610788