Ich habe einen S3-Bucket als Ressource in meiner CloudFormation-Vorlage. Mit DeletionPolicy
eingestellt auf Retain
. Dies funktioniert wie erwartet, wenn der Stapel gelöscht wird, wird der Bucket tatsächlich beibehalten. Wenn ich jedoch versuche, den Stapel erneut zu erstellen, schlägt die Erstellung fehl, während ich versuche, denselben Bucket erneut zu erstellen. Dabei wird eine Fehlermeldung angezeigt, die darauf hinweist, dass er bereits vorhanden ist.
Was muss ich zu meiner CloudFormation-Vorlage hinzufügen, damit nicht versucht wird, eine bereits vorhandene Ressource neu zu erstellen?
Relevantes Fragment meiner Vorlage ist wie folgt:
"Resources": {
"SomeS3Bucket" : {
"Type" : "AWS::S3::Bucket",
"DeletionPolicy" : "Retain",
"Properties": {
"BucketName": "SomeS3Bucket"
}
}
Antworten:
Ein Ansatz besteht darin, der CloudFormation-Vorlage einen Eingabeparameter hinzuzufügen, um anzugeben, dass ein vorhandener Bucket verwendet werden soll.
Verwenden Sie Bedingungsklauseln in der Vorlage, um den Bucket nur dann zu erstellen, wenn der Parameter angibt, dass er benötigt wird.
quelle
CloudFormation verwendet Tags mit dem Präfix "aws:", um zu verfolgen, welche Ressourcen mit welchen Einträgen in welchen Stapeln verknüpft sind. Dies ist der "Live" -Status, der zum Vergleichen mit einer Vorlage verwendet wird, bevor entschieden wird, was hinzugefügt / gelöscht / aktualisiert wird.
Als Benutzer können Sie solche Tags nicht hinzufügen, bearbeiten oder löschen.
Wenn Ihre vorhandenen Ressourcen diese Tags nicht haben oder nicht die richtigen Werte für diese Tags haben, werden sie nicht als Teil des neuen Stacks betrachtet, und ich sehe keine Möglichkeit, dies zu ändern.
quelle
Ich versuche auch dies zu automatisieren, da es anscheinend nicht nur mit der Cloudformation-Vorlage möglich ist. Der Prozess, an den ich denke, würde:
temp-$originalbucketname
$originalbucketname
temp-$originalbucketname
Dies ist ein sehr aufwändiger Vorgang, der abhängig von der Eimergröße leicht Stunden dauern kann, da die meisten Schritte O (n) mit der Anzahl der Schlüssel sind.
Sie würden denken, Cloudformation ist die grundlegende Ebene der AWS-Automatisierung, aber ich denke, es ist nur ein (ziemlich begrenztes) Monster, das byzantinische APIs für alle ihre Dienste zusammenführt.
quelle