Verwenden von CloudFormation mit einem vorhandenen S3-Bucket

27

Mit CloudFormation möchte ich einige der Eigenschaften in AWS :: S3 :: Bucket für einen vorhandenen Bucket festlegen . Mit anderen Worten, ich möchte den Bucket nicht erstellen, sondern nur einige der Einstellungen erzwingen. Hier ist ein Beispiel für meine Cloudformation JSON:

"websitePreviewBucket": {
  "Type": "AWS::S3::Bucket",
  "Properties": {
    "AccessControl": "PublicRead",
    "VersioningConfiguration": {
      "Status": "Suspended"
    },
    "BucketName": "preview.website.com",
    "WebsiteConfiguration": {
      "IndexDocument": "index.html",
      "ErrorDocument": "error.html"
    }
  }
},

Es überrascht nicht, dass dies in der Cloudformationskonsole fehlschlägt:

The following resource(s) failed to create: [websitePreviewBucket].
preview.website.com already exists

Ich habe den Bucket preview.website.com erstellt. Ich meine, dieser Account "besitzt" diesen Eimer. Wie kann ich mit CloudFormation Dinge wie AccessControlund WebsiteConfigurationauf einen vorhandenen Bucket setzen?

Ich habe eine andere Frage gesehen , die etwas Ähnliches stellt , aber keine passende Antwort hat.

tedder42
quelle

Antworten:

7

Ich glaube, Sie haben sich geirrt, CloudFormation zum Ändern Ihrer AWS-Infrastruktur zu verwenden. CloudFormation hat sich zum Ziel gesetzt, eine AWS-Infrastruktur mit Vorlagen zu erstellen. Es wurde erweitert, um eine gewisse Verwaltung der von ihm erstellten Ressourcen zu ermöglichen, die Verwaltung der vorhandenen Infrastruktur ist jedoch nicht das Ziel. Von der Begrüßungsseite :

Mit AWS CloudFormation können Sie AWS-Infrastrukturbereitstellungen vorhersehbar und wiederholt erstellen und bereitstellen.

Ich glaube, Sie können am besten eine Bucket-Richtlinie für einen vorhandenen Bucket mithilfe von AWS :: S3 :: BucketPolicy festlegen . Darüber hinaus können Sie die AWS CLI S3-API verwenden , um Ihren Bucket zu ändern:

dialt0ne
quelle
17
Möglicherweise kommt er aus einer anderen Richtung. Wenn Sie jedoch einen Stapel löschen und die Löschrichtlinie für einen S3-Bucket beibehalten und dann denselben Stapel erneut bereitstellen, tritt dieser Fehler auf. Sehr ärgerlich, um es gelinde auszudrücken. Zumindest mit Datenträgern, die Sie per Snapshot sichern und wiederherstellen können, können Sie mit S3 absolut nichts anfangen.
Sleeper Smith
2
Noch eine andere Richtung ist, wenn Sie Ihren Stapel umbenennen möchten. Ich habe abgelehnt, weil in dieser Antwort davon ausgegangen wird, dass das OP die AWS-Infrastruktur ändern möchte. Dies ist häufig nur aufgrund anderer Einschränkungen von CF der Fall, weshalb es nichts Falsches ist, dies tun zu wollen.
user239558