web-dev-qa-db-ja.com

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

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を作成しました。つまり、このアカウントはそのバケットを「所有」しています。 CloudFormationを使用して、既存のバケットにAccessControlWebsiteConfigurationなどを設定するにはどうすればよいですか?

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

29
tedder42

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

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

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

7
dialt0ne