AWS CLI と PowerShell を使用して CloudFormation スタックを作成、更新、削除する - AWS CloudFormation

AWS CLI と PowerShell を使用して CloudFormation スタックを作成、更新、削除する

次のコマンドライン例は、AWS CLI と PowerShell を使用して個々の CloudFormation アクションを実行する方法を示しています。これらの例には、最も一般的に使用されるアクションのみ含まれています。詳細な一覧については、「AWS CloudFormation API リファレンス」を参照してください。

スタックの更新をキャンセルする

cancel-update-stack コマンドを使用して、スタックの更新をキャンセルします。詳細については、「スタック更新をキャンセルする」を参照してください。

CLI
AWS CLI

進行中のスタック更新をキャンセルする

以下の cancel-update-stack コマンドは、myteststack スタックで行われているスタック更新をキャンセルします。

aws cloudformation cancel-update-stack --stack-name myteststack
  • API の詳細については、「AWS CLI コマンドリファレンス」の「CancelUpdateStack」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックで行われている更新をキャンセルします。

Stop-CFNUpdateStack -StackName "myStack"
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「CancelUpdateStack」を参照してください。

更新のロールバックを続ける

continue-update-rollback コマンドを使用して更新のロールバックを続行します。詳細については、「更新のロールバックを続ける」を参照してください。

CLI
AWS CLI

更新のロールバックを再試行する

以下の continue-update-rollback 例は、前回失敗したスタック更新からのロールバック操作を再開します。

aws cloudformation continue-update-rollback \ --stack-name my-stack

このコマンドでは何も出力されません。

  • API の詳細については、「AWS CLI コマンドリファレンス」の「ContinueUpdateRollback」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックのロールバックを続行します。このスタックの状態は「UPDATE_ROLLBACK_FAILED」になっている必要があります。続行されたロールバックが成功すると、スタックの状態が「UPDATE_ROLLBACK_COMPLETE」になります。

Resume-CFNUpdateRollback -StackName "myStack"
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「ContinueUpdateRollback」を参照してください。

Stack を作成する

create-stack コマンドを使用してスタックを作成します。スタック名、有効なテンプレートの場所、入力パラメーターが必要です。パラメータキーの名前では大文字と小文字が区別されます。パラメータキーの名前を誤って入力した場合、CloudFormation はスタックを作成せず、テンプレートにそのパラメータが含まれていないことを報告します。

デフォルトでは、describe-stacks コマンドはパラメータの値が返します。パスワードなど、機密を要するパラメータ値が返されないようにするには、CloudFormation テンプレートで、NoEcho プロパティを TRUE に設定します。

重要

NoEcho 属性を使用しても、以下に保存されている情報はマスクされません。

  • Metadata テンプレートセクション。CloudFormation は、Metadata セクションに含める情報の変換、変更、または編集を行いません。詳細については、「Metadata」を参照してください。

  • Outputs テンプレートセクション。詳細については、「Outputs」を参照してください。

  • リソース定義の Metadata 属性。詳細については、「Metadata 属性」を参照してください。

パスワードやシークレットなどの機密情報を含めるには、これらのメカニズムを使用しないことを強くお勧めします。

重要

機密情報は、CloudFormation テンプレートに直接埋め込むのではなく、スタックテンプレートの動的パラメータを使用して CloudFormation の外部 (AWS Systems Manager パラメータストアや AWS Secrets Manager など) に保存して管理した上で 参照することをお勧めします。

詳細については、「テンプレートに認証情報を埋め込まない のベストプラクティス」を参照してください。

以下の例は、指定された名前、テンプレート、および入力パラメータを使用して新しいスタックを作成する方法を示しています。

CLI
AWS CLI

AWS CloudFormation スタックを作成する

以下の create-stacks コマンドは、sampletemplate.json テンプレートを使用して myteststack という名前のスタックを作成します。

aws cloudformation create-stack --stack-name myteststack --template-body file://sampletemplate.json --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2

出力:

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }

詳細については、「AWS CloudFormation ユーザーガイド」の「スタック」を参照してください。

  • API の詳細については、「AWS CLI コマンドリファレンス」の「CreateStack」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定された名前を使用して新しいスタックを作成します。テンプレートは、カスタマイゼーションパラメータを使用して、提供されたコンテンツから解析されます (「PK1」と「PK2」はテンプレートコンテンツで宣言されたパラメータの名前を表し、「PV1」と「PV2」はこれらのパラメータの値を表します)。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。スタックの作成に失敗しても、スタックはロールバックされません。

New-CFNStack -StackName "myStack" ` -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" }) ` -DisableRollback $true

例 2: 指定された名前を使用して新しいスタックを作成します。テンプレートは、カスタマイゼーションパラメータを使用して、提供されたコンテンツから解析されます (「PK1」と「PK2」はテンプレートコンテンツで宣言されたパラメータの名前を表し、「PV1」と「PV2」はこれらのパラメータの値を表します)。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。スタックの作成に失敗すると、スタックがロールバックされます。

$p1 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p1.ParameterKey = "PK1" $p1.ParameterValue = "PV1" $p2 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p2.ParameterKey = "PK2" $p2.ParameterValue = "PV2" New-CFNStack -StackName "myStack" ` -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( $p1, $p2 ) ` -OnFailure "ROLLBACK"

例 3: 指定された名前を使用して新しいスタックを作成します。テンプレートは、カスタマイゼーションパラメータを使用して、Amazon S3 URL から取得されます (「PK1」はテンプレートコンテンツで宣言されたパラメータの名前を表し、「PV1」はパラメータの値を表します)。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。スタックの作成に失敗すると、スタックがロールバックされます (-DisableRollback $false を指定する場合と同じです)

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

例 4: 指定された名前を使用して新しいスタックを作成します。テンプレートは、カスタマイゼーションパラメータを使用して、Amazon S3 URL から取得されます (「PK1」はテンプレートコンテンツで宣言されたパラメータの名前を表し、「PV1」はパラメータの値を表します)。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。スタックの作成に失敗すると、スタックがロールバックされます (-DisableRollback $false を指定する場合と同じです)。指定された通知 AEN は、公開されたスタック関連のイベントを受け取ります。

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } ` -NotificationARN @( "arn1", "arn2" )
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「CreateStack」を参照してください。

代替手段として、テンプレートファイルの AWS Systems Manager の場所を指定することもできます。

AWS CLI

以下の create-stack コマンドは、テンプレート URL に AWS Systems Manager ドキュメントを使用して、myteststack という名前のスタックを作成します。

aws cloudformation create-stack --stack-name myteststack \ --template-url "ssm-doc://arn:aws:ssm:us-east-1:123456789012:document/documentName"

出力:

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }

変換が含まれるスタックを作成する

deploy コマンドを使用して、変換が含まれるスタックを作成します。

変換が含まれるテンプレートからスタックを作成するには、変更セットを使用する必要があります。変更セットを作成してから開始する代わりに、deploy コマンドを使用してこれらのステップを単一のコマンドにまとめます。

AWS CLI

以下の deploy コマンドは、指定された名前、テンプレート、および入力パラメータを使用してスタックを作成します。

aws cloudformation deploy --stack-name myteststack \ --template /path_to_template/my-template.json \ --parameter-overrides Key1=Value1 Key2=Value2

スタックを削除する

delete-stack コマンドを使用してスタックを削除します。詳細については、「CloudFormation コンソールからスタックを削除する」を参照してください。

CLI
AWS CLI

スタックを削除する

以下の delete-stack 例は、指定されたスタックを削除します。

aws cloudformation delete-stack \ --stack-name my-stack

このコマンドでは何も出力されません。

  • API の詳細については、「AWS CLI コマンドリファレンス」の「DeleteStack」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックを削除します。

Remove-CFNStack -StackName "myStack"
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「DeleteStack」を参照してください。

削除が失敗して DELETE_FAILED 状態が返された場合は、--deletion-mode オプションを強制的に使用することでスタックの削除を選択できます。deletion-mode で使用できる値は次のとおりです:

  • STANDARD: スタックを通常どおり削除します。これはデフォルトの削除モードです。

  • FORCE_DELETE_STACK: スタックを削除し、削除に失敗したすべてのリソースをスキップします。

AWS CLI

次の delete-stack コマンドは、deletion-mode パラメータの FORCE_DELETE_STACK 値を使用して myteststack スタックを強制的に削除します。

aws cloudformation delete-stack --stack-name myteststack \ --deletion-mode FORCE_DELETE_STACK

このコマンドでは何も出力されません。

FORCE_DELETE_STACK を使用した後は、list-stack-resources コマンドを使用して、スタックの削除プロセス中にスキップされたリソースを一覧表示することができます。保持されたリソースには DELETE_SKIPPED ステータスが表示されます。詳細については、「スタックリソースを一覧表示する」を参照してください。

スタックイベントを記述する

describe-stack-events コマンドを使用して、スタックイベントを記述します。詳細については、「スタックの進行状況を監視する」を参照してください。

CLI
AWS CLI

スタックイベントを記述する

以下の describe-stack-events 例は、指定されたスタックの最新イベントを 2 件表示します。

aws cloudformation describe-stack-events \ --stack-name my-stack \ --max-items 2 { "StackEvents": [ { "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4e1516d0-e4d6-xmpl-b94f-0a51958a168c", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.556Z", "ResourceStatus": "UPDATE_COMPLETE" }, { "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4dd3c810-e4d6-xmpl-bade-0aaf8b31ab7a", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.127Z", "ResourceStatus": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS" } ], "NextToken": "eyJOZXh0VG9XMPLiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ==" }
  • API の詳細については、「AWS CLI コマンドリファレンス」の「DescribeStackEvents」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックに関するすべてのスタック関連イベントを返します。

Get-CFNStackEvent -StackName "myStack"

例 2: 指定されたトークンから始まる手動ページングを使用して、指定されたスタックに関するすべてのスタック関連イベントを返します。次のページの開始トークンは、呼び出しごとに取得されます。$null は、取得するイベントが残っていないことを示します。

$nextToken = $null do { Get-CFNStack -StackName "myStack" -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「DescribeStackEvents」を参照してください。

スタックリソースを記述する

CLI
AWS CLI

リソースに関する情報を取得する

以下の describe-stack-resource 例は、指定されたスタック内にある MyFunction という名前のリソースに関する詳細情報を表示します。

aws cloudformation describe-stack-resource \ --stack-name MyStack \ --logical-resource-id MyFunction

出力:

{ "StackResourceDetail": { "StackName": "MyStack", "StackId": "arn:aws:cloudformation:us-east-2:123456789012:stack/MyStack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "MyFunction", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "Metadata": "{}", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } }
  • API の詳細については、「AWS CLI コマンドリファレンス」の「DescribeStackResource」を参照してください。

PowerShell
Tools for PowerShell

例 1: 論理 ID「MyDBInstance」を使用して、指定されたスタックに関連付けられているテンプレートで識別されたリソースの説明を返します。

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「DescribeStackResource」を参照してください。

スタックリソースを記述する

CLI
AWS CLI

リソースに関する情報を取得する

次の describe-stack-resources 例は、指定されたスタック内にあるリソースの詳細情報を表示します。

aws cloudformation describe-stack-resources \ --stack-name my-stack

出力:

{ "StackResources": [ { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "Timestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "Timestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "Timestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
  • API の詳細については、「AWS CLI コマンドリファレンス」の「DescribeStackResources」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックに関連付けられている最大 100 個のリソースの AWS リソース説明を返します。スタックに関連付けられているすべてのリソースの詳細情報を取得するには、Get-CFNStackResourceSummary を使用します。これは、結果の手動ページングもサポートしています。

Get-CFNStackResourceList -StackName "myStack"

例 2: 論理 ID「Ec2Instance」を使用して、指定されたスタックに関連付けられているテンプレートで識別された Amazon EC2 インスタンスの説明を返します。

Get-CFNStackResourceList -StackName "myStack" -LogicalResourceId "Ec2Instance"

例 3: インスタンス ID「i-123456」で識別される Amazon EC2 インスタンスが含まれるスタックに関連付けられた、最大 100 個のリソースの説明を返します。スタックに関連付けられているすべてのリソースの詳細情報を取得するには、Get-CFNStackResourceSummary を使用します。これは、結果の手動ページングもサポートしています。

Get-CFNStackResourceList -PhysicalResourceId "i-123456"

例 4: スタックのテンプレートで論理 ID「Ec2Instance」によって識別される Amazon EC2 インスタンスの説明を返します。スタックは、スタックに含まれるリソースの物理リソース ID を使用して識別され、この場合はインスタンス ID が「i-123456」の Amazon EC2 インスタンスも含まれます。テンプレートのコンテンツによっては、スタックの識別に異なる物理リソース (Amazon S3 バケットなど) を使用することもできます。

Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"
  • API の詳細については、「AWS Tools for PowerShell API リファレンス」の「DescribeStackResources」を参照してください。

スタックを記述する

CLI
AWS CLI

AWS CloudFormation スタックを説明する

以下の describe-stacks 例は、myteststack スタックの概要情報を表示します。

aws cloudformation describe-stacks --stack-name myteststack

出力:

{ "Stacks": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Tags": [], "Outputs": [ { "Description": "Name of S3 bucket to hold website content", "OutputKey": "BucketName", "OutputValue": "myteststack-s3bucket-jssofi1zie2w" } ], "StackStatusReason": null, "CreationTime": "2013-08-23T01:02:15.422Z", "Capabilities": [], "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE", "DisableRollback": false } ] }

詳細については、「AWS CloudFormation ユーザーガイド」の「スタック」を参照してください。

  • API の詳細については、「AWS CLI コマンドリファレンス」の「DescribeStacks」を参照してください。

Go
SDK for Go V2
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

// StackOutputs defines a map of outputs from a specific stack. type StackOutputs map[string]string type CloudFormationActions struct { CfnClient *cloudformation.Client } // GetOutputs gets the outputs from a CloudFormation stack and puts them into a structured format. func (actor CloudFormationActions) GetOutputs(stackName string) StackOutputs { output, err := actor.CfnClient.DescribeStacks(context.TODO(), &cloudformation.DescribeStacksInput{ StackName: aws.String(stackName), }) if err != nil || len(output.Stacks) == 0 { log.Panicf("Couldn't find a CloudFormation stack named %v. Here's why: %v\n", stackName, err) } stackOutputs := StackOutputs{} for _, out := range output.Stacks[0].Outputs { stackOutputs[*out.OutputKey] = *out.OutputValue } return stackOutputs }
  • API の詳細については、「AWS SDK for Go API リファレンス」の「DescribeStacks」を参照してください。

PowerShell
Tools for PowerShell

例 1: ユーザーのスタックのすべてを記述するスタックインスタンスのコレクションを返します。

Get-CFNStack

例 2: 指定されたスタックを記述するスタックインスタンスを返します。

Get-CFNStack -StackName "myStack"

例 3: 手動ページングを使用して、ユーザーのスタックのすべてを記述するスタックインスタンスのコレクションを返します。次のページの開始トークンは、呼び出しごとに取得されます。$null は、取得する詳細情報が残っていないことを示します。

$nextToken = $null do { Get-CFNStack -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「DescribeStacks」を参照してください。

テンプレートを取得する

CLI
AWS CLI

AWS CloudFormation スタックのテンプレート本文を表示する

以下の get-template 例は、myteststack スタックのテンプレートを表示します。

aws cloudformation get-template --stack-name myteststack

出力:

{ "TemplateBody": { "AWSTemplateFormatVersion": "2010-09-09", "Outputs": { "BucketName": { "Description": "Name of S3 bucket to hold website content", "Value": { "Ref": "S3Bucket" } } }, "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead" } } } } }
  • API の詳細については、「AWS CLI コマンドリファレンス」の「GetTemplate」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックに関連付けられているテンプレートを返します。

Get-CFNTemplate -StackName "myStack"
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「GetTemplate」を参照してください。

スタックリソースを一覧表示する

CLI
AWS CLI

スタック内のリソースを一覧表示する

以下のコマンドは、指定されたスタック内にあるリソースのリストを表示します。

aws cloudformation list-stack-resources \ --stack-name my-stack

出力:

{ "StackResourceSummaries": [ { "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "LastUpdatedTimestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "LastUpdatedTimestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
  • API の詳細については、「AWS CLI コマンドリファレンス」の「ListStackResources」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたスタックに関連付けられているすべてのリソースの説明を返します。

Get-CFNStackResourceSummary -StackName "myStack"

例 2: 結果の手動ページングを使用して、指定されたスタックに関連付けられているすべてのリソースの説明を返します。次のページの開始トークンは、呼び出しごとに取得されます。$null は、取得する詳細情報が残っていないことを示します。

$nextToken = $null do { Get-CFNStackResourceSummary -StackName "myStack" -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「ListStackResources」を参照してください。

スタックを一覧表示する

list-stacks コマンドを使用して、スタックを一覧表示します。指定されたステータスコードを持つスタックだけを一覧表示するには、--stack-status-filter オプションを含めてください。--stack-status-filter オプションには、1 つ、または複数のスタックステータスコードを指定できます。詳細については、「スタックステータスコード」を参照してください。

CLI
AWS CLI

AWS CloudFormation スタックを一覧表示する

以下の list-stacks コマンドは、ステータスが CREATE_COMPLETE になっているすべてのスタックの概要を表示します。

aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE

出力:

[ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "TemplateDescription": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "StackStatusReason": null, "CreationTime": "2013-08-26T03:27:10.190Z", "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE" } ]
  • API の詳細については、「AWS CLI コマンドリファレンス」の「ListStacks」を参照してください。

PowerShell
Tools for PowerShell

例 1: すべてのスタックの概要情報を返します。

Get-CFNStackSummary

例 2: 現在作成中のすべてのスタックの概要情報を返します。

Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"

例 3: 現在作成中または更新中のすべてのスタックの概要情報を返します。

Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")

例 4: 結果の手動ページングを使用して、現在作成中または更新中のすべてのスタックの概要情報を返します。次のページの開始トークンは、呼び出しごとに取得されます。$null は、取得する詳細情報が残っていないことを示します。

$nextToken = $null do { Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS") -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「ListStacks」を参照してください。

スタックを更新する

update-stack コマンドを使用して、スタックを直接更新します。更新するスタック、パラメータ値、機能を指定し、更新されたテンプレートを使用する場合はテンプレートの名前も指定します。詳細については、「スタックを直接更新する」を参照してください。

CLI
AWS CLI

AWS CloudFormation スタックを更新する

以下の update-stack コマンドは、mystack スタックのテンプレートと入力パラメータを更新します。

aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,ParameterValue=SampleKeyPair ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2

以下の update-stack コマンドは、mystack スタックの SubnetIDs パラメータ値のみを更新します。パラメータ値を指定しない場合は、テンプレートで指定されているデフォルト値が使用されます。

aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2

以下の update-stack コマンドは、mystack スタックに 2 つのスタック通知トピックを追加します。

aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns "arn:aws:sns:use-east-1:123456789012:mytopic1" "arn:aws:sns:us-east-1:123456789012:mytopic2"

詳細については、「AWS CloudFormation ユーザーガイド」の「AWS CloudFormation スタックの更新」を参照してください。

  • API の詳細については、「AWS CLI コマンドリファレンス」の「UpdateStack」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたテンプレートとカスタマイゼーションパラメータでスタック「MyStack」を更新します。「PK1」はテンプレートで宣言されているパラメータの名前を表し、「PV1」はその値を表します。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。

Update-CFNStack -StackName "myStack" ` -TemplateBody "{Template Content Here}" ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

例 2: 指定されたテンプレートとカスタマイゼーションパラメータでスタック「MyStack」を更新します。「PK1」と「PK2」はテンプレートで宣言されているパラメータの名前を表し、「PV1」と「PV2」はそれらの要求された値を表します。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。

Update-CFNStack -StackName "myStack" ` -TemplateBody "{Template Content Here}" ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )

例 3: 指定されたテンプレートとカスタマイゼーションパラメータでスタック「MyStack」を更新します。「PK1」はテンプレートで宣言されているパラメータの名前を表し、「PV2」はその値を表します。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。

Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }

例 4: 指定されたテンプレート (Amazon S3 から取得されたもの) とカスタマイゼーションパラメータでスタック「MyStack」を更新します。「PK1」と「PK2」はテンプレートで宣言されているパラメータの名前を表し、「PV1」と「PV2」はそれらの要求された値を表します。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。

Update-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )

例 5: 指定されたテンプレート (Amazon S3 から取得されたもの) とカスタマイゼーションパラメータでスタック「MyStack」(この例では IAM リソースが含まれていることを想定) を更新します。「PK1」と「PK2」はテンプレートで宣言されているパラメータの名前を表し、「PV1」と「PV2」はそれらの要求された値を表します。カスタマイゼーションパラメータは、「ParameterKey」と「ParameterValue」の代わりに、「Key」と「Value」を使用して指定することもできます。IAM リソースが含まれるスタックでは、-Capabilities「CAPABILITY_IAM」パラメータを指定する必要があります。指定されていない場合は、更新が「InsufficientCapabilities」エラーで失敗します。

Update-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) ` -Capabilities "CAPABILITY_IAM"
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「UpdateStack」を参照してください。

注記

すべての通知を削除するには、--notification-arns オプションに [] を指定します。

テンプレートを検証する

validate-template コマンドを使用して、テンプレートファイルの構文エラーをチェックします。

検証中に、CloudFormation はテンプレートが有効な JSON であるかどうかをまず確認します。そうでない場合は、CloudFormation はテンプレートが有効な YAML であるかどうかを確認します。両方のチェックが失敗すると、CloudFormation はテンプレートの検証エラーを返します。

CLI
AWS CLI

AWS CloudFormation テンプレートを検証する

以下の validate-template コマンドは、sampletemplate.json テンプレートを検証します。

aws cloudformation validate-template --template-body file://sampletemplate.json

出力:

{ "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters": [], "Capabilities": [] }

詳細については、「AWS CloudFormation ユーザーガイド」の「AWS CloudFormation テンプレートの使用」を参照してください。

  • API の詳細については、「AWS CLI コマンドリファレンス」の「ValidateTemplate」を参照してください。

PowerShell
Tools for PowerShell

例 1: 指定されたテンプレートコンテンツを検証します。出力は、テンプレートの機能、説明、パラメータを詳しく説明します。

Test-CFNTemplate -TemplateBody "{TEMPLATE CONTENT HERE}"

例 2: Amazon S3 URL 経由でアクセスされる、指定されたテンプレートを検証します。出力は、テンプレートの機能、説明、パラメータを詳しく説明します。

Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template
  • API の詳細については、「AWS Tools for PowerShell コマンドレットリファレンス」の「ValidateTemplate」を参照してください。

以下は、検証エラーを生成する応答の例です。

{ "ResponseMetadata": { "RequestId": "4ae33ec0-1988-11e3-818b-e15a6df955cd" }, "Errors": [ { "Message": "Template format error: JSON not well-formed. (line 11, column 8)", "Code": "ValidationError", "Type": "Sender" } ], "Capabilities": [], "Parameters": [] } A client error (ValidationError) occurred: Template format error: JSON not well-formed. (line 11, column 8)
注記

validate-template コマンドは、テンプレートの構文のみをチェックするように設計されています。リソースに対して指定したプロパティ値が、そのリソースに対して有効であるかどうかは保証されません。また、スタックの作成時に存在するリソースの数も決定しません。

動作の妥当性を確認するには、スタックの作成を試みる必要があります。AWS CloudFormation スタックにはサンドボックスやテスト領域がないため、テスト中に作成したリソースに対して課金されます。

可用性の例

必要なものが見つからなかった場合。このページの下部にある [フィードバックを送信] リンクを使用して、新しい例をリクエストしてください。