ネストされたスタックの変更セット
ネストされたスタックの変更セットを使用すると、ネストされたスタック階層全体でアプリケーションとインフラストラクチャリソースに対する変更をプレビューし、すべての変更が意図したとおりに行われたことを確認してから、更新を続行できます。
ネストされたスタックの変更セットの詳細については、次のセクションを参照してください:
変更セットとネストされたスタックの概要
ネストされたスタックの変更セットは、次の機能を組み合わせて、スタック階層全体に対する変更をプレビューする範囲を拡大します。
-
変更セットは、スタックへの提案された変更が既存または新しく作成されたリソースにどのように影響するかをプレビューする CloudFormation の機能です。変更セットを作成すると、提出したリソースに対する変更とスタックを比較して、CloudFormation は提案された変更のリストを提供します。変更セットの詳細は、「 変更セットを使用してスタックを更新する 」を参照してください。
-
ネストされたスタックは、他のスタックの一部として作成されたスタックです。ネストされたスタックを作成するには、テンプレートの
Resource
セクションで AWS::CloudFormation::Stack リソースを指定します。たとえば、あるネストされたスタックにネットワークおよびセキュリティ関連のリソースがあり、別のスタックにアプリケーションリソースがあるとします。この方法でアプリケーションモデルをパーティション化すると、コードの保守性と再利用に役立ちます。ネストされたスタックの詳細については、「 ネストされたスタックを使用する 」を参照してください。
ネストされたスタックの変更セットの操作 (コンソール)
-
変更セットを作成する – スタック階層の任意のレベルから変更を送信して、変更セットを作成します。変更したスタックテンプレートまたは変更した入力パラメータ値を送信すると、CloudFormation はネストされたスタックを変更セットを生成するために送信した変更と比較します。ネストされたスタックの変更セットは、デフォルトで CloudFormation コンソールで有効になります。詳細については、「変更セットの作成」を参照してください。
注記
ルート変更セットは、変更セットの階層全体が作成されるスタックに関連付けられた変更セットです。ネストされたスタックの変更セットを、ルート変更セットから実行または削除する必要があります。
-
変更セットを表示– ネストされたスタック内のリソースに対する変更を、 実行する前に可視化します。現在のスタックとそのネストされた変更セットを移動すると、変更セットの変更セクションに、提案された変更を表示できます。詳細は、「 変更セットの表示 」を参照してください。
-
変更セットの実行– 現在のスタックとその子孫に関する変更セットに記載されている変更を実行します。実行オペレーションはルート変更セットから実行する必要があります。詳細は、「 変更セットの実行 」を参照してください。
-
変更セットを削除– 現在のスタックから変更セットを削除します。変更セットを削除すると、自分または他のユーザーが誤って適用すべきでない変更セットを開始するのを防ぐことができます。削除オペレーションはルート変更セットから実行する必要があります。詳細については、「変更セットの削除」を参照してください。
ネストされたスタックの変更セットの操作 (AWS CLI)
-
create-change-set
- ネストされたスタックの変更セットは、デフォルトで AWS CLI で有効になっていません。スタック階層全体の変更セットを作成するには、--include-nested-stacks
パラメータを指定します。詳細については、「変更セットを作成するには (AWS CLI)」を参照してください。
次の AWS CLI の例は、create-change-set
入力です。
aws cloudformation create-change-set \ --stack-name
my-root-stack
\ --change-set-namemy-root-stack-change-set
\ --template-bodyfile://template.yaml
\ --capabilities CAPABILITY_IAM \ --include-nested-stacks
次の AWS CLI の例は、create-change-set
出力です。
{ "Id":"arn:aws:cloudformation:us-west-2:123456789012:changeSet/
my-root-stack-change-set
/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:Stack/my-root-stack
/d0a825a0-e4cd-xmpl-b9fb-061c69e99204" }
-
describe-change-set
– 変更セットを実行した場合に CloudFormation が行う変更のリストを返します。指定された変更セットに、ネストされたスタックに属する子変更セットが含まれている場合、ChangeSetId
はその変更セットに関する情報を返します。詳細については、「変更セットを表示するには (AWS CLI)」を参照してください。
次の AWS CLI の例は、ルートスタック変更セットに対する describe-change-set
の入力です。
aws cloudformation describe-change-set \ --change-set-name
my-root-stack-change-set
\ --stack-namemy-root-stack
次の AWS CLI の例は、ルートスタック変更セットにに対する describe-change-set
の出力です。
{ "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "ChildStack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/
my-nested-stack
/d0a825a0-e4cd-xmpl-b9fb-061c69e99205", "ResourceType": "AWS::CloudFormation::Stack", "Replacement": "False", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-nested-stack-change-set
/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "Scope": [ "Properties" ], "Details": [ { "Target": { "Attribute": "Properties", "RequiresRecreation": "Never" }, "Evaluation": "Dynamic", "ChangeSource": "Automatic" } ] } } ], "ChangeSetName": "my-root-stack-change-set
", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set
/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-root-stack
/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "StackName": "my-root-stack
", "IncludeNestedStacks": true, "ParentChangeSetId": null, "RootChangeSetId": null, "Description": null, "Parameters": null, "CreationTime": "2020-11-18T05:20:56.651Z", "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": null, "NotificationARNs": [ ], "RollbackConfiguration": { }, "Capabilities": [ "CAPABILITY_IAM" ], "Tags": null }
次の AWS CLI の例は、ネストされたスタック変更セットに対する describe-change-set
の入力です。
aws cloudformation describe-change-set \ --change-set-name
my-nested-stack-change-set
\ --stack-namemy-nested-stack
次の AWS CLIの例は、ネストされたスタック変更セットに対する describe-change-set
の出力です。
{ "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "function", "PhysicalResourceId": "my-function", "ResourceType": "AWS::Lambda::Function", "Replacement": "False", "ChangeSetId": null, "Scope": [ "Properties" ], "Details": [ { "Target": { "Attribute": "Properties", "Name": "Timeout", "RequiresRecreation": "Never" }, "Evaluation": "Static", "ChangeSource": "DirectModification" } ] } } ], "ChangeSetName": "
my-nested-stack-change-set
", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-nested-stack-change-set
/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-nested-stack
/d0a825a0-e4cd-xmpl-b9fb-061c69e99205", "ParentChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set
/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "RootChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set
/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "IncludeNestedStacks": true, "StackName": "my-nested-stack
", "Description": null, "Parameters": null, "CreationTime": "2020-11-18T05:20:56.651Z", "ExecutionStatus": "UNAVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": "Executable from root change set", "NotificationARNs": [ ], "RollbackConfiguration": { }, "Capabilities": [ "CAPABILITY_IAM" ], "Tags": null }
-
execute-change-set
– 指定された変更セットの作成時に提供された入力情報を使い、スタックを作成または更新します。スタック階層全体に対して変更セットを作成するには、create-change-set
プロセス中に–include-nested-stacks
パラメータを指定する必要があります。詳細については、「変更セットを実行するには (AWS CLI)」を参照してください。注記
execute-change-set
はルート変更セットから実行する必要があり、スタックの階層全体に変更セットを適用します。
次の AWS CLI の例は、execute-change-set
入力です。
aws cloudformation execute-change-set \ --stack-name
my-root-stack
\ --change-set-namemy-root-stack-change-set
-
delete-change-set
– 指定された変更セットを削除します。変更セットを削除することで、誤った変更セットの実行を防止できます。–include-nested-stacks
パラメータを使用して作成された変更セットでは、変更セットの削除は非同期になります。詳細については、「変更セットを削除するには (AWS CLI)」を参照してください。注記
delete-change-set
はルート変更セットから実行する必要があり、変更セットの階層全体を削除します。REVIEW_IN_PROGRESS
ステータスのネストされたスタックは、create-change-set
オペレーション中に作成された場合にも削除されます。
次の AWS CLI の例は、ルート変更セットに対する delete-change-set
の入力です。
aws cloudformation delete-change-set \ --stack-name
my-root-stack
\ --change-set-namemy-root-stack-change-set