AWS Tools for PowerShell 版本 5(V5)已经发布!
要开始使用新版本的工具,请参阅《AWS Tools for PowerShell 用户指南(V5)》,特别是关于迁移到 V5 的主题。
使用 Tools for PowerShell V4 的 CloudFormation 示例
以下代码示例演示如何将 AWS Tools for PowerShell V4 与 CloudFormation 结合使用来执行操作和实现常见场景。
操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。
每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。
主题
操作
以下代码示例演示了如何使用 Get-CFNStack。
- Tools for PowerShell V4
-
示例 1:返回描述用户的所有堆栈的堆栈实例集合。
Get-CFNStack示例 2:返回描述指定堆栈的堆栈实例
Get-CFNStack -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 DescribeStacks。
-
以下代码示例演示了如何使用 Get-CFNStackEvent。
- Tools for PowerShell V4
-
示例 1:返回指定堆栈的所有堆栈相关事件。
Get-CFNStackEvent -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 DescribeStackEvents。
-
以下代码示例演示了如何使用 Get-CFNStackResource。
- Tools for PowerShell V4
-
示例 1:返回与指定堆栈关联的模板中用逻辑 ID “MyDBInstance”标识的资源的描述。
Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 DescribeStackResource。
-
以下代码示例演示了如何使用 Get-CFNStackResourceList。
- Tools for PowerShell V4
-
示例 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 Cmdlet Reference(V4)》中的 DescribeStackResources。
-
以下代码示例演示了如何使用 Get-CFNStackResourceSummary。
- Tools for PowerShell V4
-
示例 1:返回与指定堆栈关联的所有资源的描述。
Get-CFNStackResourceSummary -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 ListStackResources。
-
以下代码示例演示了如何使用 Get-CFNStackSummary。
- Tools for PowerShell V4
-
示例 1:返回所有堆栈的摘要信息。
Get-CFNStackSummary示例 2:返回当前正在创建的所有堆栈的摘要信息。
Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"示例 3:返回当前正在创建或更新的所有堆栈的摘要信息。
Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 ListStacks。
-
以下代码示例演示了如何使用 Get-CFNTemplate。
- Tools for PowerShell V4
-
示例 1:返回与指定堆栈关联的模板。
Get-CFNTemplate -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 GetTemplate。
-
以下代码示例演示了如何使用 Measure-CFNTemplateCost。
- Tools for PowerShell V4
-
示例 1:返回一个 AWS 简单月度计算器 URL,其中包含描述运行模板所需资源的查询字符串。模板是从指定的 Amazon S3 URL 获取的,并且应用了单个自定义参数。也可以使用“键”和“值”来指定该参数,而不是“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:返回一个 AWS 简单月度计算器 URL,其中包含描述运行模板所需资源的查询字符串。模板是根据提供的内容解析的,并且应用了自定义参数(此示例假设模板内容会声明“KeyName”和“InstanceType”这两个参数)。也可以使用“键”和“值”来指定自定义参数,而不是“ParameterKey”和“ParameterValue”。
Measure-CFNTemplateCost -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( @{ ParameterKey="KeyName"; ParameterValue="myKeyPairName" },` @{ ParameterKey="InstanceType"; ParameterValue="m1.large" })示例 3:使用 New-Object 来构建一组模板参数,并返回一个 AWS 简单月度计算器 URL,其中包含描述运行模板所需资源的查询字符串。模板是根据提供的内容解析的,并且包含自定义参数(此示例假设模板内容会声明“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 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 EstimateTemplateCost。
-
以下代码示例演示了如何使用 New-CFNStack。
- Tools for PowerShell V4
-
示例 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 时相同)。指定的通知 AEN 将收到发布的堆栈相关事件。
New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } ` -NotificationARN @( "arn1", "arn2" )-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 CreateStack。
-
以下代码示例演示了如何使用 Remove-CFNStack。
- Tools for PowerShell V4
-
示例 1:删除指定的堆栈。
Remove-CFNStack -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 DeleteStack。
-
以下代码示例演示了如何使用 Resume-CFNUpdateRollback。
- Tools for PowerShell V4
-
示例 1:继续指定堆栈的回滚,该堆栈的状态应为“UPDATE_ROLLBACK_FAILED”。如果继续回滚成功,堆栈将进入“UPDATE_ROLLBACK_COMPLETE”状态。
Resume-CFNUpdateRollback -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 ContinueUpdateRollback。
-
以下代码示例演示了如何使用 Stop-CFNUpdateStack。
- Tools for PowerShell V4
-
示例 1:取消指定堆栈的更新。
Stop-CFNUpdateStack -StackName "myStack"-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 CancelUpdateStack。
-
以下代码示例演示了如何使用 Test-CFNStack。
- Tools for PowerShell V4
-
示例 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 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 Test-CFNStack。
-
以下代码示例演示了如何使用 Test-CFNTemplate。
- Tools for PowerShell V4
-
示例 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 的详细信息,请参阅《AWS Tools for PowerShell Cmdlet Reference(V4)》中的 ValidateTemplate。
-
以下代码示例演示了如何使用 Update-CFNStack。
- Tools for PowerShell V4
-
示例 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 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 UpdateStack。
-
以下代码示例演示了如何使用 Wait-CFNStack。
- Tools for PowerShell V4
-
示例 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-
有关 API 详细信息,请参阅《AWS Tools for PowerShell Cmdlet 参考(V4)》中的 Wait-CFNStack。
-