Wenn ich versuche, einen AWS CloudFormation-Stack zu aktualisieren, erhalte ich eine Fehlermeldung ähnlich der folgenden: „CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename 'MyResource###' and update the stack again.“
Kurzbeschreibung
Dieser Fehler tritt auf, wenn eine Stack-Aktualisierung versucht, Ressourcen mit Eigenschaften durch benutzerdefinierte Namen zu ersetzen. CloudFormation ersetzt keine Ressource durch einen benutzerdefinierten Namen, es sei denn, dieser benutzerdefinierte Name wird in einen anderen Namen geändert. Um einen Stack-Fehler zu verhindern, stelle vor der Aktualisierung eines Stacks sicher, dass du alle Ressourcen mit benutzerdefinierten Namen so änderst, dass sie andere Namen verwenden.
Die Lösung für diesen Fehler setzt Folgendes voraus:
- Du aktualisierst einen vorhandenen Stack und erstellst keinen neuen Stack.
- Du änderst die Namen vorhandener benutzerdefinierter Ressourcen und erstellst keine neuen benutzerdefinierten Ressourcen.
Lösung
-
Öffne in einem Code-Editor die CloudFormation-Vorlage für den Stack, den du aktualisieren möchtest.
-
Ersetze die Namen oder Werte aller Ressourceneigenschaften, die benutzerdefinierte Namen haben, um andere Namen zu verwenden.
Hinweis: Im folgenden Beispiel wird die Eigenschaft DBInstanceIdentifier der Ressource MyRDS auf den benutzerdefinierten Namen PRODdb gesetzt. Der CloudFormation-Stack kann erst aktualisiert werden, wenn der Name PRODdb in einen anderen Namen geändert wird, z. B. PRODdb1. Oder lasse die Eigenschaft DBInstanceIdentifier in der Vorlage weg, sodass CloudFormation eine eindeutige physische ID generiert, die für die DB-Instance verwendet werden kann.
"MyRDS": { "Type": "AWS::RDS::DBInstance",
"Properties": {
"DBInstanceClass": "db.m3.medium",
"Engine": "MySQL",
"DBInstanceIdentifier": "PRODdb",
"AllocatedStorage": "10",
"AutoMinorVersionUpgrade": "true",
"BackupRetentionPeriod": "0",
. . .
. . .
}
}
Wichtig: Wenn du eine Ressource mit benutzerdefiniertem Namen umbenennst, ersetzt CloudFormation diese Ressource. Weitere Informationen findest du unter Name type (Namenstyp). Der Austausch bestimmter Ressourcen kann ohne eine ordnungsgemäße Sicherung zu Datenverlust führen. Weitere Informationen findest du unter Ersatz.
-
Speichere die Änderungen an der CloudFormation-Vorlage und verwende dann die Vorlage, um deinen Stack zu aktualisieren.
Ähnliche Informationen
Verwaltung von AWS-Ressourcen als eine einzelne Einheit mit CloudFormation-Stacks
Aktualisierungsverhalten von Stack-Ressourcen verstehen
Referenz zu AWS-Ressourcen- und Eigenschaftstypen