AWS CloudFormation 使用 Tools for PowerShell V4 的範例 - AWS SDK 程式碼範例

文件 AWS 開發套件範例 GitHub 儲存庫中有更多可用的 AWS SDK 範例

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS CloudFormation 使用 Tools for PowerShell V4 的範例

下列程式碼範例示範如何使用 AWS Tools for PowerShell V4 搭配 來執行動作和實作常見案例 AWS CloudFormation。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

以下程式碼範例顯示如何使用 Get-CFNStack

PowerShell V4 的工具

範例 1:傳回描述所有使用者堆疊的堆疊執行個體集合。

Get-CFNStack

範例 2:傳回描述指定堆疊的堆疊執行個體

Get-CFNStack -StackName "myStack"
  • 如需 API 詳細資訊,請參閱《 Cmdlet 參考》中的 DescribeStacks (V4)。 AWS Tools for PowerShell

以下程式碼範例顯示如何使用 Get-CFNStackEvent

PowerShell V4 的工具

範例 1:傳回指定堆疊的所有堆疊相關事件。

Get-CFNStackEvent -StackName "myStack"
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 (V4) 中的 DescribeStackEvents

以下程式碼範例顯示如何使用 Get-CFNStackResource

PowerShell V4 的工具

範例 1:傳回透過邏輯 ID "MyDBInstance" 在與指定堆疊相關聯的範本中識別的資源描述。

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
  • 如需 API 詳細資訊,請參閱《 Cmdlet 參考》中的 DescribeStackResource (V4)。 AWS Tools for PowerShell

以下程式碼範例顯示如何使用 Get-CFNStackResourceList

PowerShell V4 的工具

範例 1:傳回最多 100 個與指定堆疊相關聯的資源 AWS 描述。若要取得與堆疊相關聯的所有資源詳細資訊,請使用 Get-CFNStackResourceSummary,這也支援手動分頁結果。

Get-CFNStackResourceList -StackName "myStack"

範例 2:傳回透過邏輯 ID "Ec2Instance",在與指定堆疊相關聯的範本中識別的 Amazon EC2 執行個體描述。 Ec2Instance

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

範例 3:傳回最多 100 個與堆疊相關聯的資源描述,其中包含由執行個體 ID "i-123456" 識別的 Amazon EC2 執行個體。若要取得與堆疊相關聯的所有資源詳細資訊,請使用 Get-CFNStackResourceSummary,這也支援手動分頁結果。

Get-CFNStackResourceList -PhysicalResourceId "i-123456"

範例 4:傳回堆疊範本中邏輯 ID "Ec2Instance" 所識別的 Amazon EC2 執行個體描述。 Ec2Instance 堆疊是使用其包含的資源的實體資源 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

PowerShell V4 的工具

範例 1:傳回與指定堆疊相關聯的所有資源的描述。

Get-CFNStackResourceSummary -StackName "myStack"
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 (V4) 中的 ListStackResources

以下程式碼範例顯示如何使用 Get-CFNStackSummary

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 參考 (V4) 中的 ListStacks

以下程式碼範例顯示如何使用 Get-CFNTemplate

PowerShell V4 的工具

範例 1:傳回與指定堆疊相關聯的範本。

Get-CFNTemplate -StackName "myStack"
  • 如需 API 詳細資訊,請參閱AWS Tools for PowerShell 《 Cmdlet Reference (V4)》中的 GetTemplate

以下程式碼範例顯示如何使用 Measure-CFNTemplateCost

PowerShell V4 的工具

範例 1:傳回 AWS 每月簡易計算器 URL,其中包含查詢字串,說明執行範本所需的資源。範本是從指定的 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:傳回 AWS 每月簡易計算器 URL,其中包含查詢字串,說明執行範本所需的資源。範本會從提供的內容剖析,並套用自訂參數 (此範例假設範本內容已宣告兩個參數:'KeyName' 和 'InstanceType')。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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 Reference (V4)》中的 EstimateTemplateCost

以下程式碼範例顯示如何使用 New-CFNStack

PowerShell V4 的工具

範例 1:建立具有指定名稱的新堆疊。範本是以自訂參數 ('PK1' 和 'PK2' 代表範本內容中宣告的參數名稱,'PV1' 和 'PV2' 代表這些參數的值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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' 代表這些參數的值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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' 代表參數的值。 自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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' 代表參數的值。 自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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 詳細資訊,請參閱《 Cmdlet 參考》中的 CreateStack (V4)。 AWS Tools for PowerShell

以下程式碼範例顯示如何使用 Remove-CFNStack

PowerShell V4 的工具

範例 1:刪除指定的堆疊。

Remove-CFNStack -StackName "myStack"
  • 如需 API 詳細資訊,請參閱《 Cmdlet 參考》中的 DeleteStack (V4)。 AWS Tools for PowerShell

以下程式碼範例顯示如何使用 Resume-CFNUpdateRollback

PowerShell V4 的工具

範例 1:繼續復原具名堆疊,其應處於「UPDATE_ROLLBACK_FAILED」狀態。如果繼續轉返成功,堆疊將進入狀態 'UPDATE_ROLLBACK_COMPLETE'。

Resume-CFNUpdateRollback -StackName "myStack"
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet Reference (V4) 中的 ContinueUpdateRollback

以下程式碼範例顯示如何使用 Stop-CFNUpdateStack

PowerShell V4 的工具

範例 1:取消指定堆疊的更新。

Stop-CFNUpdateStack -StackName "myStack"
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet Reference (V4) 中的 CancelUpdateStack

以下程式碼範例顯示如何使用 Test-CFNStack

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 Reference (V4) 中的 Test-CFNStack

以下程式碼範例顯示如何使用 Test-CFNTemplate

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

PowerShell V4 的工具

範例 1:使用指定的範本和自訂參數更新堆疊 'myStack'。'PK1' 代表範本中宣告的參數名稱,而 'PV1' 代表其值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 'ParameterKey' 和 'ParameterValue'。

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

範例 2:使用指定的範本和自訂參數更新堆疊 'myStack'。'PK1' 和 'PK2' 代表範本中宣告的參數名稱,'PV1' 和 'PV2' 代表其請求的值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 'ParameterKey' 和 'ParameterValue'。

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

範例 3:使用指定的範本和自訂參數更新堆疊 'myStack'。'PK1' 代表範本中宣告的參數名稱,而 'PV2' 代表其值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 'ParameterKey' 和 'ParameterValue'。

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

範例 4:使用從 Amazon S3 取得的指定範本和自訂參數來更新堆疊 'myStack'。'PK1' 和 'PK2' 代表範本中宣告的參數名稱,'PV1' 和 'PV2' 代表其請求的值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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:更新堆疊 'myStack',此範例假設包含 IAM 資源,其中包含從 Amazon S3 取得的指定範本和自訂參數。'PK1' 和 'PK2' 代表範本中宣告的參數名稱,'PV1' 和 'PV2' 代表其請求的值。自訂參數也可以使用 'Key' 和 'Value' 來指定,而不是 '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 Reference (V4) 中的 UpdateStack

以下程式碼範例顯示如何使用 Wait-CFNStack

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 Reference (V4) 中的 Wait-CFNStack