文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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"
-
如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 DescribeStackResources。
-
下列程式碼範例示範如何使用 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"
-
如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 ContinueUpdateRollback。
-
下列程式碼範例示範如何使用 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。
-