View a markdown version of this page

Amazon CloudFormation 使用 PowerShell V5 工具的示例 - Amazon Tools for PowerShell (版本 5)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

的版本 5 (V5) Amazon Tools for PowerShell 已经发布!

有关重大更改和迁移应用程序的信息,请参阅迁移主题

Orange button with text "Click here for details".

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon CloudFormation 使用 PowerShell V5 工具的示例

以下代码示例向您展示了如何使用带 Amazon CloudFormation的 Amazon Tools for PowerShell V5 来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示了如何使用 Get-CFNStack

适用于 PowerShell V5 的工具

示例 1:返回描述用户的所有堆栈的堆栈实例集合。

Get-CFNStack

示例 2:返回描述指定堆栈的堆栈实例

Get-CFNStack -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) DescribeStacks中的。

以下代码示例演示了如何使用 Get-CFNStackEvent

适用于 PowerShell V5 的工具

示例 1:返回指定堆栈的所有堆栈相关事件。

Get-CFNStackEvent -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) DescribeStackEvents中的。

以下代码示例演示了如何使用 Get-CFNStackResource

适用于 PowerShell V5 的工具

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

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

以下代码示例演示了如何使用 Get-CFNStackResourceList

适用于 PowerShell V5 的工具

示例 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 参考 (V 5) DescribeStackResources中的。

以下代码示例演示了如何使用 Get-CFNStackResourceSummary

适用于 PowerShell V5 的工具

示例 1:返回与指定堆栈关联的所有资源的描述。

Get-CFNStackResourceSummary -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) ListStackResources中的。

以下代码示例演示了如何使用 Get-CFNStackSummary

适用于 PowerShell V5 的工具

示例 1:返回所有堆栈的摘要信息。

Get-CFNStackSummary

示例 2:返回当前正在创建的所有堆栈的摘要信息。

Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"

示例 3:返回当前正在创建或更新的所有堆栈的摘要信息。

Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) ListStacks中的。

以下代码示例演示了如何使用 Get-CFNTemplate

适用于 PowerShell V5 的工具

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

Get-CFNTemplate -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) GetTemplate中的。

以下代码示例演示了如何使用 Measure-CFNTemplateCost

适用于 PowerShell V5 的工具

示例 1:返回一个带有查询字符串的 Amazon 简单月度计算器网址,该字符串描述了运行模板所需的资源。模板是从指定的 Amazon S3 URL 获取的,并且应用了单个自定义参数。也可以使用 “Key” 和 “Value” 来指定参数,而不是 ParameterKey “” 和 “ParameterValue”。

Measure-CFNTemplateCost -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template ` -Region us-west-1 ` -Parameter @{ ParameterKey="KeyName"; ParameterValue="myKeyPairName" }

示例 2:返回一个带有查询字符串的 Amazon 简单月度结算器网址,该字符串描述了运行模板所需的资源。模板是根据提供的内容和应用的自定义参数进行解析的(此示例假设模板内容会声明两个参数,'和KeyName' InstanceType ')。也可以使用 “密钥” 和 “值” 来指定自定义参数,而不是 “ParameterKey” 和 “ParameterValue”。

Measure-CFNTemplateCost -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( @{ ParameterKey="KeyName"; ParameterValue="myKeyPairName" },` @{ ParameterKey="InstanceType"; ParameterValue="m1.large" })

示例 3:使用 New-Object 生成模板参数集,并返回一个 “ Amazon 简单月度计算器” 网址,其中包含描述运行模板所需资源的查询字符串。模板是从提供的内容中解析出来的,并带有自定义参数(此示例假设模板内容会声明两个参数,KeyName'和' InstanceType ')。

$p1 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p1.ParameterKey = "KeyName" $p1.ParameterValue = "myKeyPairName" $p2 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p2.ParameterKey = "InstanceType" $p2.ParameterValue = "m1.large" Measure-CFNTemplateCost -TemplateBody "{TEMPLATE CONTENT HERE}" -Parameter @( $p1, $p2 )
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) EstimateTemplateCost中的。

以下代码示例演示了如何使用 New-CFNStack

适用于 PowerShell V5 的工具

示例 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/amzn-s3-demo-bucket/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

示例 4:使用指定名称创建新堆栈。该模板是从带有自定义参数的 Amazon S3 URL 中获取的(PK1“” 表示模板内容中声明的参数的名称,PV1“” 表示参数的值。 也可以使用 “密钥” 和 “值” 来指定自定义参数,而不是 “ParameterKey” 和 “ParameterValue”。 如果堆栈创建失败,则会将其回滚(与指定相同-DisableRollback $false)。指定的通知 AENs 将收到已发布的堆栈相关事件。

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

以下代码示例演示了如何使用 Remove-CFNStack

适用于 PowerShell V5 的工具

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

Remove-CFNStack -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) DeleteStack中的。

以下代码示例演示了如何使用 Resume-CFNUpdateRollback

适用于 PowerShell V5 的工具

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

Resume-CFNUpdateRollback -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) ContinueUpdateRollback中的。

以下代码示例演示了如何使用 Stop-CFNUpdateStack

适用于 PowerShell V5 的工具

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

Stop-CFNUpdateStack -StackName "myStack"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) CancelUpdateStack中的。

以下代码示例演示了如何使用 Test-CFNStack

适用于 PowerShell V5 的工具

示例 1:测试堆栈是否已达到 UPDATE_ROLLBACK_COMPLETE、CREATE_COMPLETE、ROLLBACK_COMPLETE 或 UPDATE_COMPLETE 状态之一。

Test-CFNStack -StackName MyStack

输出

False

示例 2:测试堆栈是否已达到 UPDATE_COMPLETE 或 UPDATE_ROLLBACK_COMPLETE 的状态。

Test-CFNStack -StackName MyStack -Status UPDATE_COMPLETE,UPDATE_ROLLBACK_COMPLETE

输出

True
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet CFNStack 中的测试参考 (V5)

以下代码示例演示了如何使用 Test-CFNTemplate

适用于 PowerShell V5 的工具

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

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

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

Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) ValidateTemplate中的。

以下代码示例演示了如何使用 Update-CFNStack

适用于 PowerShell V5 的工具

示例 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/amzn-s3-demo-bucket/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/amzn-s3-demo-bucket/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) ` -Capabilities "CAPABILITY_IAM"
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 5) UpdateStack中的。

以下代码示例演示了如何使用 Wait-CFNStack

适用于 PowerShell V5 的工具

示例 1:测试堆栈是否已达到 UPDATE_ROLLBACK_COMPLETE、CREATE_COMPLETE、ROLLBACK_COMPLETE 或 UPDATE_COMPLETE 状态之一。如果堆栈未处于其中一种状态,则命令将休眠两秒钟,然后再次测试状态。重复此操作,直到堆栈达到所请求的状态之一或经过了 60 秒的默认超时时间。如果超过了超时时间,则会引发异常。如果堆栈在超时时间内达到请求的状态之一,则会将它返回到管道。

$stack = Wait-CFNStack -StackName MyStack

示例 2:此示例等待总共 5 分钟(300 秒),以使堆栈达到任一指定的状态。在此示例中,在超时之前达到此状态,因此堆栈对象将返回到管道。

Wait-CFNStack -StackName MyStack -Timeout 300 -Status CREATE_COMPLETE,ROLLBACK_COMPLETE

输出

Capabilities : {CAPABILITY_IAM} ChangeSetId : CreationTime : 6/1/2017 9:29:33 AM Description : AWS CloudFormation Sample Template ec2_instance_with_instance_profile: Create an EC2 instance with an associated instance profile. **WARNING** This template creates one or more Amazon EC2 instances and an Amazon SQS queue. You will be billed for the AWS resources used if you create a stack from this template. DisableRollback : False LastUpdatedTime : 1/1/0001 12:00:00 AM NotificationARNs : {} Outputs : {} Parameters : {} RoleARN : StackId : arn:aws:cloudformation:us-west-2:123456789012:stack/MyStack/7ea87b50-46e7-11e7-9c9b-503a90a9c4d1 StackName : MyStack StackStatus : CREATE_COMPLETE StackStatusReason : Tags : {} TimeoutInMinutes : 0

示例 3:此示例演示堆栈在超时时间(在本例中为默认时段 60 秒)内未达到所请求状态之一时的错误输出。

Wait-CFNStack -StackName MyStack -Status CREATE_COMPLETE,ROLLBACK_COMPLETE

输出

Wait-CFNStack : Timed out after 60 seconds waiting for CloudFormation stack MyStack in region us-west-2 to reach one of state(s): UPDATE_ROLLBACK_COMPLETE,CREATE_COMPLETE,ROLLBACK_COMPLETE,UPDATE_COMPLETE At line:1 char:1 + Wait-CFNStack -StackName MyStack -State CREATE_COMPLETE,ROLLBACK_COMPLETE + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (Amazon.PowerShe...tCFNStackCmdlet:WaitCFNStackCmdlet) [Wait-CFNStack], InvalidOperationException + FullyQualifiedErrorId : InvalidOperationException,Amazon.PowerShell.Cmdlets.CFN.WaitCFNStackCmdlet