在 CloudFormation 的 Stack 被更新的時候,CloudFormation 有可能會針對要更新的資源做三種不同的處理 [1]:
- Update with No Interruption
- Updates with Some Interruption
- Replacement
其中第一種是直接完成更新,不會導致資源的服務中斷;第二種會導致一段時間的資源服務中斷,但 Resource ID 不會改變;第三種是會建立新的資源然後替換舊的資源,所以有可能資源的服務不會中斷,但必然導致 Resource ID 改變。
當 CloudFormation 在更新資源的時候,會依據被更新的資源的類型,套用上述三種更新方法的其中一種。因此具體而言到底會採用哪個方法更新,必須看被更新的東西是什麼而定。除此之外,更新的行為是以 Stack Property 為單位的。舉例來說:
AWS::ECS::Cluster ClusterName: Update requires: Replacement Tags: Update requires: No interruption
在 CloudFormation 的文件 [2] 中,可以看到 ECS Cluster 如果是 ClusterName 這個屬性變更了的話,會採取的更方式是 Replacement;但如果是 Tags 的變更的話,則會採取 Update with No Interruption。
參考資料
- AWS Documentation » AWS CloudFormation » User Guide » Working with Stacks » AWS CloudFormation Stacks Updates » Update Behaviors of Stack Resources
- AWS Documentation » AWS CloudFormation » User Guide » Template Reference » AWS Resource and Property Types Reference
- 1Strategy/fargate-cloudformation-example