AWS CloudFormation 使用工具的示例 PowerShell - AWS SDK代码示例

AWS 文档 AWS SDK示例 GitHub 存储库中还有更多SDK示例

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

AWS CloudFormation 使用工具的示例 PowerShell

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

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

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

主题

操作

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

用于 PowerShell

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

Get-CFNStack

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

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

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

用于 PowerShell

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

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

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

用于 PowerShell

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

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"

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

用于 PowerShell

示例 1:返回与指定堆栈关联的多达 100 个资源的 AWS 资源描述。要获取与堆栈关联的所有资源的详细信息,请使用 Get-CFNStackResourceSummary,它还支持手动分页结果。

Get-CFNStackResourceList -StackName "myStack"

示例 2:返回在模板中通过逻辑 ID “Ec2Instance” 标识的与指定堆栈关联的亚马逊EC2实例的描述。

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

示例 3:返回与堆栈关联的多达 100 个资源的描述,该堆栈包含一个由EC2实例 ID “i-123456” 标识的 Amazon 实例。要获取与堆栈关联的所有资源的详细信息,请使用 Get-CFNStackResourceSummary,它还支持手动分页结果。

Get-CFNStackResourceList -PhysicalResourceId "i-123456"

示例 4:返回由堆栈模板中的逻辑 ID “Ec2Instance” 标识的 Amazon EC2 实例的描述。堆栈使用其包含的资源的物理资源 ID 进行标识,在本例中也是EC2实例 ID 为 “i-123456” 的 Amazon 实例。也可以根据模板内容使用其他物理资源来识别堆栈,例如 Amazon S3 存储桶。

Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"

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

用于 PowerShell

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

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

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

用于 PowerShell

示例 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 参考ListStacks中的。

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

用于 PowerShell

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

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

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

用于 PowerShell

示例 1:返回一个URL带有查询字符串的 AWS 简单月度计算器,该字符串描述了运行模板所需的资源。模板是从指定的 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:返回一个URL带有查询字符串的 AWS 简单月度计算器,该字符串描述了运行模板所需的资源。模板是根据提供的内容和应用的自定义参数进行解析的(此示例假设模板内容会声明两个参数,'和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 参考EstimateTemplateCost中的。

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

用于 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/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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考CreateStack中的。

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

用于 PowerShell

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

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

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

用于 PowerShell

示例 1:继续回滚已命名的堆栈,其状态应为 'UPDATE_ ROLLBACK _FAILED'。如果继续回滚成功,堆栈将进入状态 'UPDATE_ ROLLBACK _COMPLETE'。

Resume-CFNUpdateRollback -StackName "myStack"

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

用于 PowerShell

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

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

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

用于 PowerShell

示例 1:测试堆栈是否已达到 _ COMPLETE、UPDATE ROLLBACK _ COMPLETE、CREATE _ COMPLETE 或 ROLLBACK 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 参考CFNStack中的测试

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

用于 PowerShell

示例 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 参考ValidateTemplate中的。

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

用于 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/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 参考UpdateStack中的。

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

用于 PowerShell

示例 1:测试堆栈是否已达到 _ COMPLETE、UPDATE ROLLBACK _ COMPLETE、CREATE _ COMPLETE 或 ROLLBACK 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 参考CFNStack中的等待