CloudFormation スタックの変更セットを作成する
実行中のスタックの変更セットを作成するには、変更するテンプレート、新しい入力パラメータ値、またはその両方を提供して、変更内容を送信します。CloudFormation は、スタックを提出した変更と比較することにより、変更セットを生成します。
変更セットを作成する前、または変更セットの作成中にテンプレートを変更できます。
- Create a change set (console)
-
変更セットを作成するには
https://console.aws.amazon.com/cloudformation で CloudFormation コンソール を開きます。
-
画面上部にあるナビゲーションバーで、AWS リージョン を選択します。
-
[Stacks] ページで、変更セットを作成する実行中のスタックを選択します。
-
スタックの詳細ペインで、[スタックアクション]、[変更セットの作成] を順に選択します。
-
[スタック stack-name の変更セットの作成] ページで、次のいずれかを実行して入力パラメータ値を変更し、更新されたテンプレートの場所を指定するか、テンプレートを変更します。
| タスク |
アクション |
| 入力パラメータ値を変更するには |
[既存のテンプレートを使用する] を選択してから [次へ] を選択して、入力パラメータ値の入力または変更に進みます。 |
| 更新されたテンプレートの場所を指定するには |
テンプレートを変更した場合は、[既存のテンプレートを置き換える] を選択してから、次のいずれかを実行します。
-
Amazon S3 バケットに保存されているテンプレートの場合は、[Amazon S3 URL] を選択します。テンプレートの URL を入力するか貼り付けて、[次へ] を選択します。
バージョニング対応バケットにテンプレートがある場合は、URL に ?versionId=version-id を付加することでテンプレートの具体的なバージョンを指定できます。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バージョニングが有効なバケット内のオブジェクトの使用」を参照してください。
-
ローカルコンピュータに保存されているテンプレートの場合は、[テンプレートファイルをアップロード] を選択します。[ファイルの選択] を選択してファイルの場所に移動し、ファイルを選択して、[次へ] を選択します。
|
| テンプレートを変更するには |
テンプレートを変更していない場合は、[Infrastructure Composer でテンプレートを編集する] を選択してから、[Infrastructure Composer で編集] を選択します。AWS Infrastructure Composer にリダイレクトされます。テンプレートを編集したら、[変更セットを作成] を選択し、次に [確認して CloudFormation に移動する] を選択して [stack-name の変更セットを作成] ページに戻り、[次へ] を選択します。 |
-
[スタックの詳細を指定] ページで変更セットの名前を指定してから、[概要] ページでその目的を特定するための変更セットの説明をオプションで入力します。テンプレートにパラメータが含まれている場合、[Specify stack details (スタックの詳細を指定)] ページで、適用可能な入力パラメータ値を入力または変更し、[次へ] を選択します。
スタックのテンプレートを再利用する場合は、CloudFormation によって各パラメータにスタックの現在の値が入力されています。ただし、NoEcho 属性で宣言されているパラメータは除きます。これらのパラメータに既存の値を使用するには、[既存の値の使用] を選択します。
NoEcho を使用して機密情報をマスクする方法、および動的なパラメータを使用してシークレットを管理する方法の詳細については、「テンプレートに認証情報を埋め込まない」ベストプラクティスを参照してください。
-
[スタックオプションの設定] ページで、スタックのタグ、IAM サービスロール、スタックポリシー、ロールバック構成、Amazon SNS 通知トピック (該当する場合)、または変更セットを変更します。
ネストされたスタックの変更セットは、デフォルトで有効になっています。これにより、テンプレートで指定されているすべての入れ子スタックの変更セットが作成されます。現在のスタックにのみ変更セットを作成するには、[Disabled] を選択します。ネストされたスタックの変更セットに関する詳細については、「ネストされたスタックの変更セット」を参照してください。
-
テンプレートに IAM リソースが含まれる場合、[機能] で[I acknowledge that CloudFormation might create IAM resources (CloudFormation が IAM リソースを作成する可能性があることを確認します)] を選択します。IAM リソースは、AWS アカウントのアクセス許可を変更できます。これらのリソースを確認し、意図したアクションのみを許可していることを確認してください。詳細については、「CloudFormation テンプレートでの IAM リソースの承認」を参照してください。
-
[次へ] を選択して続行します。
-
[Review stack-name (stack-name の確認)] ページで、この変更セットの変更を確認します。
-
[Submit] を選択してください。
変更セットの詳細ページの [変更] タブにリダイレクトされます。CloudFormation が変更セットを生成する間、変更セットのステータスは CREATE_PENDING になります。変更セットが作成されると、CloudFormation によってステータスが CREATE_COMPLETE に設定されます。[Changes] (変更) セクションに、CloudFormation によってスタックに対するすべての変更のリストが表示されます。詳細については、「CloudFormation スタックの変更セットを表示する」を参照してください。
[プロパティレベルの変更] 列で [詳細を表示] を選択して、プロパティレベルで行われた変更を表示します。
CloudFormation で変更セットの作成に失敗した場合 (FAILED ステータスが報告された場合)、[Status] (状況) フィールドに表示されたエラーを修正して、変更セットを再作成します。
-
変更内容が正しいことを確認したら、[変更セットを実行] を選択します。
- Create a change set for nested stacks (console)
-
ネストされたスタックの変更セットを作成するには
-
https://console.aws.amazon.com/cloudformation で CloudFormation コンソール を開きます。
-
画面上部にあるナビゲーションバーで、AWS リージョン を選択します。
-
[スタック] ページで、変更セットを作成する実行中のスタックを選択します。
-
スタックの詳細ペインで、[スタックアクション]、[変更セットの作成] を順に選択します。
-
[スタック stack-name の変更セットの作成] ページで、次のいずれかを実行して入力パラメータ値を変更し、更新されたテンプレートの場所を指定するか、テンプレートを変更します。
| タスク |
アクション |
| 入力パラメータ値を変更するには |
[既存のテンプレートを使用する] を選択してから [次へ] を選択して、入力パラメータ値の入力または変更に進みます。 |
| 更新されたテンプレートの場所を指定するには |
テンプレートを変更した場合は、[既存のテンプレートを置き換える] を選択してから、次のいずれかを実行します。
-
Amazon S3 バケットに保存されているテンプレートの場合は、[Amazon S3 URL] を選択します。テンプレートの URL を入力するか貼り付けて、[次へ] を選択します。
バージョニング対応バケットにテンプレートがある場合は、URL に ?versionId=version-id を付加することでテンプレートの具体的なバージョンを指定できます。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バージョニングが有効なバケット内のオブジェクトの使用」を参照してください。
-
ローカルコンピュータに保存されているテンプレートの場合は、[テンプレートファイルをアップロード] を選択します。[ファイルの選択] を選択してファイルの場所に移動し、ファイルを選択して、[次へ] を選択します。
|
| テンプレートを変更するには |
テンプレートを変更していない場合は、[Infrastructure Composer でテンプレートを編集する] を選択してから、[Infrastructure Composer で編集] を選択します。AWS Infrastructure Composer にリダイレクトされます。テンプレートを編集したら、[変更セットを作成] を選択し、次に [確認して CloudFormation に移動する] を選択して [stack-name の変更セットを作成] ページに戻り、[次へ] を選択します。 |
-
[スタックの詳細を指定] ページで変更セットの名前を指定してから、[概要] ページでその目的を特定するための変更セットの説明をオプションで入力します。テンプレートにパラメータが含まれている場合、[Specify stack details (スタックの詳細を指定)] ページで、適用可能な入力パラメータ値を入力または変更し、[次へ] を選択します。
スタックのテンプレートを再利用する場合は、CloudFormation によって各パラメータにスタックの現在の値が入力されています。ただし、NoEcho 属性で宣言されているパラメータは除きます。これらのパラメータに既存の値を使用するには、[既存の値の使用] を選択します。
NoEcho を使用して機密情報をマスクする方法、また動的なパラメータを使用してシークレットを管理する方法の詳細については、「テンプレートに認証情報を埋め込まない」ベストプラクティスを参照してください。
-
[スタックオプションの設定] ページで、スタックのタグ、IAM サービスロール、スタックポリシー、ロールバック構成、Amazon SNS 通知トピック (該当する場合)、または変更セットを変更します。詳細については、「スタックオプションを設定する」を参照してください。
ネストされたスタックの変更セットは、デフォルトで有効になっています。これにより、テンプレートで指定されているすべての入れ子スタックの変更セットが作成されます。ネストされたスタックの変更セットに関する詳細については、「ネストされたスタックの変更セット」を参照してください。
-
テンプレートに IAM リソースが含まれる場合、[機能] で[I acknowledge that CloudFormation might create IAM resources (CloudFormation が IAM リソースを作成する可能性があることを確認します)] を選択します。IAM リソースは、AWS アカウントのアクセス許可を変更できます。これらのリソースを確認し、意図したアクションのみを許可していることを確認してください。詳細については、「CloudFormation テンプレートでの IAM リソースの承認」を参照してください。
-
[次へ] を選択して続行します。
-
[Review stack-name (stack-name の確認)] ページで、この変更セットの変更を確認します。
-
[Submit] を選択してください。
CloudFormation プロパティレベルの変更セットは、ネストされたスタックの変更セットを作成するときに、クロススタックリファレンスを解決しません。変更セットは、親スタックの出力を参照し、親スタックが変更された場合、条件付き置換のために子スタックのリソースをマークできます
変更セットの詳細ページの [変更] タブにリダイレクトされます。CloudFormation が変更セットを生成する間、変更セットのステータスは CREATE_PENDING になります。変更セットが作成されると、CloudFormation によってステータスが CREATE_COMPLETE に設定されます。[Changes] (変更) セクションに、CloudFormation によってスタックに対するすべての変更のリストが表示されます。詳細については、「CloudFormation スタックの変更セットを表示する」を参照してください。
CloudFormation で変更セットの作成に失敗した場合 (FAILED ステータスが報告された場合)、[Status] (状況) フィールドに表示されたエラーを修正して、変更セットを再作成します。
-
変更内容が正しいことを確認したら、[変更セットを実行] を選択します。
変更セットを作成するには (AWS CLI)
-
create-change-set コマンドを使用します。
変更はコマンドオプションとして送信します。新しいパラメータ値、修正済みのテンプレート、または両方を指定できます。たとえば、次のコマンドで 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"
プロパティ構文の検証とリソース名の競合検出に加えて、変更セットの作成では、サービスクォータの制限、レコーダーの競合、ECR リポジトリの削除の準備状況のチェックも行われます。これらのチェックは WARN モードで動作します。CloudFormation は変更セットを正常に作成しますが、警告は潜在的な問題を示します。変更セットを実行する前に、これらの問題に対処することをお勧めします。
Express モード
Express モードを使用する変更セットを作成するには、--deployment-config パラメータを追加します。
aws cloudformation create-change-set --stack-name MyStack \
--change-set-name MyExpressChangeSet \
--use-previous-template \
--deployment-config '{"mode": "EXPRESS"}'
この変更セットを実行すると、CloudFormation は Express モードを使用し、設定が適用されるとすぐにリソースオペレーションを完了します。詳細については、「Express モード」を参照してください。