Amazon-S3
將 CloudFormation 與現有 S3 儲存桶一起使用
使用 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來修改您的儲存桶: