本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
-
如需API詳細資訊,請參閱 命令參考 CancelUpdateStack
中的 。 AWS CLI
-
- 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
此命令不會產生輸出。
-
如需API詳細資訊,請參閱 命令參考 ContinueUpdateRollback
中的 。 AWS CLI
-
- PowerShell
-
- 適用於 的工具 PowerShell
-
範例 1:繼續復原已命名堆疊,其應該處於 狀態 'UPDATE_ROLLBACK_FAILED'。如果繼續復原成功,堆疊將進入狀態 'UPDATE_ROLLBACK_COMPLETE'。
Resume-CFNUpdateRollback -StackName "myStack"
-
如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 ContinueUpdateRollback中的 。
-
建立堆疊
使用 create-stack
命令來建立堆疊。您必須提供堆疊名稱、有效範本的位置和任何輸入參數。參數金鑰名稱區分大小寫。如果您輸入錯誤的參數索引鍵名稱, CloudFormation 不會建立堆疊並報告範本不包含該參數。
根據預設, describe-stacks
命令會傳回參數值。為了防止密碼等敏感參數值遭到傳回,請在 CloudFormation範本TRUE
中包含 設定為 的 NoEcho
屬性。
重要
使用 NoEcho
屬性不會遮罩任何儲存在下列資訊中的資訊:
-
Metadata
範本 section. CloudFormation 不會轉換、修改或修訂您在Metadata
區段中包含的任何資訊。如需詳細資訊,請參閱Metadata CloudFormation 範本的 區段語法參考。 -
Outputs
範本區段。如需詳細資訊,請參閱Outputs CloudFormation 範本的 區段語法參考。 -
資源定義的
Metadata
屬性。如需詳細資訊,請參閱Metadata 屬性。
我們強烈建議您不要使用這些機制來包含敏感資訊,例如密碼或秘密。
重要
建議您不要將敏感資訊直接嵌入 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-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詳細資訊,請參閱 命令參考 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-overridesKey1=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-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詳細資訊,請參閱 命令參考 DescribeStackEvents
中的 。 AWS CLI
-
- 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-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詳細資訊,請參閱 命令參考 DescribeStackResource
中的 。 AWS CLI
-
- 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" } } ] }
-
如需API詳細資訊,請參閱 命令參考 DescribeStackResources
中的 。 AWS CLI
-
- 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"
-
如需API詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考 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詳細資訊,請參閱 命令參考 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" } } ] }
-
如需API詳細資訊,請參閱 命令參考 ListStackResources
中的 。 AWS CLI
-
- 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-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詳細資訊,請參閱 命令參考 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 堆疊沒有沙盒或測試區域,因此您需要為測試期間建立的資源付費。
可用性範例
找不到所需的內容嗎? 使用此頁面底部的提供意見回饋連結來請求新的範例。