Wie behebe ich den AWS CloudFormation-Fehler „Ein Stack kann nicht aktualisiert werden, wenn eine Ressource mit benutzerdefiniertem Namen ersetzt werden muss“?

Lesedauer: 2 Minute
0

Wenn ich versuche, einen AWS CloudFormation-Stack zu aktualisieren, erhalte ich eine Fehlermeldung ähnlich der folgenden: „CloudFormation kann einen Stack nicht aktualisieren, wenn eine benutzerdefinierte Ressource ersetzt werden muss. Benennen Sie 'MyResourceXXX' um und aktualisieren Sie den Stack erneut.“ Wie kann ich diesen Fehler beheben?

Kurzbeschreibung

Dieser Fehler tritt normalerweise auf, wenn ein Stack-Update versucht, Ressourcen mit Eigenschaften durch benutzerdefinierte Namen zu ersetzen. AWS CloudFormation ersetzt keine Ressource mit einem benutzerdefinierten Namen, es sei denn, dieser benutzerdefinierte Name wird in einen anderen Namen geändert. Um einen Stackausfall zu verhindern und die Fehlermeldung zu vermeiden, ändern Sie alle Ressourcen mit benutzerdefinierten Namen, sodass sie andere Namen verwenden, bevor Sie einen Stack aktualisieren.

Die Lösung für diesen Fehler setzt Folgendes voraus:

  • Sie aktualisieren einen vorhandenen Stack und erstellen keinen neuen Stack.
  • Sie ändern die Namen vorhandener benutzerdefinierter Ressourcen und erstellen keine neuen benutzerdefinierten Ressourcen.

Behebung

1.    Öffnen Sie in einem Code-Editor die AWS CloudFormation-Vorlage für den Stack, den Sie aktualisieren möchten.

2.    Ersetzen Sie die Namen oder Werte aller Ressourceneigenschaften, die benutzerdefinierte Namen haben, durch andere Namen.

Hinweis: Im folgenden Beispiel wird die DBInstanceIdentifier-Eigenschaft der MyRDS-Ressource auf den benutzerdefinierten Namen PRODdb festgelegt. Der AWS CloudFormation-Stack kann erst erfolgreich aktualisiert werden, wenn der Name PRODdb in einen anderen Namen geändert wird, z. B. PRODdb1. Sie können die Eigenschaft DBInstanceIdentifier auch aus Ihrer Vorlage weglassen. Auf diese Weise generiert AWS CloudFormation eine eindeutige physische ID, die für die DB-Instance verwendet wird.

"MyRDS": {
    "Type": "AWS::RDS::DBInstance",
    "Properties": {
        "DBInstanceClass": "db.m3.medium",
        "Engine": "MySQL",
        "DBInstanceIdentifier": "PRODdb",
        "AllocatedStorage": "10",
        "AutoMinorVersionUpgrade": "true",
        "BackupRetentionPeriod": "0",
    …
    …
    }
}

Wichtig: Wenn Sie eine Ressource mit benutzerdefiniertem Namen umbenennen, ersetzt AWS CloudFormation diese Ressource. Weitere Informationen finden Sie unter Namenstyp. Der Austausch bestimmter Ressourcen kann ohne eine ordnungsgemäße Sicherung zu Datenverlust führen. Weitere Informationen finden Sie unter Ersatz.

3.    Speichern Sie die Änderungen an Ihrer AWS CloudFormation-Vorlage und verwenden Sie dann die Vorlage, um Ihren Stack zu aktualisieren.


Weitere Informationen

AWS CloudFormation stapelt Updates

Verhalten von Stack-Ressourcen aktualisieren

Referenz zu AWS-Ressourcen- und Eigenschaftstypen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr