為什麼我的 AWS CloudFormation 堆疊卡在 REVIEW_IN_PROGRESS 狀態?

2 分的閱讀內容
0

我的 AWS CloudFormation 堆疊卡在 REVIEW_IN_PROGRESS 狀態。

簡短描述

如果堆疊停留在 REVIEW_IN_PROGRESS 狀態,表示您已使用未執行的變更集嘗試建立堆疊。當您建立新堆疊的變更集時,CloudFormation 會建立唯一的堆疊 ID,但不會建立資源。如果您不執行變更集,堆疊即會保持在 REVIEW_IN_PROGRESS 狀態。

注意: 如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新的 AWS CLI 版本

解決方案

完成以下步驟,即可使用偏好的方法執行變更集。

使用 AWS CloudFormation 主控台

  1. 開啟 AWS CloudFormation 主控台
  2. 在導覽窗格中,選擇堆疊,然後找到卡住的堆疊。
  3. 選擇變更集標籤。
  4. 選取最新的變更集並檢閱各項變更。
  5. 選擇執行以建立堆疊。

使用 AWS Command Line Interface (AWS CLI)

  1. 執行以下 list-change-sets 命令,以列出所有變更集:

    aws cloudformation list-change-sets --stack-name StackName
  2. 識別變更集,然後執行以下 execute-change-set 命令:

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

使用 AWS CodePipeline 主控台

透過建立或取代變更集動作模式使用 AWS CodePipeline 部署至 CloudFormation,只會建立或取代變更集。它不會自動執行。若要執行變更集,您必須新增執行變更集動作模式。

  1. 開啟 AWS CodePipeline 主控台
  2. 識別正在部署至 CloudFormation 的管道。
  3. 選擇編輯,然後選擇編輯部署階段
  4. 選擇新增動作群組
  5. 動作名稱中,輸入動作的名稱。
  6. 動作提供者中,選取 AWS CloudFormation。
  7. 動作模式中,選取執行變更集
  8. 選擇儲存

使用 AWS CLI

  1. 執行以下 get-pipeline 命令,將管道結構複製到 JSON 檔案中:

    aws codepipeline get-pipeline --name MyPipeline >pipeline.json
  2. 將 CHANGE_SET_EXECUTE 新增為部署階段中的 ActionMode

    {
      "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. 執行以下 update-pipeline 命令,將管道複製到 JSON 檔案中:

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json
AWS 官方
AWS 官方已更新 2 年前