使用 Amazon CLI 和 PowerShell 创建和管理 CloudFormation 堆栈的示例 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon CLI 和 PowerShell 创建和管理 CloudFormation 堆栈的示例

以下命令行代码示例演示了如何使用 Amazon CLI 和 PowerShell 执行各个 CloudFormation 操作。这些示例仅包括最常用的操作。有关完整列表,请参阅 Amazon CloudFormation API 参考

通过 Amazon CLI 或 PowerShell 使用 CancelUpdateStack

以下代码示例演示如何使用 CancelUpdateStack

CLI
Amazon CLI

取消正在进行的堆栈更新

以下 cancel-update-stack 命令会取消 myteststack 堆栈上的堆栈更新:

aws cloudformation cancel-update-stack --stack-name myteststack
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CancelUpdateStack

PowerShell
适用于 PowerShell 的工具

示例 1:取消指定堆栈的更新。

Stop-CFNUpdateStack -StackName "myStack"
  • 有关 API 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 CancelUpdateStack

通过 Amazon CLI 或 PowerShell 使用 ContinueUpdateRollback

以下代码示例演示如何使用 ContinueUpdateRollback

CLI
Amazon CLI

重试更新回滚

以下 continue-update-rollback 示例从之前失败的堆栈更新中恢复回滚操作。

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

此命令不生成任何输出。

PowerShell
适用于 PowerShell 的工具

示例 1:继续指定堆栈的回滚,该堆栈的状态应为“UPDATE_ROLLBACK_FAILED”。如果继续回滚成功,堆栈将进入“UPDATE_ROLLBACK_COMPLETE”状态。

Resume-CFNUpdateRollback -StackName "myStack"
  • 有关 API 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet参考》中的 ContinueUpdateRollback

通过 Amazon CLI 或 PowerShell 使用 CreateStack

以下代码示例演示如何使用 CreateStack

CLI
Amazon CLI

创建 Amazon 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" }

有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的“堆栈”。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CreateStack

PowerShell
适用于 PowerShell 的工具

示例 1:使用指定名称创建新堆栈。模板是从提供的内容中解析出来的,使用了自定义参数(“PK1”和“PK2”代表模板内容中声明的参数名称,“PV1”和“PV2”代表这些参数的值)。也可以使用“键”和“值”来指定自定义参数,而不是“ParameterKey”和“ParameterValue”。如果堆栈创建失败,则不会将其回滚。

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”。如果堆栈创建失败,则会将其回滚。

$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”。如果堆栈创建失败,则会将其回滚(与指定 -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”。如果堆栈创建失败,则会将其回滚(与指定 -DisableRollback $false 时相同)。指定的通知 AEN 将收到发布的堆栈相关事件。

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } ` -NotificationARN @( "arn1", "arn2" )
  • 有关 API 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 CreateStack

通过 Amazon CLI 或 PowerShell 使用 DeleteStack

以下代码示例演示如何使用 DeleteStack

CLI
Amazon CLI

删除堆栈

以下 delete-stack 示例将删除指定的堆栈。

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

此命令不生成任何输出。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteStack

PowerShell
适用于 PowerShell 的工具

示例 1:删除指定的堆栈。

Remove-CFNStack -StackName "myStack"
  • 有关 API 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 DeleteStack

通过 Amazon CLI 或 PowerShell 使用 DeleteStackEvents

以下代码示例演示如何使用 DescribeStackEvents

CLI
Amazon 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 详细信息,请参阅《Amazon CLI 命令参考》中的 DescribeStackEvents

PowerShell
适用于 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 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 DescribeStackEvents

通过 Amazon CLI 或 PowerShell 使用 DescribeStackResource

以下代码示例演示如何使用 DescribeStackResource

CLI
Amazon 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" } } }
PowerShell
适用于 PowerShell 的工具

示例 1:返回与指定堆栈关联的模板中用逻辑 ID “MyDBInstance”标识的资源的描述。

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
  • 有关 API 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 DescribeStackResource

通过 Amazon CLI 或 PowerShell 使用 DescribeStackResources

以下代码示例演示如何使用 DescribeStackResources

CLI
Amazon 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" } } ] }
PowerShell
适用于 PowerShell 的工具

示例 1:返回与指定堆栈关联的最多 100 个资源的 Amazon 资源描述。要获取与堆栈关联的所有资源的详细信息,请使用 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 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 DescribeStackResources

通过 Amazon CLI 或 PowerShell 使用 DescribeStacks

以下代码示例演示如何使用 DescribeStacks

CLI
Amazon CLI

描述 Amazon 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 } ] }

有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的“堆栈”。

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DescribeStacks

Go
适用于 Go V2 的 SDK
注意

查看 GitHub,了解更多信息。查找完整示例,学习如何在 Amazon 代码示例存储库中进行设置和运行。

// 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 详细信息,请参阅《Amazon SDK for Go API 参考》中的 DescribeStacks

PowerShell
适用于 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 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 DescribeStacks

通过 Amazon CLI 或 PowerShell 使用 GetTemplate

以下代码示例演示如何使用 GetTemplate

CLI
Amazon CLI

查看 Amazon 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 详细信息,请参阅《Amazon CLI 命令参考》中的 GetTemplate

PowerShell
适用于 PowerShell 的工具

示例 1:返回与指定堆栈关联的模板。

Get-CFNTemplate -StackName "myStack"
  • 有关 API 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 GetTemplate

通过 Amazon CLI 或 PowerShell 使用 ListStackResources

以下代码示例演示如何使用 ListStackResources

CLI
Amazon 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 详细信息,请参阅《Amazon CLI 命令参考》中的 ListStackResources

PowerShell
适用于 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 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 ListStackResources

通过 Amazon CLI 或 PowerShell 使用 ListStacks

以下代码示例演示如何使用 ListStacks

CLI
Amazon CLI

列出 Amazon 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 详细信息,请参阅《Amazon CLI 命令参考》中的 ListStacks

PowerShell
适用于 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 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 ListStacks

通过 Amazon CLI 或 PowerShell 使用 UpdateStack

以下代码示例演示如何使用 UpdateStack

CLI
Amazon CLI

更新 Amazon 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 堆栈添加了两个堆栈通知主题:

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"

有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的 Amazon 堆栈更新

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 UpdateStack

PowerShell
适用于 PowerShell 的工具

示例 1:使用指定的模板和自定义参数更新堆栈“MyStack”。“PK1”代表模板中声明的参数名称,“PV1”代表参数值。也可以使用“键”和“值”来指定自定义参数,而不是“ParameterKey”和“ParameterValue”。

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

示例 2:使用指定的模板和自定义参数更新堆栈“MyStack”。“PK1”和“PK2”代表模板中声明的参数名称,“PV1”和“PV2”代表请求的参数值。也可以使用“键”和“值”来指定自定义参数,而不是“ParameterKey”和“ParameterValue”。

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

示例 3:使用指定的模板和自定义参数更新堆栈“MyStack”。“PK1”代表模板中声明的参数名称,“PV2”代表参数值。也可以使用“键”和“值”来指定自定义参数,而不是“ParameterKey”和“ParameterValue”。

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

示例 4:使用从 Amazon S3 获得的指定模板和自定义参数更新堆栈“MyStack”。“PK1”和“PK2”代表模板中声明的参数名称,“PV1”和“PV2”代表请求的参数值。也可以使用“键”和“值”来指定自定义参数,而不是“ParameterKey”和“ParameterValue”。

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”。由于堆栈包含 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 详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 UpdateStack

通过 Amazon CLI 或 PowerShell 使用 ValidateTemplate

以下代码示例演示如何使用 ValidateTemplate

CLI
Amazon CLI

验证 Amazon 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": [] }

有关更多信息,请参阅《Amazon CloudTrail 用户指南》中的“使用 Amazon CloudFormation 模板”

  • 有关 API 的详细信息,请参阅《Amazon CLI 命令参考》中的 ValidateTemplate

PowerShell
适用于 PowerShell 的工具

示例 1:验证指定模板的内容。输出详细说明了模板的功能、描述和参数。

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

示例 2:验证通过 Amazon S3 URL 访问的指定模板。输出详细说明了模板的功能、描述和参数。

Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template
  • 有关 API 的详细信息,请参阅《Amazon Tools for PowerShell Cmdlet 参考》中的 ValidateTemplate