本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用和建立、更新和刪除 CloudFormation 堆疊 AWS CLI PowerShell
下列命令列範例示範如何使用 AWS CLI 和執行個別 CloudFormation動作 PowerShell。這些範例只包括最常用的動作。如需完整清單,請參閱參AWS CloudFormation API考資料。
主題
取消堆疊更新
使用cancel-update-stack
指令取消堆疊更新。如需詳細資訊,請參閱取消堆疊更新。
- CLI
-
- AWS CLI
-
若要取消正在進行的堆疊更新
下列
cancel-update-stack
指令會取消堆疊上的myteststack
堆疊更新:aws cloudformation cancel-update-stack --stack-name
myteststack
-
如需詳API細資訊,請參閱AWS CLI 指令參考CancelUpdateStack
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:取消指定堆疊上的更新。
Stop-CFNUpdateStack -StackName "myStack"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程CancelUpdateStack式參考中的。
-
繼續復原更新
使用continue-update-rollback
指令繼續復原更新。如需詳細資訊,請參閱繼續復原更新。
- CLI
-
- AWS CLI
-
若要重試更新還原
下列
continue-update-rollback
範例會從先前失敗的堆疊更新中繼續回復作業。aws cloudformation continue-update-rollback \ --stack-name
my-stack
此命令不會產生輸出。
-
如需詳API細資訊,請參閱AWS CLI 指令參考ContinueUpdateRollback
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
實施例 1:繼續命名堆棧的回滾,該堆棧應處於 'UPDATE_ ROLLBACK _FAILED' 狀態。如果繼續回滾成功,堆棧將進入狀態 'UPDATE_ ROLLBACK _COMPLETE'。
Resume-CFNUpdateRollback -StackName "myStack"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程ContinueUpdateRollback式參考中的。
-
建立堆疊
使用create-stack
指令建立堆疊。您必須提供堆疊名稱、有效範本的位置和任何輸入參數。參數鍵名稱區分大小寫。如果您輸入錯誤的參數索引鍵名稱,則 CloudFormation 不會建立堆疊,並報告範本不包含該參數。
依預設,命describe-stacks
令會傳回參數值。若要防止傳回敏感參數值 (例如密碼),請在 CloudFormation範本TRUE
中包含設定的NoEcho
屬性。
重要
使用 NoEcho
屬性不會遮罩任何儲存在下列資訊中的資訊:
-
模
Metadata
板部分。 CloudFormation 不會轉換、修改或密文Metadata
章節中包含的任何資訊。如需詳細資訊,請參閱Metadata。 -
Outputs
範本區段。如需詳細資訊,請參閱Outputs。 -
資源定義的
Metadata
屬性。如需詳細資訊,請參閱Metadata 屬性。
我們強烈建議您不要使用這些機制來包含敏感資訊,例如密碼或秘密。
重要
我們建議您使用堆疊 CloudFormation 範本中的動態參數來參照儲存和管理之外的敏感資訊 (例如 CloudFormation,在 Par AWS Systems Manager ameter Store 或),而不是直接在範本中嵌入敏感資訊 AWS Secrets Manager。
如需詳細資訊,請參閱最請勿在您的範本中內嵌憑證佳做法。
下列範例說明如何使用指定的名稱、範本和輸入參數建立新堆疊。
- CLI
-
- AWS CLI
-
建立 AWS CloudFormation 堆疊的步驟
下列
create-stacks
指令會myteststack
使用sampletemplate.json
範本建立名稱的堆疊:aws cloudformation create-stack --stack-name
myteststack
--template-bodyfile://sampletemplate.json
--parametersParameterKey=KeyPairName,ParameterValue=TestKey
ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2輸出:
{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }
如需詳細資訊,請參閱AWS CloudFormation 使用指南中的堆疊。
-
如需詳API細資訊,請參閱AWS CLI 指令參考CreateStack
中的。
-
- PowerShell
-
- 適用的工具 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:創建具有指定名稱的新堆棧。範本是URL透過自訂參數從 Amazon S3 取得 (PK1'' 代表範本內容中宣告的參數名稱,PV1'' 代表參數的值。 自定義參數也可以使用 '鍵' 和 '值' 而不是 '' 和 ParameterKey '' 來指定。ParameterValue 如果堆棧的創建失敗,它將被回滾(相同指定-DisableRollback $ 假)。
New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
實施例 4:創建具有指定名稱的新堆棧。範本是URL透過自訂參數從 Amazon S3 取得 (PK1'' 代表範本內容中宣告的參數名稱,PV1'' 代表參數的值。 自定義參數也可以使用 '鍵' 和 '值' 而不是 '' 和 ParameterKey '' 來指定。ParameterValue 如果堆棧的創建失敗,它將被回滾(相同指定-DisableRollback $ 假)。指定的通知AENs將會收到已發佈的堆疊相關事件。
New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } ` -NotificationARN @( "arn1", "arn2" )
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程CreateStack式參考中的。
-
或者,您可以指定樣板檔的 AWS Systems Manager 位置。
- AWS CLI
-
下列
create-stack
指令會myteststack
使用範本的 AWS Systems Manager 文件建立名稱的堆疊URL。aws cloudformation create-stack --stack-name
myteststack
\ --template-url"ssm-doc://arn:aws:ssm:us-east-1:123456789012:document/documentName"
輸出:
{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }
建立包含轉換的堆疊
使用指deploy
令建立包含轉換的堆疊。
若要從包含轉換的範本建立堆疊,您必須使用變更集。請使用指令將這些步驟合併為單一deploy
指令,而不是建立變更集然後啟動變更集。
- AWS CLI
-
以下
deploy
命令創建具有指定名稱,模板和輸入參數的堆棧。aws cloudformation deploy --stack-name
myteststack
\ --template/path_to_template/my-template.json
\ --parameter-overridesKey1=Value1 Key2=Value2
刪除堆疊
使用delete-stack
指令刪除堆疊。如需詳細資訊,請參閱從 CloudFormation主控台刪除堆疊。
- CLI
-
- AWS CLI
-
刪除堆疊的步驟
下列
delete-stack
範例會刪除指定的堆疊。aws cloudformation delete-stack \ --stack-name
my-stack
此命令不會產生輸出。
-
如需詳API細資訊,請參閱AWS CLI 指令參考DeleteStack
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:刪除指定的堆疊。
Remove-CFNStack -StackName "myStack"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程DeleteStack式參考中的。
-
如果刪除失敗並傳回DELETE_FAILED
狀態,您可以選擇使用--deletion-mode
選項強制刪除堆疊。這些是可搭配使用的下列值deletion-mode
:
-
STANDARD
:正常刪除堆疊。這是預設的刪除模式。 -
FORCE_DELETE_STACK
:刪除堆疊並略過所有無法刪除的資源。
- AWS CLI
-
以下
delete-stack
命令 force 使用帶有deletion-mode
參數的FORCE_DELETE_STACK
值刪除
堆棧:myteststack
aws cloudformation delete-stack --stack-name
myteststack
\ --deletion-mode FORCE_DELETE_STACK此命令不會產生輸出。
使用之後FORCE_DELETE_STACK
,您可以使用該list-stack-resources
命令列出在堆棧刪除過程中跳過的資源。保留的資源將顯示 DELETE _ SKIPPED 狀態。如需詳細資訊,請參閱列出堆疊資源。
描述堆棧事件
使用命describe-stack-events
令來描述堆棧事件。如需詳細資訊,請參閱監控堆疊進度。
- CLI
-
- AWS CLI
-
描述堆疊事件
下列
describe-stack-events
範例會針對指定的堆疊顯示 2 個最近的事件。aws cloudformation describe-stack-events \ --stack-name
my-stack
\ --max-items2
{
"StackEvents":[
{
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4e1516d0-e4d6-xmpl-b94f-0a51958a168c", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.556Z", "ResourceStatus":"UPDATE_COMPLETE"
},
{
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4dd3c810-e4d6-xmpl-bade-0aaf8b31ab7a", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.127Z", "ResourceStatus":"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
}
],
"NextToken":"eyJOZXh0VG9XMPLiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ=="
}
-
如需詳API細資訊,請參閱AWS CLI 指令參考DescribeStackEvents
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
實施例 1:返回指定堆棧的所有堆棧相關事件。
Get-CFNStackEvent -StackName "myStack"
示例 2:返回使用從指定令牌開始手動分頁指定堆棧的所有堆棧相關事件。每次調用後檢索下一頁的起始令牌 $null 表示沒有更多的事件仍然被檢索。
$nextToken = $null do { Get-CFNStack -StackName "myStack" -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程DescribeStackEvents式參考中的。
-
描述堆棧資源
- CLI
-
- AWS CLI
-
取得堆疊資源的相關資訊
下列
describe-stack-resource
範例會顯示指定堆疊中指定MyFunction
之資源的詳細資料。aws cloudformation describe-stack-resource \ --stack-name
MyStack
\ --logical-resource-idMyFunction
輸出:
{ "StackResourceDetail": { "StackName": "MyStack", "StackId": "arn:aws:cloudformation:us-east-2:123456789012:stack/MyStack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "MyFunction", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "Metadata": "{}", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } }
-
如需詳API細資訊,請參閱AWS CLI 指令參考DescribeStackResource
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:傳回範本中以邏輯 ID yDBInstance「M」指定之堆疊相關聯的資源描述。
Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程DescribeStackResource式參考中的。
-
描述堆棧資源
- CLI
-
- AWS CLI
-
取得堆疊資源的相關資訊
下列
describe-stack-resources
範例會顯示指定堆疊中資源的詳細資料。aws cloudformation describe-stack-resources \ --stack-name
my-stack
輸出:
{ "StackResources": [ { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "Timestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "Timestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "Timestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
-
如需詳API細資訊,請參閱AWS CLI 指令參考DescribeStackResources
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:傳回最 AWS 多 100 個與指定堆疊相關聯之資源的資源描述。要獲取與堆棧關聯的所有資源的詳細信息,請使用 Get-CFNStackResourceSummary,該獲取還支持結果的手動分頁。
Get-CFNStackResourceList -StackName "myStack"
範例 2:傳回範本中透過邏輯 ID「Ec2 EC2 Instance」指定與指定堆疊關聯的範本中所識別之 Amazon 執行個體的說明。
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 識別堆疊,在此情況下也是具有執行個體識別碼為「i-123456」的 Amazon EC2 執行個體。根據範本內容 (例如 Amazon S3 儲存貯體),也可以使用不同的實體資源來識別堆疊。
Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程DescribeStackResources式參考中的。
-
描述堆疊
- CLI
-
- AWS CLI
-
描述 AWS CloudFormation 堆疊
以下
describe-stacks
命令顯示myteststack
堆棧的摘要信息:aws cloudformation describe-stacks --stack-name
myteststack
輸出:
{ "Stacks": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Tags": [], "Outputs": [ { "Description": "Name of S3 bucket to hold website content", "OutputKey": "BucketName", "OutputValue": "myteststack-s3bucket-jssofi1zie2w" } ], "StackStatusReason": null, "CreationTime": "2013-08-23T01:02:15.422Z", "Capabilities": [], "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE", "DisableRollback": false } ] }
如需詳細資訊,請參閱AWS CloudFormation 使用指南中的堆疊。
-
如需詳API細資訊,請參閱AWS CLI 指令參考DescribeStacks
中的。
-
- Go
-
- SDK對於轉到 V2
-
注意
還有更多關於 GitHub。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 // StackOutputs defines a map of outputs from a specific stack. type StackOutputs map[string]string type CloudFormationActions struct { CfnClient *cloudformation.Client } // GetOutputs gets the outputs from a CloudFormation stack and puts them into a structured format. func (actor CloudFormationActions) GetOutputs(stackName string) StackOutputs { output, err := actor.CfnClient.DescribeStacks(context.TODO(), &cloudformation.DescribeStacksInput{ StackName: aws.String(stackName), }) if err != nil || len(output.Stacks) == 0 { log.Panicf("Couldn't find a CloudFormation stack named %v. Here's why: %v\n", stackName, err) } stackOutputs := StackOutputs{} for _, out := range output.Stacks[0].Outputs { stackOutputs[*out.OutputKey] = *out.OutputValue } return stackOutputs }
-
如需詳API細資訊,請參閱AWS SDK for Go API參考DescribeStacks
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:傳回描述使用者所有堆疊的 Stack 執行個體集合。
Get-CFNStack
示例 2:返回描述指定堆棧的 Stack 實例
Get-CFNStack -StackName "myStack"
範例 3:使用手動分頁傳回描述使用者所有堆疊的 Stack 執行個體集合。每次調用後檢索下一頁的起始令牌 $null 表示沒有更多的細節仍然被檢索。
$nextToken = $null do { Get-CFNStack -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程DescribeStacks式參考中的。
-
取得範本
- CLI
-
- AWS CLI
-
若要檢視 AWS CloudFormation 堆疊的範本主體
以下
get-template
命令顯示了myteststack
堆棧的模板:aws cloudformation get-template --stack-name
myteststack
輸出:
{ "TemplateBody": { "AWSTemplateFormatVersion": "2010-09-09", "Outputs": { "BucketName": { "Description": "Name of S3 bucket to hold website content", "Value": { "Ref": "S3Bucket" } } }, "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead" } } } } }
-
如需詳API細資訊,請參閱AWS CLI 指令參考GetTemplate
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
實施例 1:返回與指定堆棧關聯的模板。
Get-CFNTemplate -StackName "myStack"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程GetTemplate式參考中的。
-
列出堆疊資源
- CLI
-
- AWS CLI
-
若要列出堆疊中的資源
以下命令顯示指定堆棧中的資源列表。
aws cloudformation list-stack-resources \ --stack-name
my-stack
輸出:
{ "StackResourceSummaries": [ { "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "LastUpdatedTimestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "LastUpdatedTimestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
-
如需詳API細資訊,請參閱AWS CLI 指令參考ListStackResources
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
示例 1:返回與指定堆棧關聯的所有資源的描述。
Get-CFNStackResourceSummary -StackName "myStack"
範例 2:使用結果的手動分頁,傳回與指定堆疊相關聯之所有資源的描述。每次調用後檢索下一頁的起始令牌 $null 表示沒有更多的細節仍然被檢索。
$nextToken = $null do { Get-CFNStackResourceSummary -StackName "myStack" -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程ListStackResources式參考中的。
-
列出堆疊
使用指list-stacks
令列出堆疊。若要僅列示具有指定狀態碼的堆疊,請包括選--stack-status-filter
項。您可以為--stack-status-filter
選項指定一個或多個堆疊狀態碼。如需詳細資訊,請參閱堆疊狀態碼。
- CLI
-
- AWS CLI
-
列出 AWS CloudFormation 堆疊的步驟
下列
list-stacks
命令顯示狀態為之所有堆疊的摘要CREATE_COMPLETE
:aws cloudformation list-stacks --stack-status-filter
CREATE_COMPLETE
輸出:
[ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "TemplateDescription": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "StackStatusReason": null, "CreationTime": "2013-08-26T03:27:10.190Z", "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE" } ]
-
如需詳API細資訊,請參閱AWS CLI 指令參考ListStacks
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:傳回所有堆疊的摘要資訊。
Get-CFNStackSummary
範例 2:傳回目前正在建立之所有堆疊的摘要資訊。
Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"
範例 3:傳回目前正在建立或更新之所有堆疊的摘要資訊。
Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")
範例 4:傳回目前使用結果手動分頁建立或更新之所有堆疊的摘要資訊。每次調用後檢索下一頁的起始令牌 $null 表示沒有更多的細節仍然被檢索。
$nextToken = $null do { Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS") -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程ListStacks式參考中的。
-
更新堆疊
使用update-stack
指令更新堆疊。如需詳細資訊,請參閱直接更新堆疊。
- CLI
-
- AWS CLI
-
更新 AWS CloudFormation 堆疊
以下
update-stack
命令更新mystack
堆棧的模板和輸入參數:aws cloudformation update-stack --stack-name
mystack
--template-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=KeyPairName,ParameterValue=SampleKeyPair
ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2下列
update-stack
命令只會更新mystack
堆疊的SubnetIDs
參數值。如果您未指定參數值,則會使用範本中指定的預設值:aws cloudformation update-stack --stack-name
mystack
--template-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=KeyPairName,UsePreviousValue=true
ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2下列
update-stack
命令會將兩個堆疊通知主題新增至mystack
堆疊:aws cloudformation update-stack --stack-name
mystack
--use-previous-template --notification-arns"arn:aws:sns:use-east-1:123456789012:mytopic1"
"arn:aws:sns:us-east-1:123456789012:mytopic2"
若要取得更多資訊,請參閱《AWS CloudFormation 使用指南》中的AWS CloudFormation 堆疊更新。
-
如需詳API細資訊,請參閱AWS CLI 指令參考UpdateStack
中的。
-
- PowerShell
-
- 適用的工具 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/mytemplates/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
範例 5:使用從 Amazon S3 取得的指定範本更新堆疊 myStack '' (假設在此範例中包含IAM資源) 以及自訂參數。'PK1' 和 'PK2' 表示在模板中聲明的參數的名稱,'PV1' 和 'PV2' 表示其請求的值。自定義參數也可以使用 '鍵' 和 '值' 而不是 '' 和 ParameterKey '' 來指定。ParameterValue包含IAM資源的堆疊會要求您指定-Actions "CAPABILITY_IAM" 參數,否則更新將失敗並顯示 'InsufficientCapabilities' 錯誤。
Update-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) ` -Capabilities "CAPABILITY_IAM"
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程UpdateStack式參考中的。
-
驗證您的範本
使用指validate-template
令檢查範本檔案是否有語法錯誤。
在驗證期間, CloudFormation 首先檢查範本是否有效JSON。如果不是,請 CloudFormation 檢查模板是否有效YAML。如果兩項檢查都失敗,則會 CloudFormation 傳回範本驗證錯誤。
- CLI
-
- AWS CLI
-
驗證 AWS CloudFormation 範本的步驟
下列
validate-template
指令會驗證sampletemplate.json
範本:aws cloudformation validate-template --template-body
file://sampletemplate.json
輸出:
{ "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters": [], "Capabilities": [] }
若要取得更多資訊,請參閱《使用指南》中的〈AWS CloudFormation 使用 AWS CloudFormation 樣板〉。
-
如需詳API細資訊,請參閱AWS CLI 指令參考ValidateTemplate
中的。
-
- PowerShell
-
- 適用的工具 PowerShell
-
範例 1:驗證指定的範本內容。輸出詳細介紹了模板的功能,描述和參數。
Test-CFNTemplate -TemplateBody "{TEMPLATE CONTENT HERE}"
範例 2:驗證透過 Amazon S3 URL 存取的指定範本。輸出詳細介紹了模板的功能,描述和參數。
Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template
-
如需詳API細資訊,請參閱AWS Tools for PowerShell 指令程ValidateTemplate式參考中的。
-
以下是產生驗證錯誤的範例回應。
{
"ResponseMetadata": {
"RequestId": "4ae33ec0-1988-11e3-818b-e15a6df955cd"
},
"Errors": [
{
"Message": "Template format error: JSON not well-formed. (line 11, column 8)",
"Code": "ValidationError",
"Type": "Sender"
}
],
"Capabilities": [],
"Parameters": []
}
A client error (ValidationError) occurred: Template format error: JSON not well-formed. (line 11, column 8)
注意
此 validate-template
命令旨在僅檢查範本的語法。它不能確保您為資源指定的屬性值對該資源有效。它也不能判斷建立堆疊時將存在的資源數量。
您需要嘗試建立堆疊才能檢查操作有效性。 AWS CloudFormation 堆疊沒有沙箱或測試區域,因此您需要支付在測試期間建立的資源費用。
可用性範例
找不到所需的內容嗎? 請使用本頁底部的「提供意見反應」連結來要求新範例。