本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解堆疊部署時間
當您建立、更新或刪除堆疊時,CloudFormation 會在範本中佈建每個資源,並在您的資源準備好提供流量時報告堆疊操作已完成。本主題說明 CloudFormation 如何佈建堆疊、堆疊操作需要多長時間,以及如何縮短部署時間。
CloudFormation 如何佈建堆疊
CloudFormation 會讀取範本中資源之間的相依性。透過 Ref、 Fn::GetAtt或 參考其他資源的資源DependsOn,會在參考資源之後佈建。彼此沒有相依性的資源會平行佈建。
對於每個資源,CloudFormation 會套用資源組態,然後確認資源已準備好為流量提供服務。CloudFormation 會在每個資源就緒時立即向前移動,因此相依資源會盡早開始。因此,具有較長相依性鏈的堆疊會看到最大的改善。當堆疊中的每個資源都就緒時,CloudFormation 會報告堆疊操作已完成。
此行為會自動套用至堆疊操作。您不需要變更範本或設定任何參數。
影響部署時間的因素
- 相依性鏈
-
彼此相依的最長資源鏈會設定堆疊操作的最短時間。不屬於該鏈的資源會平行佈建,通常不會新增至總時間。
- 需要更長的時間才能準備就緒的資源
-
包含 Amazon RDS 資料庫執行個體、Elastic Load Balancing 負載平衡器、NAT 閘道或 Amazon CloudFront 分佈等資源的工作負載,會花費大部分的部署時間等待這些資源準備好為流量提供服務。
- 參考資源屬性的輸出
-
如果堆疊輸出參考資源屬性,例如使用
Fn::GetAtt,CloudFormation 會等到屬性值可用,再完成堆疊操作。此等待可以為操作增加時間。
縮短部署時間的方法
-
使用快速模式進行開發反覆運算。快速模式會在 CloudFormation 套用資源組態時立即完成堆疊操作,而資源會在背景中繼續就緒。如需詳細資訊,請參閱快速模式。
-
依資源變更的頻率分組資源。將需要更長的時間才能就緒的資源,例如資料庫,放置在與您經常更新的資源分開的堆疊中。更新經常變更的堆疊,則不包含執行時間較長的資源。
-
移除您不需要的相依性。
DependsOn只有在資源必須等待另一個資源時宣告。較少的相依性可讓 CloudFormation 平行佈建更多資源。 -
只有在您需要時才參考輸出中的資源屬性。參考資源屬性的輸出可以擴展堆疊操作,直到這些值可用為止。