Rollback einer Aktualisierung fortsetzen - AWS CloudFormation

Rollback einer Aktualisierung fortsetzen

Ein Stack wird in den Zustand UPDATE_ROLLBACK_FAILED versetzt, wenn AWS CloudFormation während einer Aktualisierung nicht für alle Änderungen ein Rollback ausführen kann. 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.

Wenn ein Stack den Status UPDATE_ROLLBACK_FAILED hat, können Sie mit dem Rollback fortfahren, um ihn in einen betriebsbereiten Zustand (UPDATE_ROLLBACK_COMPLETE) zu versetzen. Sie können einen Stack mit dem Status UPDATE_ROLLBACK_FAILED nicht aktualisieren. Wenn es jedoch möglich ist, mit dem Rollback fortzufahren, können Sie den Stack auf seine ursprünglichen Einstellungen zurücksetzen und dann erneut versuchen, ihn 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)
  1. Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie den Stack aus, den Sie aktualisieren möchten, klicken Sie auf Stack-Aktionen und anschließend auf Continue update rollback (Rollback der Aktualisierung fortsetzen) aus.

    Wenn keine der Lösungen in den Hinweisen zur Fehlerbehebung funktioniert hat, können Sie die erweiterte Option verwenden, um die Ressourcen zu überspringen, die CloudFormation nicht erfolgreich durch einen Rollback-Vorgang zurücksetzen konnte. Sie müssen logischen IDs der Ressourcen nachschlagen und eingeben, die Sie überspringen möchten. Geben Sie nur Ressourcen an, die während des UpdateRollback-Vorgangs und nicht während der Weiterleitung der Aktualisierung in den Zustand UPDATE_FAILED versetzt wurden.

    Warnung

    CloudFormation legt den Status der angegebenen Ressourcen auf UPDATE_COMPLETE fest 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: NestedStackName.ResourceLogicalID. Wenn Sie die logische ID einer Stack-Ressource (Type: AWS::CloudFormation::Stack) in der ResourcesToSkip-Liste angeben möchten, dass muss sich der zugehörige eingebettete Stapel in einem der folgenden Zustände befinden: DELETE_IN_PROGRESS, DELETE_COMPLETE oder DELETE_FAILED.

So setzen Sie den Rollback einer Aktualisierung fort (AWS CLI)

Unter Verwendung von ResourcesToSkip eine verschachtelte Stack-Hierarchie wiederherstellen

Das folgende Diagramm zeigt eine verschachtelte Stack-Hierarchie, die den Status UPDATE_ROLLBACK_FAILED hat. In diesem Beispiel enthält der WebInfra-Root-Stack zwei geschachtelte Stacks: WebInfra-Compute und WebInfra-Storage, die wiederum einen oder mehrere verschachtelte Stacks enthalten.


        Ein Diagramm, das eine verschachtelte Stack-Hierarchie mit drei Ebenen zeigt.
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 unter Verwendung von continue-update-rollback in einen betriebsbereiten Status zu versetzen, müssen Sie den resources-to-skip angeben, um die fehlgeschlagenen Rollback-Ressourcen zu überspringen. In diesem Beispiel umfasst resources-to-skip die folgenden Elemente:

  1. myCustom

  2. WebInfra-Compute-Asg.myAsg

  3. WebInfra-Compute-LB.myLoadBalancer

  4. WebInfra-Storage.DB

Im folgenden Beispiel wird der vollständige AWS CLI-Befehl verwendet:

PROMPT> aws cloudformation continue-update-rollback --stack-name WebInfra --resources-to-skip myCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB

Beachten Sie, dass wir Ressourcen aus verschachtelten Stacks im Format NestedStackName.ResourceLogicalID angegebenen haben, für die Ressourcen des Root-Stacks, z. B. myCustom, wurde jedoch nur die logische ID angegeben.

Ermitteln des Stack-Namens eines verschachtelten Stacks

Sie können den Namen eines untergeordneten Stacks dem Namen der Stack-ID oder seinem Amazon-Ressourcennamen (ARN) entnehmen. Im folgenden Beispiel lautet der Stack-Name WebInfra-Storage-Z2VKC706XKXT:

arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd

Ermitteln der logischen ID eines verschachtelten Stacks

Die logische ID eines untergeordneten Stacks ist in der Vorlagendefinition seines übergeordneten Stacks enthalten. Im Diagramm entspricht die LogicalId des untergeordneten Stacks WebInfra-Storage-DB der Zeichenfolge DB im ü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).