次のコマンドライン例は、AWS CLI と PowerShell を使用して個々の CloudFormation アクションを実行する方法を示しています。これらの例には、最も一般的に使用されるアクションのみ含まれています。完全なリストについては、「AWS CLI コマンドリファレンス」の「cloudformation」を参照してください。
このガイドの例では、バックスラッシュ (\) の規則を使用して、長いコマンドラインが次の行に続くことを示します。
トピック
スタックの更新をキャンセルする
cancel-update-stack
コマンドを使用して、スタックの更新をキャンセルします。詳細については、「スタック更新をキャンセルする」を参照してください。
- AWS CLI
-
進行中のスタック更新をキャンセルする方法
以下の
cancel-update-stack
コマンドは、myteststack
スタックで行われているスタック更新をキャンセルします。aws cloudformation cancel-update-stack --stack-name
myteststack
-
API の詳細については、「AWS CLI コマンドリファレンス」の「CancelUpdateStack
」を参照してください。
-
更新のロールバックを続ける
continue-update-rollback
コマンドを使用して更新のロールバックを続行します。詳細については、「更新のロールバックを続ける」を参照してください。
- AWS CLI
-
更新のロールバックを再試行する
以下の
continue-update-rollback
の例は、前回失敗したスタック更新からのロールバック操作を再開します。aws cloudformation continue-update-rollback \ --stack-name
my-stack
このコマンドでは何も出力されません。
-
API の詳細については、「AWS CLI コマンドリファレンス」の「ContinueUpdateRollback
」を参照してください。
-
Stack を作成する
create-stack
コマンドを使用してスタックを作成します。スタック名、有効なテンプレートの場所、入力パラメーターが必要です。パラメータキーの名前では大文字と小文字が区別されます。パラメータキーの名前を誤って入力した場合、CloudFormation はスタックを作成せず、テンプレートにそのパラメータが含まれていないことを報告します。
デフォルトでは、describe-stacks
コマンドはパラメータの値が返します。パスワードなど、機密を要するパラメータ値が返されないようにするには、CloudFormation テンプレートで、NoEcho
プロパティを TRUE
に設定します。
重要
NoEcho
属性を使用しても、以下に保存されている情報はマスクされません。
-
Metadata
テンプレートセクション。CloudFormation は、Metadata
セクションに含める情報の変換、変更、または編集を行いません。詳細については、「CloudFormation テンプレートの Metadata 構文」を参照してください。 -
Outputs
テンプレートセクション。詳細については、「CloudFormation テンプレートの Outputs 構文」を参照してください。 -
リソース定義の
Metadata
属性。詳細については、「Metadata 属性」を参照してください。
パスワードやシークレットなどの機密情報を含めるには、これらのメカニズムを使用しないことを強くお勧めします。
重要
機密情報は、CloudFormation テンプレートに直接埋め込むのではなく、スタックテンプレートの動的パラメータを使用して CloudFormation の外部 (AWS Systems Manager パラメータストアや AWS Secrets Manager など) に保存して管理した上で 参照することをお勧めします。
詳細については、「テンプレートに認証情報を埋め込まない のベストプラクティス」を参照してください。
以下の例は、指定された名前、テンプレート、および入力パラメータを使用して新しいスタックを作成する方法を示しています。
- AWS CLI
-
AWS CloudFormation スタックを作成する方法
次の
create-stacks
コマンドは、sampletemplate.json
テンプレートを使用して「myteststack
」という名称のスタックを作成します。aws cloudformation create-stack --stack-name
myteststack
--template-bodyfile://sampletemplate.json
--parametersParameterKey=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
」を参照してください。
-
代替手段として、テンプレートファイルの AWS Systems Manager の場所を指定することもできます。
以下の 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
コマンドを使用してこれらのステップを単一のコマンドにまとめます。
以下の deploy
コマンドは、指定された名前、テンプレート、および入力パラメータを使用してスタックを作成します。
aws cloudformation deploy --stack-name
myteststack
\ --template/path_to_template/my-template.json
\ --parameter-overridesKey1=Value1 Key2=Value2
スタックを削除する
delete-stack
コマンドを使用してスタックを削除します。詳細については、「CloudFormation コンソールからスタックを削除する」を参照してください。
- AWS CLI
-
スタックを削除する方法
以下の
delete-stack
例は、指定されたスタックを削除します。aws cloudformation delete-stack \ --stack-name
my-stack
このコマンドでは何も出力されません。
-
API の詳細については、「AWS CLI コマンドリファレンス」の「DeleteStack
」を参照してください。
-
削除が失敗して DELETE_FAILED
状態が返された場合は、--deletion-mode
オプションを強制的に使用することでスタックの削除を選択できます。deletion-mode
で使用できる値は次のとおりです:
-
STANDARD
: スタックを通常どおり削除します。これはデフォルトの削除モードです。 -
FORCE_DELETE_STACK
: スタックを削除し、削除に失敗したすべてのリソースをスキップします。
次の 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
コマンドを使用して、スタックイベントを記述します。詳細については、「スタックの進行状況を監視する」を参照してください。
- AWS CLI
-
スタックイベントを記述する方法
次の
describe-stack-events
の例は、指定されたスタックの最新イベントを 2 件表示します。aws cloudformation describe-stack-events \ --stack-name
my-stack
\ --max-items2
{
"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
」を参照してください。
-
スタックリソースを記述する
- AWS CLI
-
リソースに関する情報を取得する方法
次の
describe-stack-resource
の例は、指定されたスタック内にある「MyFunction
」という名称のリソースに関する詳細情報を表示します。aws cloudformation describe-stack-resource \ --stack-name
MyStack
\ --logical-resource-idMyFunction
出力:
{ "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
」を参照してください。
-
スタックリソースを記述する
- 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
」を参照してください。
-
スタックを記述する
- 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
」を参照してください。
-
テンプレートを取得する
- 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
」を参照してください。
-
スタックリソースを一覧表示する
- 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
」を参照してください。
-
スタックを一覧表示する
list-stacks
コマンドを使用して、スタックを一覧表示します。指定されたステータスコードを持つスタックだけを一覧表示するには、--stack-status-filter
オプションを含めてください。--stack-status-filter
オプションには、1 つ、または複数のスタックステータスコードを指定できます。詳細については、「スタックステータスコード」を参照してください。
- 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
」を参照してください。
-
スタックを更新する
update-stack
コマンドを使用して、スタックを直接更新します。更新するスタック、パラメータ値、機能を指定し、更新されたテンプレートを使用する場合はテンプレートの名前も指定します。詳細については、「スタックを直接更新する」を参照してください。
- AWS CLI
-
AWS CloudFormation スタックを更新する方法
以下の
update-stack
コマンドは、mystack
スタックのテンプレートと入力パラメータを更新します。aws cloudformation update-stack --stack-name
mystack
--template-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=KeyPairName,ParameterValue=SampleKeyPair
ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2以下の
update-stack
コマンドは、mystack
スタックのSubnetIDs
パラメータ値のみを更新します。パラメータ値を指定しない場合は、テンプレートで指定されているデフォルト値が使用されます。aws cloudformation update-stack --stack-name
mystack
--template-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=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"
詳細については、「AWSCloudFormation ユーザーガイド」の「AWSCloudFormation スタックの更新」を参照してください。
-
API の詳細については、「AWS CLI コマンドリファレンス」の「UpdateStack
」を参照してください。
-
注記
すべての通知を削除するには、--notification-arns
オプションに []
を指定します。
テンプレートを検証する
validate-template
コマンドを使用して、テンプレートファイルの構文エラーをチェックします。
検証中に、CloudFormation はテンプレートが有効な JSON であるかどうかをまず確認します。そうでない場合は、CloudFormation はテンプレートが有効な YAML であるかどうかを確認します。両方のチェックが失敗すると、CloudFormation はテンプレートの検証エラーを返します。
- 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": [] }
詳細については、「AWSCloudFormation ユーザーガイド」の「AWS CloudFormation テンプレートの使用」を参照してください。
-
API の詳細については、「AWS CLI コマンドリファレンス」の「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 スタックにはサンドボックスやテスト領域がないため、テスト中に作成したリソースに対して課金されます。
可用性の例
必要なものが見つからなかった場合。このページの下部にある [フィードバックを送信] リンクを使用して、新しい例をリクエストしてください。