AWS CLI 和 的 CloudFormation 堆疊操作命令範例 PowerShell - AWS CloudFormation

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

AWS CLI 和 的 CloudFormation 堆疊操作命令範例 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 Cmdlet 參考 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 屬性不會遮罩任何儲存在下列資訊中的資訊:

我們強烈建議您不要使用這些機制來包含敏感資訊,例如密碼或秘密。

重要

建議您不要將敏感資訊直接嵌入 CloudFormation 範本中,而是在堆疊範本中使用動態參數來參考存放在 之外和管理的敏感資訊 CloudFormation,例如 AWS Systems Manager 參數存放區或 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詳細資訊,請參閱 命令參考 CreateStack中的 。 AWS CLI

PowerShell
適用於 的工具 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:建立具有指定名稱的新堆疊。範本是從URL具有自訂參數的 Amazon S3 取得 ('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:建立具有指定名稱的新堆疊。範本是從URL具有自訂參數的 Amazon S3 取得 ('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中的 。

或者,您可以指定範本檔案 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詳細資訊,請參閱 命令參考 DeleteStack中的 。 AWS CLI

PowerShell
適用於 的工具 PowerShell

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

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

如果刪除失敗並傳回DELETE_FAILED狀態,您可以選擇使用 --deletion-mode選項強制刪除堆疊。以下是可與 搭配使用的下列值deletion-mode

  • STANDARD:正常刪除堆疊。這是預設刪除模式。

  • FORCE_DELETE_STACK:刪除堆疊並略過所有無法刪除的資源。

AWS CLI

下列delete-stack命令強制使用 FORCE_DELETE_STACK值搭配 deletion-mode 參數刪除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"
  • 如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 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 "MyDBInstance" 在與指定堆疊相關聯的範本中識別的資源描述。

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
  • 如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 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:傳回最多 100 個與指定堆疊相關聯的資源 AWS 描述。若要取得與堆疊相關聯的所有資源詳細資訊,請使用 Get-CFNStackResourceSummary,這也支援手動分頁結果。

Get-CFNStackResourceList -StackName "myStack"

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

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

範例 3:傳回最多 100 個與堆疊相關聯的資源描述,其中包含執行個體 ID "i-123456" 所EC2識別的 Amazon 執行個體。若要取得與堆疊相關聯的所有資源詳細資訊,請使用 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"

描述堆疊

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詳細資訊,請參閱 命令參考 DescribeStacks中的 。 AWS CLI

Go
SDK for Go V2
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

import ( "context" "log" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/cloudformation" ) // 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(ctx context.Context, stackName string) StackOutputs { output, err := actor.CfnClient.DescribeStacks(ctx, &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詳細資訊,請參閱 參考 DescribeStacks中的 。 AWS SDK for Go API

PowerShell
適用於 的工具 PowerShell

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

Get-CFNStack

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

Get-CFNStack -StackName "myStack"
  • 如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 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詳細資訊,請參閱 命令參考 GetTemplate中的 。 AWS CLI

PowerShell
適用於 的工具 PowerShell

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

Get-CFNTemplate -StackName "myStack"
  • 如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 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"
  • 如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 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詳細資訊,請參閱 命令參考 ListStacks中的 。 AWS CLI

PowerShell
適用於 的工具 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中的 。

更新堆疊

使用 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詳細資訊,請參閱 命令參考 UpdateStack中的 。 AWS CLI

PowerShell
適用於 的工具 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中的 。

注意

若要移除所有通知,請[]針對 --notification-arns選項指定 的 。

驗證您的範本

使用 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詳細資訊,請參閱 命令參考 ValidateTemplate中的 。 AWS CLI

PowerShell
適用於 的工具 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中的 。

以下是產生驗證錯誤的回應範例。

{ "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 堆疊沒有沙盒或測試區域,因此您需要為測試期間建立的資源付費。

可用性範例

找不到所需的內容嗎? 使用此頁面底部的提供意見回饋連結來請求新的範例。