

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

実行中のスタックの変更セットを作成するには、変更するテンプレート、新しい入力パラメータ値、またはその両方を提供して、変更内容を送信します。CloudFormation は、スタックを提出した変更と比較することにより、変更セットを生成します。

変更セットを作成する前、または変更セットの作成中にテンプレートを変更できます。

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

**変更セットを作成するには**

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

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

1. **[Stacks]** ページで、変更セットを作成する実行中のスタックを選択します。

1. スタックの詳細ペインで、**[スタックアクション]**、**[変更セットの作成]** を順に選択します。

1. [**スタック *stack-name* の変更セットの作成**] ページで、次のいずれかを実行して入力パラメータ値を変更し、更新されたテンプレートの場所を指定するか、テンプレートを変更します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets-create.html)

1. **[スタックの詳細を指定]** ページで変更セットの名前を指定してから、**[概要]** ページでその目的を特定するための変更セットの説明をオプションで入力します。テンプレートにパラメータが含まれている場合、[**Specify stack details (スタックの詳細を指定)**] ページで、適用可能な入力パラメータ値を入力または変更し、[**次へ**] を選択します。

   スタックのテンプレートを再利用する場合は、CloudFormation によって各パラメータにスタックの現在の値が入力されています。ただし、`NoEcho` 属性で宣言されているパラメータは除きます。これらのパラメータに既存の値を使用するには、[**既存の値の使用**] を選択します。

   `NoEcho` を使用して機密情報をマスクする方法、および動的なパラメータを使用してシークレットを管理する方法の詳細については、「[テンプレートに認証情報を埋め込まない](security-best-practices.md#creds)」ベストプラクティスを参照してください。

1. [**スタックオプションの設定**] ページで、スタックのタグ、IAM サービスロール、スタックポリシー、ロールバック構成、Amazon SNS 通知トピック (該当する場合)、または変更セットを変更します。
**注記**  
ネストされたスタックの変更セットは、デフォルトで**有効**になっています。これにより、テンプレートで指定されているすべての入れ子スタックの変更セットが作成されます。現在のスタックにのみ変更セットを作成するには、[**Disabled**] を選択します。ネストされたスタックの変更セットに関する詳細については、「[ネストされたスタックの変更セット](change-sets-for-nested-stacks.md)」を参照してください。

1. テンプレートに IAM リソースが含まれる場合、[**機能**] で[**I acknowledge that CloudFormation might create IAM resources (CloudFormation が IAM リソースを作成する可能性があることを確認します)**] を選択します。IAM リソースは、AWS アカウントのアクセス許可を変更できます。これらのリソースを確認し、意図したアクションのみを許可していることを確認してください。詳細については、「[CloudFormation テンプレートでの IAM リソースの承認](control-access-with-iam.md#using-iam-capabilities)」を参照してください。

1. [**次へ**] を選択して続行します。

1. [**Review *stack-name* (stack-name の確認)**] ページで、この変更セットの変更を確認します。

1. [**Submit**] を選択してください。

   変更セットの詳細ページの [**変更**] タブにリダイレクトされます。CloudFormation が変更セットを生成する間、変更セットのステータスは `CREATE_PENDING` になります。変更セットが作成されると、CloudFormation によってステータスが `CREATE_COMPLETE` に設定されます。[**Changes**] (変更) セクションに、CloudFormation によってスタックに対するすべての変更のリストが表示されます。詳細については、「[CloudFormation スタックの変更セットを表示する](using-cfn-updating-stacks-changesets-view.md)」を参照してください。

   **[プロパティレベルの変更]** 列で **[詳細を表示]** を選択して、プロパティレベルで行われた変更を表示します。

   CloudFormation で変更セットの作成に失敗した場合 (`FAILED` ステータスが報告された場合)、[**Status**] (状況) フィールドに表示されたエラーを修正して、変更セットを再作成します。

1. 変更内容が正しいことを確認したら、**[変更セットを実行]** を選択します。

------
#### [ Create a change set for nested stacks (console) ]

**ネストされたスタックの変更セットを作成するには**

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

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

1. **[スタック]** ページで、変更セットを作成する実行中のスタックを選択します。

1. スタックの詳細ペインで、**[スタックアクション]**、**[変更セットの作成]** を順に選択します。

1. [**スタック *stack-name* の変更セットの作成**] ページで、次のいずれかを実行して入力パラメータ値を変更し、更新されたテンプレートの場所を指定するか、テンプレートを変更します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets-create.html)

1. **[スタックの詳細を指定]** ページで変更セットの名前を指定してから、**[概要]** ページでその目的を特定するための変更セットの説明をオプションで入力します。テンプレートにパラメータが含まれている場合、[**Specify stack details (スタックの詳細を指定)**] ページで、適用可能な入力パラメータ値を入力または変更し、[**次へ**] を選択します。

   スタックのテンプレートを再利用する場合は、CloudFormation によって各パラメータにスタックの現在の値が入力されています。ただし、`NoEcho` 属性で宣言されているパラメータは除きます。これらのパラメータに既存の値を使用するには、[**既存の値の使用**] を選択します。

   `NoEcho` を使用して機密情報をマスクする方法、また動的なパラメータを使用してシークレットを管理する方法の詳細については、「[テンプレートに認証情報を埋め込まない](security-best-practices.md#creds)」ベストプラクティスを参照してください。

1. [**スタックオプションの設定**] ページで、スタックのタグ、IAM サービスロール、スタックポリシー、ロールバック構成、Amazon SNS 通知トピック (該当する場合)、または変更セットを変更します。詳細については、「[スタックオプションを設定する](cfn-console-create-stack.md#configure-stack-options)」を参照してください。
**注記**  
ネストされたスタックの変更セットは、デフォルトで**有効**になっています。これにより、テンプレートで指定されているすべての入れ子スタックの変更セットが作成されます。ネストされたスタックの変更セットに関する詳細については、「[ネストされたスタックの変更セット](change-sets-for-nested-stacks.md)」を参照してください。

1. テンプレートに IAM リソースが含まれる場合、[**機能**] で[**I acknowledge that CloudFormation might create IAM resources (CloudFormation が IAM リソースを作成する可能性があることを確認します)**] を選択します。IAM リソースは、AWS アカウントのアクセス許可を変更できます。これらのリソースを確認し、意図したアクションのみを許可していることを確認してください。詳細については、「[CloudFormation テンプレートでの IAM リソースの承認](control-access-with-iam.md#using-iam-capabilities)」を参照してください。

1. [**次へ**] を選択して続行します。

1. [**Review *stack-name* (stack-name の確認)**] ページで、この変更セットの変更を確認します。

1. [**Submit**] を選択してください。
**注記**  
CloudFormation プロパティレベルの変更セットは、ネストされたスタックの変更セットを作成するときに、クロススタックリファレンスを解決しません。変更セットは、親スタックの出力を参照し、親スタックが変更された場合、条件付き置換のために子スタックのリソースをマークできます

   変更セットの詳細ページの [**変更**] タブにリダイレクトされます。CloudFormation が変更セットを生成する間、変更セットのステータスは `CREATE_PENDING` になります。変更セットが作成されると、CloudFormation によってステータスが `CREATE_COMPLETE` に設定されます。[**Changes**] (変更) セクションに、CloudFormation によってスタックに対するすべての変更のリストが表示されます。詳細については、「[CloudFormation スタックの変更セットを表示する](using-cfn-updating-stacks-changesets-view.md)」を参照してください。

   CloudFormation で変更セットの作成に失敗した場合 (`FAILED` ステータスが報告された場合)、[**Status**] (状況) フィールドに表示されたエラーを修正して、変更セットを再作成します。

1. 変更内容が正しいことを確認したら、**[変更セットを実行]** を選択します。

------

**変更セットを作成するには (AWS CLI)**
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html) コマンドを使用します。

  変更はコマンドオプションとして送信します。新しいパラメータ値、修正済みのテンプレート、または両方を指定できます。たとえば、次のコマンドで `SampleChangeSet` スタックの `MyStack` という名前の変更セットが作成されます。変更セットは現在のスタックのテンプレートを使用しますが、`Purpose` パラメータの値が異なります。

  ```
  aws cloudformation create-change-set --stack-name MyStack \
      --change-set-name SampleChangeSet --use-previous-template \
      --parameters \
        ParameterKey="InstanceType",UsePreviousValue=true ParameterKey="KeyPairName",UsePreviousValue=true ParameterKey="Purpose",ParameterValue="production"
  ```