AWS CloudFormation スタックが REVIEW_IN_PROGRESS 状態のままとなっているのはなぜですか?

最終更新日: 2022 年 4 月 12 日

AWS CloudFormation スタックが REVIEW_IN_PROGRESS 状態のままとなっています。

簡単な説明

REVIEW_IN_PROGRESS 状態のままとなっているスタックは、実行されなかった変更セットを使用してスタックを作成しようとしたことを示唆しています。新しいスタック用に変更セットを作成すると、CloudFormation によって一意のスタック ID が作成されますが、リソースは作成されません。変更セットを実行しない場合、スタックは REVIEW_IN_PROGRESS 状態のままとなります。

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

解決方法

任意の方法で変更セットを実行するには、次の手順を実行します。

AWS CloudFormation コンソールを使用する

  1. AWS CloudFormation コンソールを開きます。
  2. ナビゲーションペインで [Stacks] (スタック) を選択し、状態が変わらないスタックを見つけます。
  3. [Change Sets] (変更セット) タブを選択します。
  4. 最新の変更セットを選択し、変更内容をレビューします。
  5. [Execute] (実行) を選択してスタックを作成します。

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 を使用して [Create or replace a change set] (変更セットを作成または置換) アクションモードで CloudFormation にデプロイすると、変更セットのみが作成または置換されます。これは、自動的には実行されません。変更セットを実行するには、[Execute a change set] (変更セットを実行) アクションモードを追加する必要があります。

  1. AWS CodePipeline コンソールを開きます。
  2. CloudFormation にデプロイしているパイプラインを特定します。
  3. [Edit] (編集) を選択し、[Edit Deploy stage] (デプロイステージを編集) を選択します。
  4. [Add Action group] (アクショングループを追加) を選択します。
  5. [Action name] (アクション名) で、アクションの名前を入力します。
  6. [Action provider] (アクションプロバイダー) で、AWS CloudFormation を選択します。
  7. [Action mode] (アクションモード) で、[Execute a change set] (変更セットを実行) を選択します。
  8. [Save] (保存) を選択します。

AWS CLI を使用する

1.    次の get-pipeline コマンドを実行して、パイプライン構造を JSON ファイルにコピーします。

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

2.    [Deploy] (デプロイ) ステージで、[ActionMode] として [CHANGE_SET_EXECUTE] を追加します。

{
  "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

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?