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 wird, ein Stack-Update rückgängig zu machen, kann es manchmal nicht alle während des Aktualisierungsvorgangs vorgenommenen Änderungen rückgängig machen. Dies wird als UPDATE_ROLLBACK_FAILED-Status bezeichnet. Möglicherweise haben Sie einen Stack, der mit dem Rollback auf eine alte Datenbankinstanz beginnt, die außerhalb von gelöscht wurde CloudFormation. 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 an AWS-Managementkonsole und öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie in der Navigationsleiste oben auf dem Bildschirm aus, AWS-Region wo 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 Behebung von Fehlern funktioniert hat, können Sie die erweiterte Option verwenden, um die Ressourcen zu überspringen, CloudFormation für die ein Rollback nicht erfolgreich durchgeführt werden konnte. Sie müssen die logische Reihenfolge IDs der Ressourcen, die Sie überspringen möchten, nachschlagen und eingeben. 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 setzt den Status der angegebenen Ressourcen auf
UPDATE_COMPLETEund setzt das 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 Stacks 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 StammStack namens WebInfra, der zwei kleinere Stack 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. Namen untergeordneter Stacks werden in der Regel durch eindeutige zufällige Zeichenketten generiert CloudFormation und enthalten diese, sodass tatsächliche Namen möglicherweise 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 die logische ID auch in der Spalte Logische ID für die Stack-Ressource auf der Registerkarte Ressourcen oder der Registerkarte Ereignisse. Weitere Informationen finden Sie unter Stack-Informationen von der CloudFormation Konsole aus anzeigen.