

# CloudFormation スタックの変更セットを表示する
<a name="using-cfn-updating-stacks-changesets-view"></a>

変更セットの作成後、実行前に目的の変更を確認できます。変更セットの表示には CloudFormation コンソール、AWS CLI、または CloudFormation API を使用できます。CloudFormation コンソールは、変更の概要、および JSON 形式の変更の詳細なリストを提供します。AWS CLI および AWS CloudFormation API は、JSON 形式の変更の詳細なリストを返します。

------
#### [ View a change set (console) ]

**変更セットを表示するには**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソール を開きます。

1. 画面上部にあるナビゲーションバーで、AWS リージョン を選択します。

1. [**Stacks**] ページで、表示する変更セットを含むスタックの名前を選択します。

1. ナビゲーションペインで、[**変更セット**] を選択して、スタックの変更セットのリストを表示します。

1. 表示する変更セットの名前を選択します。

   CloudFormation コンソールに変更セットの詳細ページが表示されます。ここで変更セットの作成時刻、ステータス、変更セットの生成に使用された入力、および変更の要約を確認できます。

   [**Changes**] (変更) セクションの各行は、CloudFormation が追加、変更、削除するリソースを表します。
   + **Add** (追加) – スタックのテンプレートにリソースを追加すると、CloudFormation によってリソースが作成されます。
   + **Modify** (変更) – スタックのテンプレート内のリソースのプロパティを変更すると、CloudFormation はリソースを変更します。
   + **Remove** (削除) – スタックのテンプレートから既存のリソースを削除すると、CloudFormation によってリソースが削除されます。
**注記**  
変更によってリソースが中断されたり置き換え (再作成) されたりすることがあります。リソースの更新動作の詳細については、[スタックリソースの更新動作を理解する](using-cfn-updating-stacks-update-behaviors.md)を参照してください。

   特定の変更に注目するには、フィルタビューを使用します。たとえば、`AWS::EC2::Instance` などの特定のリソースタイプをフィルタリングします。特定のリソースをフィルタリングするには、`myWebServer` や `i-123abcd4` のような論理 ID または物理 ID を指定します。

1. **[変更]** セクションで、**[プロパティレベルの変更]** 列にある **[詳細を表示]** を選択して、リソースに対して行われたプロパティ値の変更を表示します。

1. CloudFormation コンソールがリソースのプロパティレベルの変更ページを表示します。このページでは、変更セットを実行する前のリソースのテンプレート設定と、変更セットを実行した後のテンプレート設定を確認できます。

   [**プロパティレベルの変更**] セクションの表には、影響を受けるプロパティの [**パス**]、[**変更タイプ**]、[**変更前の値**]、および [**変更後の値**] が表示されます。この表で、テンプレートの **[変更前]** ビューと **[変更後]** ビューで強調表示したい各変更のチェックボックスを選択して、プロパティレベルでどのような変更が行われるのかを確認します。
   + **追加** – 追加されたプロパティは緑色で強調表示されます。
   + **変更** – 変更されたプロパティは青色で強調表示されます。
   + **削除** – 削除されたプロパティは赤で強調表示されます。

------
#### [ View a change set for nested stack (console) ]

**ネストされたスタックの変更セットを表示するには (コンソール)**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソール を開きます。

1. 画面上部にあるナビゲーションバーで、AWS リージョン を選択します。

1. [**Stacks**] ページで、表示する変更セットを含むスタックの名前を選択します。

1. ナビゲーションペインで **[変更セット]** を選択して、スタックの変更セットのリストを表示します。

1. 表示する変更セットの名前を選択します。

   CloudFormation コンソールに変更セットの詳細ページが表示されます。ここで変更セットの作成時刻、ステータス、変更セットの生成に使用された入力、および変更の要約を確認できます。

   [**Changes**] (変更) セクションの各行は、CloudFormation が動的な状態を追加、変更、削除、表示するリソースを表します。
   + **Add** (追加) – スタックのテンプレートにリソースを追加すると、CloudFormation によってリソースが作成されます。
   + **Modify** (変更) – スタックのテンプレート内のリソースのプロパティを変更すると、CloudFormation はリソースを変更します。
   + **Remove** (削除) – スタックのテンプレートから既存のリソースを削除すると、CloudFormation によってリソースが削除されます。
   + **Dynamic** – CloudFormation はネストされたスタックのテンプレートから正確なリソース変更アクションを特定できません。
**注記**  
変更によってリソースが中断されたり置き換え (再作成) されたりすることがあります。リソースの更新動作の詳細については、[スタックリソースの更新動作を理解する](using-cfn-updating-stacks-update-behaviors.md)を参照してください。

   特定の変更に注目するには、フィルタビューを使用します。たとえば、**AWS::CloudFormation::Stack** などの特定のリソースタイプをフィルタリングします。特定のリソースをフィルタリングするには、**DeadLetterQueue** や **NestedStack** のような論理 ID または物理 ID を指定します。

1. [**Changes**] セクションで、表示するネストされた変更セットの [**View nested change set**] を選択します。

   CloudFormation コンソールによって、ネストされた変更セットの詳細ページへ移動します。[**Go to root change set**] を選択してルート変更セットを表示するか、[**View parent change set**] を選択して親変更セットを表示できます。詳細については、「[ネストされたスタックの変更セット](change-sets-for-nested-stacks.md)」を参照してください。
**注記**  
CloudFormation プロパティレベルの変更セットは、ネストされたスタックの変更セットを作成するときに、クロススタックリファレンスを解決しません。変更セットは、親スタックの出力を参照し、親スタックが変更された場合、条件付き置換のために子スタックのリソースをマークできます

------

**変更セットを表示するには (AWS CLI)**

1. 変更セットの ID を取得するには、[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-change-sets.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-change-sets.html) コマンドを実行します。

   次の例のように、表示する変更セットがあるスタックの名前を指定します。

   ```
   aws cloudformation list-change-sets --stack-name {{MyStack}}
   ```

   CloudFormation から、次のような変更セットのリストが返されます。

   ```
   {
       "Summaries": [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000",
               "Status": "CREATE_COMPLETE",
               "ChangeSetName": "SampleChangeSet",
               "CreationTime": "2020-11-18T20:44:05.889Z",
               "StackName": "MyStack",
               "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet/1a2345b6-0000-00a0-a123-00abc0abc000"
           },
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000",
               "Status": "CREATE_COMPLETE",
               "ChangeSetName": "SampleChangeSet-conditional",
               "CreationTime": "2020-11-18T21:15:56.398Z",
               "StackName": "MyStack",
               "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet-conditional/1a2345b6-0000-00a0-a123-00abc0abc000"
           },
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000",
               "Status": "CREATE_COMPLETE",
               "ChangeSetName": "SampleChangeSet-replacement",
               "CreationTime": "2020-11-18T21:03:37.706Z",
               "StackName": "MyStack",
               "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet-replacement/1a2345b6-0000-00a0-a123-00abc0abc000"
           }
       ]
   }
   ```

1. 表示する変更セットの ID を指定して [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html) コマンドを実行します。例えば、次のようになります。

   ```
   aws cloudformation describe-change-set \
     --change-set-name {{arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet/1a2345b6-0000-00a0-a123-00abc0abc000}}
   ```

   CloudFormation から、指定された変更セットに関する情報が返されます。

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000",
       "Status": "CREATE_COMPLETE",
       "ChangeSetName": "SampleChangeSet-direct",
       "Parameters": [
           {
               "ParameterValue": "testing",
               "ParameterKey": "Purpose"
           },
           {
               "ParameterValue": "ellioty-useast1",
               "ParameterKey": "KeyPairName"
           },
           {
               "ParameterValue": "t2.micro",
               "ParameterKey": "InstanceType"
           }
       ],
       "Changes": [
           {
               "ResourceChange": {
                   "ResourceType": "AWS::EC2::Instance",
                   "PhysicalResourceId": "i-1abc23d4",
                   "Details": [
                       {
                           "ChangeSource": "DirectModification",
                           "Evaluation": "Static",
                           "Target": {
                               "Attribute": "Tags",
                               "RequiresRecreation": "Never"
                           }
                       }
                   ],
                   "Action": "Modify",
                   "Scope": [
                       "Tags"
                   ],
                   "LogicalResourceId": "MyEC2Instance",
                   "Replacement": "False"
               },
               "Type": "Resource"
           }
       ],
       "CreationTime": "2020-11-18T23:35:25.813Z",
       "Capabilities": [],
       "StackName": "MyStack",
       "NotificationARNs": [],
       "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet-direct/9edde307-960d-4e6e-ad66-b09ea2f20255"
   }
   ```

   `--include-property-values` を **describe-change-set** とともに使用して、プロパティレベルの変更を一覧表示します。

   `Changes` キーリストはリソースを変更します。この変更セットを実行した場合、CloudFormation によって `i-1abc23d4` EC2 インスタンスのタグが更新されます。各フィールドの説明については、「AWS CloudFormation API リファレンス」の「[https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Change.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Change.html) データ型」を参照してください。

   変更セットのその他の例については、[CloudFormation スタックの変更セットの例](using-cfn-updating-stacks-changesets-samples.md)を参照してください。

**変更セット内のプロパティレベルの変更を表示する (AWS CLI)**
+ 以下のコマンドは、`Ipv4Prefixes` プロパティを削除し、リソースの `Description` を変更して、`Tag` を追加する、`AWS::EC2::NetworkInterface` リソースの変更セットに関連するプロパティレベルの変更を一覧表示します。

  ```
  aws cloudformation describe-change-set --include-property-values \
    --change-set-name {{arn:aws:cloudformation:us-east-1:123456789012:changeSet/ExampleChangeSet/9f7b541b-126b-44f7-998e-932174557841}}
  ```

  以下は出力の例です。

  ```
  "ChangeSetName": "ExampleChangeSet",
      "ChangeSetId": "arn:aws:cloudformation:us-east-1:803642222207:changeSet/ExampleChangeSet/9f7b541b-126b-44f7-998e-932174557841",
      "StackId": "arn:aws:cloudformation:us-east-1:803642222207:stack/ExampleStack/ab664180-f686-11ee-9e29-12cd92393671",
      "StackName": "ExampleStack",
      "Description": null,
      "Parameters": null,
      "CreationTime": "2024-04-09T18:04:59.935000+00:00",
      "ExecutionStatus": "AVAILABLE",
      "Status": "CREATE_COMPLETE",
      "StatusReason": null,
      "NotificationARNs": [],
      "RollbackConfiguration": {
          "RollbackTriggers": []
      },
      "Capabilities": [],
      "Tags": null,
      "ParentChangeSetId": null,
      "IncludeNestedStacks": true,
      "RootChangeSetId": null,
      "OnStackFailure": null,
   {
      "Changes": [
          {
              "Type": "Resource",
              "ResourceChange": {
                  "Action": "Modify",
                  "LogicalResourceId": "EC2NetworkInterface00eni067fd35b649a05b7100Tpyls",
                  "PhysicalResourceId": "eni-067fd35b649a05b71",
                  "ResourceType": "AWS::EC2::NetworkInterface",
                  "Replacement": "False",
                  "Scope": [
                      "Properties",
                      "Tags"
                  ],
                  "Details": [
                      {
                          "Target": {
                              "Attribute": "Properties",
                              "Name": "Ipv4Prefixes",
                              "RequiresRecreation": "Never",
                              "Path": "/Properties/Ipv4Prefixes",
                              "BeforeValue": "[]",
                              "AttributeChangeType": "Remove"
                          },
                          "Evaluation": "Static",
                          "ChangeSource": "DirectModification"
                      },
                      {
                          "Target": {
                              "Attribute": "Properties",
                              "Name": "Description",
                              "RequiresRecreation": "Never",
                              "Path": "/Properties/Description",
                              "BeforeValue": "",
                              "AfterValue": "Description",
                              "AttributeChangeType": "Modify"
                          },
                          "Evaluation": "Static",
                          "ChangeSource": "DirectModification"
                      },
                      {
                          "Target": {
                              "Attribute": "Tags",
                              "RequiresRecreation": "Never",
                              "Path": "/Properties/Tags/0",
                              "AfterValue": "{\"Key\":\"Test\",\"Value\":\"Test\"}",
                              "AttributeChangeType": "Add"
                          },
                          "Evaluation": "Static",
                          "ChangeSource": "DirectModification"
                      }
                  ],
                  "BeforeContext": "{\"Properties\":{\"Description\":\"\",\"PrivateIpAddress\":\"172.31.76.2\",\"PrivateIpAddresses\":[{\"PrivateIpAddress\":\"172.31.76.2\",\"Primary\":\"true\"}],\"SecondaryPrivateIpAddressCount\":\"0\",\"Ipv6PrefixCount\":\"0\",\"Ipv4Prefixes\":[],\"Ipv4PrefixCount\":\"0\",\"GroupSet\":[\"sg-05a45689b1059e82d\"],\"Ipv6Prefixes\":[],\"SubnetId\":\"subnet-455e8969\",\"SourceDestCheck\":\"true\",\"InterfaceType\":\"interface\",\"Tags\":[]},\"UpdateReplacePolicy\":\"Retain\",\"DeletionPolicy\":\"Retain\"}",
                  "AfterContext": "{\"Properties\":{\"Description\":\"Description\",\"PrivateIpAddress\":\"172.31.76.2\",\"PrivateIpAddresses\":[{\"PrivateIpAddress\":\"172.31.76.2\",\"Primary\":\"true\"}],\"SecondaryPrivateIpAddressCount\":\"0\",\"Ipv6PrefixCount\":\"0\",\"Ipv4PrefixCount\":\"0\",\"GroupSet\":[\"sg-05a45689b1059e82d\"],\"Ipv6Prefixes\":[],\"SubnetId\":\"subnet-455e8969\",\"SourceDestCheck\":\"true\",\"InterfaceType\":\"interface\",\"Tags\":[{\"Value\":\"Test\",\"Key\":\"Test\"}]},\"UpdateReplacePolicy\":\"Retain\",\"DeletionPolicy\":\"Retain\"}"
              }
          }
      ],
      "ChangeSetName": "ExampleChangeSet",
      "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/ExampleChangeSet/9f7b541b-126b-44f7-998e-932174557841",
      "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/ExampleStack/ab664180-f686-11ee-9e29-12cd92393671",
  ```