Optionen für Stack-Ausfall - AWS CloudFormation

Optionen für Stack-Ausfall

Sie können Ihre Anwendungen iterativ entwickeln, wenn Bereitstellungsfehler auftreten, indem Sie ab dem Fehlerpunkt beginnen, ohne erfolgreich bereitgestellte Ressourcen zurückzusetzen. Durch die Angabe von Stack-Fehleroptionen können Sie Ressourcen in einem CREATE_FAILED- oder UPDATE_FAILED-Status beheben. Sie können Fehleroptionen für alle Stack-Bereitstellungen und Änderungssatzvorgänge bereitstellen.

  • Erstellen von Vorgängen, die auf Erfolgreich bereitgestellte Ressourcen beibehalten festgelegt sind, behält den Status erfolgreicher Ressourcen bei, während fehlgeschlagene Ressourcen bis zum nächsten Aktualisierungsvorgang in einem fehlerhaften Zustand bleiben.

  • Aktualisierungs- und Änderungssatzvorgänge, die auf Erfolgreich bereitgestellte Ressourcen beibehalten festgelegt sind, erhalten den Status erfolgreicher Ressourcen, während fehlerhafte Ressourcen auf den letzten bekannten stabilen Zustand zurückgesetzt werden. Fehlgeschlagene Ressourcen befinden sich in einem UPDATE_FAILED-Status. Ressourcen ohne einen zuletzt bekannten stabilen Zustand werden beim nächsten Stack-Vorgang gelöscht.

In den folgenden Abschnitten finden Sie weitere Informationen zum Anhalten des Rollbacks fehlerhafter Ressourcen:

Überblick über Stack-Fehler-Optionen

Bevor Sie eine Operation von der AWS CloudFormation-Konsole, API oder AWS Command Line Interface (AWS CLI) aus ausführen, geben Sie das Verhalten für den Ausfall bereitgestellter Ressourcen an. Fahren Sie dann ohne weitere Änderungen mit dem Bereitstellungsprozess Ihrer Ressourcen fort. CloudFormation stoppt im Falle eines Betriebsausfalls beim ersten Ausfall in jedem unabhängigen Bereitstellungspfad. CloudFormation identifiziert Abhängigkeiten zwischen Ressourcen, um unabhängige Provisioning-Aktionen zu parallelisieren. Anschließend werden Ressourcen auf jedem unabhängigen Bereitstellungspfad bereitgestellt, bis ein Fehler auftritt. Ein Fehler in einem Pfad hat keine Auswirkungen auf andere Bereitstellungspfade. CloudFormation wird die Ressourcen weiterhin bis zur Fertigstellung bereitstellen oder bei einem anderen Ausfall beenden.

Beheben Sie alle Probleme, um den Bereitstellungsprozess fortzusetzen. CloudFormation führt die erforderlichen Aktualisierungen durch, bevor Bereitstellungsaktionen für Ressourcen erneut versucht werden, die zuvor nicht erfolgreich bereitgestellt werden konnten. Sie beheben Probleme, indem Sie Wiederholungs-, Update- oder Rollback-Vorgänge absenden. Wenn Sie beispielsweise eine Amazon EC2-Instance bereitstellen und die EC2-Instance während eines Erstellungsvorgangs ausfällt, sollten Sie den Fehler untersuchen, anstatt die ausgefallene Ressource sofort zurückzusetzen. Sie können Systemstatusprüfungen und Instanz-Statusprüfungen überprüfen und dann den Vorgang Wiederholung auswählen, sobald die Probleme behoben sind.

Wenn ein Stack-Vorgang fehlschlägt und Sie Erfolgreich bereitgestellte Ressourcen beibehalten im Menü Optionen für Stack-Fehler angegeben haben, können Sie die folgenden Optionen auswählen.

  • Wiederholung – wiederholt den Bereitstellungsvorgang für ausgefallene Ressourcen und setzt die Bereitstellung der Vorlage bis zum erfolgreichen Abschluss des Stack-Vorgangs oder zum nächsten Fehler fort. Wählen Sie diese Option aus, wenn die Ressource aufgrund eines Problems, das keine Änderungen an der Vorlage erfordert, wie z. B. einer AWS Identity and Access Management (IAM)-Berechtigung, nicht bereitgestellt wurde.

  • Aktualisieren –-Ressourcen, die bereitgestellt wurden, werden auf Vorlagenaktualisierungen aktualisiert. Bei Ressourcen, die nicht erstellt oder aktualisiert wurden, wird dies erneut versucht. Wählen Sie diese Option aus, wenn die Ressource aufgrund von Vorlagenfehlern nicht bereitgestellt werden konnte und Sie die Vorlage geändert haben. Wenn Sie einen Stack aktualisieren, der sich in einem FAILED-Status befindet, müssen Sie Erfolgreich bereitgestellte Ressourcen beibehalten für die Stack-Fehleroptionen auswählen, um Ihren Stack weiter zu aktualisieren.

  • Rollback–CloudFormation rollt den Stack auf den letzten bekannten stabilen Status zurück.

Bedingungen, um das Stack-Rollback anzuhalten

Um das Rollback fehlerhafter Ressourcen in Ihrem Stack anzuhalten, müssen die folgenden Bedingungen erfüllt sein.

  • Sie müssen den Parameter Erfolgreich bereitgestellte Ressourcen beibehalten während eines Stack-Vorgangs angeben. Weitere Informationen zum Rollback-Verhalten finden Sie unter Festlegen von AWS CloudFormation-Stack-Optionen.

  • Ein Stack-Vorgang muss einen Stack-Status von CREATE_FAILED oder UPDATE_FAILED haben. Informationen zum Stack-Status finden Sie unter Stack-Statuscodes.

Anmerkung

Unveränderliche Update-Typen werden nicht unterstützt.

Beibehalten erfolgreich bereitgestellter Ressourcen (Konsole)

Create stack

So bewahren Sie erfolgreich bereitgestellte Ressourcen während eines Stack-Erstellungsvorgangs auf

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie Create stack (Stack erstellen) und With new resources (standard) (Mit neuen Ressourcen (Standard)) aus.

  3. Wählen Sie auf der Seite Specify Template (Vorlage angeben) mithilfe einer der folgenden Optionen eine Stack-Vorlage aus:

    • Vorlage ist bereit

    • Verwenden einer Beispielvorlage

    • Erstellen einer Vorlage in Designer

    Akzeptiere Sie Ihre Einstellungen und wählen Sie Weiter.

  4. Geben Sie auf der Seite Specify stack details (Stack-Details angeben) einen Stack-Namen in das Feld Stack name (Stack-Name) ein.

  5. Geben Sie im Abschnitt Parameter die Parameter an, die in Ihrer Stack-Vorlage definiert sind.

    Sie können beliebige Parameter mit Standardwerten verwenden oder ändern.

  6. Wenn Sie mit den Parameterwerten zufrieden sind, wählen Sie Weiter.

  7. Auf der Seite Stack-Optionen konfigurieren können Sie zusätzliche Optionen für Ihren Stack festlegen.

  8. Wählen Sie für Stack-Fehler-Optionen die Option Erfolgreich bereitgestellte Ressourcen beibehalten.

  9. Wenn Sie mit den Stack-Optionen zufrieden sind, wählen Sie Weiter.

  10. Überprüfen Sie Ihren Stack auf der Seite Review und wählen Sie Stack erstellen aus.

Ergebnisse: Ressourcen, die es nicht geschafft haben, den Stack-Status zu CREATE_FAILED zu ändern, um zu verhindern, dass der Stack zurückgesetzt wird, wenn der Stack-Vorgang auf einen Fehler stößt. Ressourcen, die erfolgreich bereitgestellt wurden, befinden sich in einem CREATE_COMPLETE-Status. Sie können den Stack auf der Registerkarte Stack-Ereignisse überwachen.

Update stack

So behalten Sie erfolgreich bereitgestellte Ressourcen während eines Stack-Aktualisierungsvorgangs bei

  1. Melden Sie sich bei der AWS Management Console an und ö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, und wählen Sie dann Aktualisieren.

  3. Wählen Sie auf der Seite Stack aktualisieren mit einer der folgenden Optionen eine Stack-Vorlage aus:

    • Aktuelle Vorlage verwenden

    • Aktuelle Vorlage ersetzen

    • Bearbeiten einer Vorlage in Designer

    Akzeptiere Sie Ihre Einstellungen und wählen Sie Weiter.

  4. Geben Sie auf der Seite Stack-Details angeben Parameter an, die in Ihrer Stack-Vorlage definiert sind.

    Sie können beliebige Parameter mit Standardwerten verwenden oder ändern.

  5. Wenn Sie mit den Parameterwerten zufrieden sind, wählen Sie Weiter.

  6. Auf der Seite Stack-Optionen konfigurieren können Sie zusätzliche Optionen für Ihren Stack festlegen.

  7. Wählen Sie für das Verhalten bei Bereitstellungsfehler die Option Erfolgreich bereitgestellte Ressourcen beibehalten aus.

  8. Wenn Sie mit den Stack-Optionen zufrieden sind, wählen Sie Weiter.

  9. Überprüfen Sie Ihren Stack auf der Seite Review und wählen Sie Stack aktualisieren aus.

Ergebnisse: Ressourcen, die es nicht geschafft haben, den Stack-Status auf UPDATE_FAILED zu aktualisieren und in den letzten bekannten stabilen Zustand zurückkehren. Ressourcen ohne einen letzten bekannten stabilen Zustand werden von CloudFormation beim nächsten Stack-Vorgang gelöscht. Ressourcen, die erfolgreich bereitgestellt wurden, befinden sich in einem CREATE_COMPLETE- oderUPDATE_COMPLETE-Status. Sie können den Stack auf der Registerkarte Stack-Ereignisse überwachen.

Change set
Anmerkung

Sie können einen Änderungssatz für einen Stack mit dem Status CREATE_FAILEDoder UPDATE_FAILED, aber nicht für den Status von UPDATE_ROLLBACK_FAILED initiieren.

So bewahren Sie erfolgreich bereitgestellte Ressourcen während eines Änderungssatzvorgangs

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie den Stack aus, der den zu initiierenden Änderungssatz enthält, und wählen Sie dann die Registerkarte Änderungssätze.

  3. Markieren Sie den Änderungssatz und wählen Sie dann Ausführen.

  4. Wählen Sie für Änderungssatz ausführen die Option Erfolgreich bereitgestellte Ressourcen beibehalten.

  5. Wählen Sie Änderungssatz ausführen aus.

Ergebnisse: Ressourcen, die es nicht geschafft haben, den Stack-Status auf UPDATE_FAILED zu aktualisieren und in den letzten bekannten stabilen Zustand zurückkehren. Ressourcen ohne einen letzten bekannten stabilen Zustand werden von CloudFormation beim nächsten Stack-Vorgang gelöscht. Ressourcen, die erfolgreich bereitgestellt wurden, befinden sich in einem CREATE_COMPLETE- oderUPDATE_COMPLETE-Status. Sie können den Stack auf der Registerkarte Stack-Ereignisse überwachen.

Erfolgreich bereitgestellte Ressourcen beibehalten (AWS CLI)

Create stack

So behalten Sie erfolgreich bereitgestellte Ressourcen während eines Stack-Erstellungsvorgangs bei

Geben Sie die disable-rollback-Option oder on-failure DO_NOTHING-Aufzählung während eines create-stack-Vorgangs an.

  1. Geben Sie dem create-stack-Befehl einen Stack-Namen und eine Vorlage mit der disable-rollback-Option.

    aws cloudformation create-stack --stack-name myteststack --template-body file://DOC-EXAMPLE-BUCKET.json -–disable-rollback

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Beschreiben Sie den Status des Stacks mithilfe der describe-stacks-Option.

    aws cloudformation describe-stacks --stack-name myteststack

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "Stacks":  [
            {
                "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
                "Description": "AWS CloudFormation Sample Template",
                "Tags": [],
                "Outputs": [],
                "StackStatusReason": “The following resource(s) failed to create: [MyBucket]”,
                "CreationTime": "2013-08-23T01:02:15.422Z",
                "Capabilities": [],
                "StackName": "myteststack",
                "StackStatus": "CREATE_FAILED",
                "DisableRollback": true
            }
        ]
    }
Update stack

Zur Beibehaltung erfolgreich bereitgestellte Ressourcen während eines Stack-Aktualisierungsvorgangs

Geben Sie die disable-rollback-Option oder on-failure DO_NOTHING-Aufzählung während eines Stack-Aktualisierungsvorgangs an.

  1. Geben Sie dem update-stack-Befehl einen vorhandenen Stack-Namen und eine Vorlage mit der disable-rollback-Option an.

    aws cloudformation update-stack --stack-name myteststack --template-url DOC-EXAMPLE-BUCKET.template --disable-rollback

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Beschreiben Sie den Status des Stacks mit der Option describe-stacks oder describe-stack-events.

    aws cloudformation describe-stacks --stack-name myteststack

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "Stacks":  [
            {
                "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
                "Description": "AWS CloudFormation Sample Template",
                "Tags": [],
                "Outputs": [],
                "CreationTime": "2013-08-23T01:02:15.422Z",
                "Capabilities": [],
                "StackName": "myteststack",
                "StackStatus": "UPDATE_COMPLETE",
                "DisableRollback": true
            }
        ]
    }
Change set
Anmerkung

Sie können einen Änderungssatz für einen Stack mit dem Status CREATE_FAILED oder UPDATE_FAILED aber nicht für den Status von UPDATE_ROLLBACK_FAILED initiieren.

So bewahren Sie erfolgreich bereitgestellte Ressourcen während eines Änderungssatzvorgangs

Geben Sie die disable-rollback-Option oder on-failure DO_NOTHING-Aufzählung während eines execute-change-set-Vorgangs an.

  1. Geben Sie dem execute-change-set-Befehl einen Stack-Namen und eine Vorlage mit der disable-rollback-Option.

    aws cloudformation execute-change-set --stack-name myteststack --change-set-name my-change-set --template-body file://template.yaml

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
     "Id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/my-change-set/bc9555ba-a949-xmpl-bfb8-f41d04ec5784",
     "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Initiieren Sie den Änderungssatz mit Option disable-rollback.

    aws cloudformation execute-change-set --stack-name myteststack --change-set-name my-change-set -–disable-rollback
  3. Bestimmen Sie den Status des Stacks mithilfe der Option describe-stacks oder describe-stack-events.

    { "StackEvents": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "EventId": "49c966a0-7b74-11ea-8071-024244bb0672", "StackName": "myteststack", "LogicalResourceId": " MyBucket", "PhysicalResourceId": "MyBucket", "ResourceType": "AWS::S3::Bucket", "Timestamp": "2020-04-10T21:43:17.015Z", "ResourceStatus": "UPDATE_FAILED" "ResourceStatusReason": "User XYZ is not allowed to perform S3::UpdateBucket on MyBucket" } }
  4. Beheben Sie Berechtigungsfehler und wiederholen Sie den Vorgang.

    aws cloudformation update-stack --stack-name myteststack --use-previous-template --disable-rollback

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  5. Beschreiben Sie den Status des Stacks mit der Option describe-stacks oder describe-stack-events.

    aws cloudformation describe-stacks --stack-name myteststack

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "Stacks":  [
            {
                "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
                "Description": "AWS CloudFormation Sample Template",
                "Tags": [],
                "Outputs": [],
                "CreationTime": "2013-08-23T01:02:15.422Z",
                "Capabilities": [],
                "StackName": "myteststack",
                "StackStatus": "UPDATE_COMPLETE",
                "DisableRollback": true
            }
        ]
    }

Stack zurücksetzen

So setzen Sie einen Stack vom Stack-Status CREATE_FAILED oder UPDATE_FAILED zurück

Geben Sie den rollback-stack-Vorgang an, um einen Stack in seinen letzten stabilen Zustand zurückzusetzen.

  • Starten Sie ein Rollback mit dem rollback-stack-Vorgang und geben Sie den Stack-Namen an.

    aws cloudformation rollback-stack --stack-name myteststack

    Dieser Befehl gibt die folgende Ausgabe zurück.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
Anmerkung

Die rollback-stack-Operation löscht einen Stack, wenn er keinen letzten bekannten stabilen Zustand enthält.