既存のS3バケットでCloudFormationを使用する


27

CloudFormationを使用して、既存のバケットのAWS :: S3 :: Bucketのいくつかのプロパティを設定します。つまり、バケットを作成するのではなく、設定の一部を強制するだけです。これが私のクラウド形成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して既存のバケットなどに設定するにはどうすればよいですか?

同じような質問をする別の質問を見ましたが、適切な答えがありません。

回答:


7

CloudFormationを使用してAWSインフラストラクチャを変更するのは間違っていると思います。CloudFormationの目標は、テンプレート形式でAWSインフラストラクチャを作成することです。作成するリソースをある程度管理できるように拡張されていますが、既存のインフラストラクチャを管理することは目標ではありません。ようこそページから:

AWS CloudFormationを使用すると、AWSインフラストラクチャの展開を予測可能かつ繰り返し作成およびプロビジョニングできます。

最も近い方法は、AWS :: S3 :: BucketPolicyを使用して既存のバケットにバケットポリシーを設定することです。さらに、AWS CLI S3 API使用してバケットを変更できます。


17
彼は別の方向から来ているかもしれませんが、スタックを削除するときに、S3バケットの削除ポリシーが「保持」されてから同じスタックを再度プロビジョニングすると、このエラーが発生します。控えめに言っても非常に迷惑です。少なくとも、スナップショットと復元が可能なボリュームでは、S3でできることはまったくありません。
スリーパースミス

2
さらに別の方向は、スタックの名前を変更する場合です。この回答は、OPがAWSインフラストラクチャの変更を望んでいることを前提としているため、私は投票しました。これは多くの場合、CFの他の制限のためだけに当てはまるので、これを実行したいということに何の問題もありません。
user239558
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.