Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Rollback einer Aktualisierung fortsetzen
Wenn CloudFormation versucht, ein Stack-Update rückgängig zu machen, kann es manchmal nicht alle Änderungen rückgängig machen, die während des Update-Prozesses vorgenommen wurden. Dies wird als UPDATE_ROLLBACK_FAILED-Status bezeichnet. Beispielsweise kann es einen Stack geben, der mit einem Rollback beginnt, um eine alte Datenbank-Instance wiederherzustellen, die außerhalb von CloudFormation gelöscht wurde. Da CloudFormation nicht weiß, dass die Datenbank gelöscht wurde, wird davon ausgegangen, dass die Datenbank-Instance noch vorhanden ist und versucht, sie wiederherstellen, wodurch das Rollback der Aktualisierung fehlschlägt.
Ein Stapel im Zustand UPDATE_ROLLBACK_FAILED kann nicht aktualisiert werden, aber er kann in einen funktionierenden Zustand (UPDATE_ROLLBACK_COMPLETE) zurückversetzt werden. Nachdem Sie den Stapel auf seine ursprünglichen Einstellungen zurückgesetzt haben, können Sie versuchen, ihn erneut zu aktualisieren.
In den meisten Fällen müssen Sie den Fehler beheben, der das Fehlschlagen des Rollback der Aktualisierung verursacht hat, bevor Sie mit dem Zurücksetzen des Stacks fortfahren können. In anderen Fällen können Sie auch ohne Änderungen ein Rollback der Aktualisierung durchführen, z. B., wenn bei einem Stack-Vorgang eine Zeitüberschreitung auftritt.
Anmerkung
Wenn Sie verschachtelte Stacks verwenden, wird beim Rollback des übergeordneten Stacks versucht, auch ein Rollback für alle untergeordneten Stacks durchzuführen.
So setzen Sie den Rollback-Vorgang für eine Aktualisierung fort (Konsole)
Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie in der Navigationsleiste am oberen Rand des Bildschirms das AWS-Region, in dem sich der Stapel befindet.
-
Wählen Sie auf der Seite Stapel den Stapel aus, den Sie aktualisieren möchten, wählen Sie Stapel-Aktionenund dann Update-Rollback fortsetzen.
Wenn keine der Lösungen im Abschnitt Behebung von Fehlern funktioniert hat, können Sie die erweiterte Option verwenden, um die Ressourcen zu überspringen, die CloudFormation nicht erfolgreich zurücksetzen kann. Sie müssen logischen IDs der Ressourcen nachschlagen und eingeben, die Sie überspringen möchten. Geben Sie nur die Ressourcen an, die während der
UpdateRollback-Aktualisierung in denUPDATE_FAILED-Zustand übergegangen sind und nicht während der Vorwärtsaktualisierung.Warnung
CloudFormation legt den Status der angegebenen Ressourcen auf
UPDATE_COMPLETEfest und fährt mit dem Rollback des Stacks fort. Nachdem der Rollback-Vorgang abgeschlossen ist, entspricht der Status der übersprungenen Ressourcen nicht dem Status der Ressourcen in der Stack-Vorlage. Bevor Sie eine weitere Stack-Aktualisierung durchführen, müssen Sie den Stack oder die Ressourcen aktualisieren, sodass ihr Status konsistent ist. Andernfalls schlagen nachfolgende Aktualisierungen fehl und der Stack lässt sich nicht mehr wiederherstellen.Geben Sie die Mindestanzahl von Ressourcen, die erforderlich ist, um einen erfolgreichen Rollback-Vorgang mit dem Stack durchzuführen. Beispielsweise kann eine fehlgeschlagene Ressourcenaktualisierung dazu führen, dass abhängige Ressourcen fehlschlagen. In diesem Fall ist es u. U. nicht erforderlich, die abhängigen Ressourcen zu überspringen.
Verwenden Sie das folgende Format, um Ressourcen, die Teil verschachtelter Stacks sind, zu überspringen:
. Wenn Sie die logische ID einer Stack-Ressource (NestedStackName.ResourceLogicalIDType: AWS::CloudFormation::Stack) in derResourcesToSkip-Liste angeben möchten, dass muss sich der zugehörige eingebettete Stapel in einem der folgenden Zustände befinden:DELETE_IN_PROGRESS,DELETE_COMPLETEoderDELETE_FAILED.
So setzen Sie den Rollback einer Aktualisierung fort (AWS CLI)
-
Verwenden Sie den Befehl continue-update-rollback mit der Option
--stack-name, um die ID des Stapels anzugeben, den Sie weiter zurückrollen möchten.
Weiteres Rollback von fehlgeschlagenen verschachtelten Stack-Updates
Wenn Sie mehrere ineinander verschachtelte Stapel haben, müssen Sie möglicherweise Ressourcen über mehrere verschachtelte Ebenen hinweg überspringen, um die gesamte Stapelhierarchie wieder in einen funktionierenden Zustand zu bringen.
Sie haben zum Beispiel einen Stammstapel namens WebInfra, der zwei kleinere Stapel enthält: WebInfra-Compute und WebInfra-Storage. Diese beiden Stapel haben auch ihre eigenen verschachtelten Stapel innerhalb von ihnen.
Wenn während einer Aktualisierung etwas schief geht und der Aktualisierungsprozess fehlschlägt, kann die gesamte Stapelhierarchie in den Zustand UPDATE_ROLLBACK_FAILED geraten, wie im folgenden Diagramm dargestellt.
Anmerkung
In diesem Beispiel werden der Einfachheit halber verkürzte Stack-Namen verwendet. Untergeordnete Stack-Namen werden in der Regel von CloudFormation erstellt und enthalten eindeutige zufällige Zeichenfolgen, sodass die tatsächlichen Namen u. U. nicht benutzerfreundlich sind.
Um den Root-Stack mit dem Befehl continue-update-rollback in einen funktionsfähigen Zustand zu bringen, müssen Sie die Option --resources-to-skip verwenden, um Ressourcen zu überspringen, die beim Rollback fehlgeschlagen sind.
Das folgende continue-update-rollback-Beispiel setzt einen Rollback-Vorgang nach einer zuvor fehlgeschlagenen Stack-Aktualisierung fort. In diesem Beispiel umfasst die Option --resources-to-skip die folgenden Elemente:
-
myCustom -
WebInfra-Compute-Asg.myAsg -
WebInfra-Compute-LB.myLoadBalancer -
WebInfra-Storage.DB
Für die Ressourcen des Root-Stacks müssen Sie nur die logische ID angeben, zum Beispiel . Für die Ressourcen, die in verschachtelten Stapeln enthalten sind, müssen Sie jedoch sowohl den Namen des verschachtelten Stapels als auch seine logische ID angeben, getrennt durch einen Punkt. Beispiel, myCustom.WebInfra-Compute-Asg.myAsg
aws cloudformation continue-update-rollback --stack-nameWebInfra\ --resources-to-skipmyCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB
So finden Sie den Stacknamen eines verschachtelten Stacks
Sie können ihn über die Stack-ID oder den Amazon Resource Name (ARN) des Child-Stacks finden.
Das folgende ARN-Beispiel bezieht sich auf einen Stapel mit dem Namen WebInfra-Storage-Z2VKC706XKXT.
arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd
So finden Sie die logische ID eines verschachtelten Stapels
Die logische ID eines untergeordneten Stacks ist in der Vorlagendefinition seines übergeordneten Stacks enthalten. Im Diagramm ist das LogicalId des WebInfra-Storage-DB untergeordneten Stapels DB in seinem übergeordneten WebInfra-Storage.
In der CloudFormation-Konsole finden Sie auch die logische ID in der Spalte Logical ID für die Stack-Ressource auf der Registerkarte Resources (Ressourcen) oder auf der Registerkarte Events (Ereignisse). Weitere Informationen finden Sie unter Anzeigen von Stack-Informationen über die CloudFormation-Konsole.