使用和建立、更新和刪除 CloudFormation 堆疊 AWS CLI PowerShell - AWS CloudFormation

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

使用和建立、更新和刪除 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
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

此命令不會產生輸出。

PowerShell
適用的工具 PowerShell

實施例 1:繼續命名堆棧的回滾,該堆棧應處於 'UPDATE_ ROLLBACK _FAILED' 狀態。如果繼續回滾成功,堆棧將進入狀態 'UPDATE_ ROLLBACK _COMPLETE'。

Resume-CFNUpdateRollback -StackName "myStack"

建立堆疊

使用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-body file://sampletemplate.json --parameters ParameterKey=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-overrides Key1=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-items 2 { "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==" }
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-id MyFunction

輸出:

{ "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" } } }
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" } } ] }
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"

描述堆疊

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" } } ] }
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-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,ParameterValue=SampleKeyPair ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2

下列update-stack命令只會更新mystack堆疊的SubnetIDs參數值。如果您未指定參數值,則會使用範本中指定的預設值:

aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=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 堆疊沒有沙箱或測試區域,因此您需要支付在測試期間建立的資源費用。

可用性範例

找不到所需的內容嗎? 請使用本頁底部的「提供意見反應」連結來要求新範例。