为什么我的 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 命令行界面(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 官方已更新 3 年前