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

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

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

AWS CloudFormation 使用 Tools for PowerShell 的範例

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

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

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

主題

動作

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

for PowerShell 工具

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

Get-CFNStack

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

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

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

for PowerShell 工具

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

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

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

for PowerShell 工具

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

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

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

for PowerShell 工具

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

Get-CFNStackResourceList -StackName "myStack"

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

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 執行個體描述。堆疊是使用其包含的資源的實體資源 ID 來識別,在此情況下,也會使用執行個體 ID 為 "i-123456" 的 Amazon EC2 執行個體。根據範本內容,也可以使用不同的實體資源來識別堆疊,例如 Amazon S3 儲存貯體。

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

下列程式碼範例示範如何使用 Get-CFNStackResourceSummary

for PowerShell 工具

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

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

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

for 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

for PowerShell 工具

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

Get-CFNTemplate -StackName "myStack"
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 GetTemplate

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

for PowerShell 工具

範例 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 Simple Monthly Calculator 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

for PowerShell 工具

範例 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 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 CreateStack

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

for PowerShell 工具

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

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

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

for PowerShell 工具

範例 1:繼續復原已命名堆疊,其應該處於 'UPDATE_ROLLBACK_FAILED' 狀態。如果繼續復原成功,堆疊將進入狀態 'UPDATE_ROLLBACK_COMPLETE'。

Resume-CFNUpdateRollback -StackName "myStack"

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

for PowerShell 工具

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

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

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

for PowerShell 工具

範例 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 參考中的 Test-CFNStack

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

for 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

for PowerShell 工具

範例 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 參考中的 UpdateStack

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

for PowerShell 工具

範例 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 參考中的 Wait-CFNStack