Warum steckt mein AWS CloudFormation-Stack im Status REVIEW_IN_PROGRESS fest?

Lesedauer: 3 Minute
0

Mein AWS CloudFormation-Stack steckt im Status REVIEW_IN_PROGRESS fest.

Kurzbeschreibung

Ein Stack, der im Status REVIEW_IN_PROGRESS feststeckt, bedeutet, dass Sie versucht haben, den Stack mit einem Änderungssatz zu erstellen, der nicht ausgeführt wurde. Wenn Sie einen Änderungssatz für einen neuen Stack erstellen, erstellt CloudFormation eine eindeutige Stack-ID, jedoch keine Ressourcen. Wenn Sie den Änderungssatz nicht ausführen, bleibt der Stack im Status REVIEW_IN_PROGRESS.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

Auflösung

Führen Sie die folgenden Schritte aus, um einen Änderungssatz mit der von Ihnen bevorzugten Methode auszuführen.

Mit der AWS-CloudFormation-Konsole

  1. Öffnen Sie die AWS-CloudFormation-Konsole.
  2. Wählen Sie im Navigationsbereich Stacks aus, und suchen Sie dann den Stack, der feststeckt.
  3. Wählen Sie die Registerkarte Change sets (Änderungssätze) aus.
  4. Wählen Sie den neuesten Änderungssatz aus und überprüfen Sie die Änderungen.
  5. Wählen Sie Execute (Ausführen) aus, um den Stack zu erstellen.

Mit der AWS Command Line Interface (AWS CLI)

1.    Führen Sie den folgenden list-change-sets-Befehl aus, um alle Änderungssätze aufzulisten:

aws cloudformation list-change-sets --stack-name StackName

2.    Identifizieren Sie den Änderungssatz und führen Sie den folgenden execute-change-set-Befehl aus:

aws cloudformation execute-change-set –change-set-name ChangeSetName

Mit der AWS-CodePipeline-Konsole

Durch die Verwendung von AWS CodePipeline zur Bereitstellung in CloudFormation mit dem Aktionsmodus Create or replace a change set (Änderungssatz erstellen oder ersetzen) wird nur der Änderungssatz erstellt oder ersetzt. Er wird nicht automatisch ausgeführt. Um den Änderungssatz auszuführen, müssen Sie den Aktionsmodus Execute a change set (Änderungssatz ausführen) hinzufügen.

  1. Öffnen Sie die AWS-CodePipeline-Konsole.
  2. Identifizieren Sie die Pipeline, die in CloudFormation bereitgestellt wird.
  3. Wählen Sie Edit (Bearbeiten) aus und dann Edit Deploy stage (Bereitstellungs-Stufe bearbeiten).
  4. Wählen Sie Add Action group (Aktionsgruppe hinzufügen) aus.
  5. Geben Sie für Action name (Aktionsnamen) den Namen Ihrer Aktion ein.
  6. Wählen Sie für Action provider (Aktionsanbieter) AWS CloudFormation aus.
  7. Wählen Sie für Action mode (Aktionsmodus) Execute a change set (Änderungssatz ausführen) aus.
  8. Wählen Sie Save (Speichern) aus.

Mit der AWS CLI

1.    Führen Sie den folgenden get-pipeline-Befehl aus, um die Pipeline-Struktur in eine JSON-Datei zu kopieren:

aws codepipeline get-pipeline --name MyPipeline >pipeline.json

2.    Fügen Sie CHANGE_SET_EXECUTE als ActionMode im Deploy-Schritt hinzu:

{
  "name": "Deploy",
  "blockers": null,
  "actions": [
    {
      "name": "Deploy",
      "actionTypeId": {
        "category": "Deploy",
        "owner": "AWS",
        "provider": "CloudFormation",
        "version": "1"
      },
      "runOrder": 1,
      "configuration": {
        "TemplatePath": "SourceArtifact::ssm.yml",
        "ActionMode": "CHANGE_SET_REPLACE",
        "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
        "ChangeSetName": "CFNTest-CS",
        "RoleArn": "arn:aws:iam::xxxxx:role/xxx",
        "StackName": "CFNTest"
      },
      "outputArtifacts": [],
      "inputArtifacts": [
        {
          "name": "SourceArtifact"
        }
      ],
      "roleArn": null,
      "region": "us-east-1",
      "namespace": "DeployVariables"
    },
    {
      "name": "ExecuteChangeSet",
      "actionTypeId": {
        "category": "Deploy",
        "owner": "AWS",
        "provider": "CloudFormation",
        "version": "1"
      },
      "runOrder": 2,
      "configuration": {
        "ActionMode": "CHANGE_SET_EXECUTE",
        "ChangeSetName": "CFNTest-CS",
        "StackName": "CFNTest"
      },
      "outputArtifacts": [],
      "inputArtifacts": [
        {
          "name": "SourceArtifact"
        }
      ],
      "roleArn": null,
      "region": "us-east-1",
      "namespace": null
    }
  ]
}

3.    Führen Sie den folgenden update-pipeline-Befehl aus, um die Pipeline in eine JSON-Datei zu kopieren:

aws codepipeline update-pipeline --cli-input-json file://pipeline.json

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr