本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用快速模式更快速地部署 AWS CloudFormation 堆疊
透過 CloudFormation 快速模式,您可以在 CloudFormation 套用資源組態後立即完成堆疊操作,而無需等待資源完全穩定。在反覆開發工作流程期間,使用快速模式可大幅加快堆疊的建立、更新和刪除速度。
快速模式適用於所有現有的 CloudFormation 範本。您不需要進行任何範本變更,即可使用快速模式。
主題
何時使用快速模式
使用快速模式進行開發和反覆運算工作流程,其中速度比等待完整的資源穩定更重要。在下列情況下使用快速模式:
-
您可以在開發期間反覆查看範本變更。
-
對於資源組態是否有效,您希望獲得更快的意見回饋。
-
在繼續之前,您不需要等待資源完全運作。
對於在考慮部署完成之前需要驗證資源是否完全穩定且可運作的生產部署,請使用預設部署模式。
快速模式的運作方式
在預設部署模式中,CloudFormation 會等待每個資源達到完全穩定狀態,然後再將資源報告為完成。例如,建立 Amazon EC2 執行個體時,CloudFormation 會等到執行個體處於 running 狀態。
在快速模式下,CloudFormation 通常會在 API 呼叫成功建立、更新或刪除資源時,將資源操作視為已完成。在大多數情況下,CloudFormation 不會等待資源達到其最終操作狀態。
這表示快速模式堆疊操作完成後:
-
資源可能仍在初始化或傳播變更。
-
資源可能尚未準備好提供流量或接受連線。
-
刪除操作可能仍在進行中。
CloudFormation 如何在快速模式下處理相依性
快速模式遵守範本中定義的資源相依性。如果資源參考另一個資源的 ID 或屬性 (透過 Ref或 Fn::GetAtt),CloudFormation 會在啟動相依資源之前確認套用參考資源的組態。如果相依資源因為參考的資源尚未就緒而遇到暫時性失敗,CloudFormation 會重試 操作。
彼此沒有相依性的資源可以平行進行。
快速模式不會變更資源的相依性順序。當堆疊操作報告完成時,它會變更。
快速模式入門
您可以使用快速模式搭配 AWS Command Line Interface (AWS CLI)、 AWS Cloud Development Kit (AWS CDK) (AWS CDK)、CloudFormation 主控台和變更集。下列各節說明如何使用每種方法啟用快速模式。
搭配 使用快速模式 AWS CLI
若要搭配 使用快速模式 AWS CLI,請將 --deployment-config 參數新增至堆疊操作命令。
使用快速模式建立堆疊
下列命令會使用快速模式建立堆疊:
aws cloudformation create-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
使用快速模式更新堆疊
下列命令會使用快速模式更新堆疊:
aws cloudformation update-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
刪除具有快速模式的堆疊
下列命令會使用快速模式刪除堆疊:
aws cloudformation delete-stack --stack-namemy-stack\ --deployment-config '{"mode": "EXPRESS"}'
搭配 使用快速模式 AWS CDK
若要搭配 AWS Cloud Development Kit (AWS CDK) (AWS CDK) 使用快速模式,請使用 --express旗標搭配 cdk deploy命令:
cdk deploy --express
搭配 SAM AWS 使用快速模式
若要搭配 AWS SAM CLI 使用快速模式,請將 --express旗標新增至您的部署或同步命令:
sam deploy --express
sam sync --express
若要在專案組態中保留 設定,請使用 --save-params:
sam deploy --express --save-params
這會儲存至express = true您的 samconfig.toml 檔案,因此後續部署會自動使用快速模式。
啟用快速模式時,CLI AWS SAM 會將部署組態傳遞給 CloudFormation。--disable-rollback 旗標會控制部署組態中的復原行為。
搭配 主控台使用快速模式
在 CloudFormation 主控台中建立或更新堆疊時,您可以在設定堆疊選項步驟中啟用快速模式。在部署選項下,選取部署模式的快速。
使用快速模式搭配變更集
您可以在建立變更集時指定部署組態,以使用快速模式搭配變更集:
aws cloudformation create-change-set --stack-namemy-stack\ --change-set-namemy-change-set\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
當您執行變更集時,CloudFormation 會套用變更集建立期間指定的快速模式部署組態。
使用快速模式的轉返行為
當您使用快速模式時,CloudFormation 預設會停用轉返。如果資源操作失敗,CloudFormation 不會自動轉返變更。
若要在使用快速模式時重新啟用轉返,請在 --deployment-config 參數false中disableRollback將 設定為 :
aws cloudformation create-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS", "disableRollback": false}'
快速模式和巢狀堆疊
當您在父堆疊上使用快速模式時,設定會傳播到階層中的所有巢狀堆疊。您不需要為每個巢狀堆疊分別指定快速模式。根堆疊及其巢狀堆疊中的所有資源都會在套用其組態後立即完成。
資源整備考量
快速模式會在資源達到完全穩定狀態之前完成資源操作,因此任何資源可能需要額外的時間才能完全準備好提供流量或完成多區域傳播。下表說明使用不同資源類型的範例,您可以預期的資源行為類型。這些範例是說明性的,不代表支援資源的完整清單。
| Resource Type (資源類型) | 作業 | 就緒狀態行為 |
|---|---|---|
| Amazon CloudFront 分佈 | 建立/更新 | 套用組態後,分發可能需要幾分鐘的時間才能全域部署。 |
| Amazon EC2 執行個體 | 建立 | 堆疊操作完成後,執行個體可能仍在初始化 (執行使用者資料指令碼、狀態檢查)。 |
| AWS Lambda 函數 | 刪除 | 刪除操作報告完成後,函數資源可能仍處於清除狀態。 |
| Amazon Elastic Container Service (Amazon ECS) 服務 | 建立/更新 | 堆疊操作完成後,服務任務可能仍然開始或達到穩定狀態。 |
不支援的功能和限制
快速模式不支援下列功能和服務:
- CloudFormation StackSets
-
CloudFormation 不支援使用 StackSets 操作的快速模式。
下列資源具有具有快速模式的特定行為:
- 自訂資源
-
自訂資源 (包括
Custom::*AWS::CloudFormation::CustomResource和資源) 遵循其預設行為。CloudFormation 會等待自訂資源傳送回應訊號,再考慮操作完成,即使在快速模式下也是如此。若要防止緩慢或停滯的自訂資源延遲快速反覆運算工作流程,請使用ServiceTimeout屬性設定最長等待時間。如需詳細資訊,請參閱回應逾時。
與 AWS CDK 熱插拔部署的比較
下表比較快速模式與 AWS CDK 熱插拔部署。
| 功能 | 快速模式 | AWS CDK hotswap |
|---|---|---|
| 部署機制 | 將 CloudFormation 用於所有資源操作 | 略過 CloudFormation 並直接呼叫服務 APIs |
| 範本相容性 | 適用於所有現有的 CloudFormation 範本 | 支援一組有限的資源類型 |
| 堆疊狀態 | 堆疊狀態保持與範本一致 | 堆疊狀態可能會偏離範本 |
| 轉返支援 | 支援轉返 (預設為停用) | 無轉返支援 |
| 資源涵蓋範圍 | 所有 CloudFormation 資源類型 | 資源類型有限 (AWS Lambda、Amazon ECS、 AWS Step Functions 等) |
| 建議用途 | 開發和反覆運算工作流程 | 僅限具有支援資源的開發工作流程 |
相關資源
-
AWS CloudFormation API 參考中的 CreateStack