Warum bleibt mein AWS-CloudFormation-Stack im Status REVIEW_IN_PROGRESS hängen?

Lesedauer: 3 Minute
0

Mein AWS-CloudFormation-Stack bleibt im Status REVIEW_IN_PROGRESS hängen.

Kurzbeschreibung

Wenn ein Stack im Status REVIEW_IN_PROGRESS hängen bleibt, haben Sie versucht, den Stack mit einem Änderungssatz zu erstellen, der nicht ausgeführt wurde. Wenn Sie einen Änderungssatz für einen neuen Stack erstellen, erzeugt CloudFormation eine eindeutige Stack-ID, aber keine Ressourcen. Wenn Sie den Änderungssatz nicht ausführen, verbleibt der Stack im Status REVIEW_IN_PROGRESS.

**Hinweis:**Wenn beim Ausführen von Befehlen in AWS CLI Fehler auftreten, stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden.

Lösung

Gehen Sie wie folgt vor, um einen Änderungssatz mit Ihrer bevorzugten Methode auszuführen.

Verwenden der AWS-CloudFormation-Konsole

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

Verwenden von 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

Verwenden der AWS-CodePipeline-Konsole

Wenn Sie AWS CodePipeline für die Bereitstellung in CloudFormation mit dem Aktionsmodus Einen Änderungssatz erstellen oder ersetzen verwenden, wird nur der Änderungssatz erstellt oder ersetzt. Er wird nicht automatisch ausgeführt. Um den Änderungssatz auszuführen, müssen Sie den Aktionsmodus Einen Änderungssatz ausführen hinzufügen.

  1. Öffnen Sie die AWS-CodePipeline-Konsole.
  2. Identifizieren Sie die Pipeline, die auf CloudFormation bereitstellt.
  3. Wählen Sie Bearbeiten und anschließend Bereitstellungsphase bearbeiten.
  4. Wählen Sie Aktionsgruppe hinzufügen.
  5. Geben Sie im Feld Aktionsname den Namen Ihrer Aktion ein.
  6. Wählen Sie als Aktionsanbieter AWS CloudFormation aus.
  7. Wählen Sie für den Aktionsmodus die Option Einen Änderungssatz ausführen aus.
  8. Wählen Sie Speichern.

Verwenden von 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 in der Bereitstellungsphase 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 2 Jahren