Study Notes - CloudFormation Stack
繼續整理 CloudFormation Stack 的筆記。主要包含 Stack 工作流程、Stack Status、Update Stack。
CloudFormation Stacks
Stack
是根據 Template 的邏輯資源 (Logical Resources) 描述,所建立出來的實體資源 (Physical Resources)。
用 OOP 來講,Template 就是一推 Class 的集合,然後 Stack 就是 new 出來的 Instances 集合,可以 new 各式各樣的需求,像是開發環境、測試環境、效能測試環境、正式環境等。
Stack 的增刪查改 (CRUD) 都可以在 AWS Console 建立,也可以透過 CLI 建立,以下是 CLI 的例子:
1 | aws cloudformation create-stack \ |
找出狀態是 CREATE_COMPLETE
的 Stacks
1 | aws cloudformation list-stacks \ |
以下是其他描述 Stack 相關資訊的 CLI:
1 | # Stack 的狀態 |
建立 Stack 的工作流程
建立 Stack 需要先準備好 Template,可以使用官方提供的 Sample Templates,或者自行建立,工作流程如下圖 (取自官方文件):
Stack Status Codes
CloudFormation Stack 的增刪查改會有以下 Status Codes:
CREATE_COMPLETE
: 建立完成 Stack(s)CREATE_IN_PROGRESS
: 正在建立 Stack(s)CREATE_FAILED
: 建立 Stack(s) 失敗, 可能是權限、或者是建立資源時 timeoutDELETE_COMPLETE
: 成功刪除 stack(s)DELETE_FAILED
: 刪除 stack(s) 失敗,可能還有一些資源還在運行。可以再刪除一次,或者從 stack event 查看哪一些資源刪除失敗。DELETE_IN_PROGRESS
: 正在刪除 Stack(s)REVIEW_IN_PROGRESS
: review 正在建立的 stack(s),但是只會產生 StackId, 並沒有真的建立相關資源。ROLLBACK_COMPLETE
: 建立 Stack 失敗後,或者建立過程中被取消的 Stack,成功還原 (Rollback)ROLLBACK_FAILED
: 建立 Stack 失敗後,或者建立過程中被取消的 Stack,還原失敗ROLLBACK_IN_PROGRESS
: 建立 Stack 失敗後,或者建立過程中被取消的 Stack,正在還原UPDATE_COMPLETE
: 成功更新 stacksUPDATE_COMPLETE_CLEANUP_IN_PROGRESS
: 成功更新 Stack 之後,正在清理舊的資源。UPDATE_IN_PROGRESS
: 正在更新 StackUPDATE_ROLLBACK_COMPLETE
: 更新 stack 失敗之後,順利還原UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS
: 更新 stack 失敗之後,正在清理新建立的資源。UPDATE_ROLLBACK_FAILED
: 更新 stack 失敗之後,還原失敗。可以刪除整個 stack 或者 call supportUPDATE_ROLLBACK_IN_PROGRESS
: 更新 stack 失敗之後,正在還原
因為 官方文件 並沒有狀態圖,下圖是我根據文件描述的狀態整理的 CloudFormation Status Flow
:
Stack Update: StackSet
更新 Stack 的模式有兩種: direct update
or creating and executing change sets
. 流程如下 (圖取自官方文件):
- direct update: 直接更新既有 stack 相關的資源
- ChangeSets: 可以 preview CloudFormation 將會更新哪一些資源,再決定是否執行更新
- 更新的差異會列出哪一些新增、哪一些刪除
結論
Stack 是 CloudFomration 執行 Template 的產出物,用物件導向來思考:Template = Class
,Stack = Instance
。有了 Template、Stack,了解了生命週期,接下來整理的開發 Template 過程中,如何有效的 Debug Template 的經驗分享。
延伸閱讀
系列文章
- Study Notes - CloudFormation
- Study Notes - CloudFormation Template Anatomy
- Study Notes - CloudFormation Resource Types and Attributes
- Study Notes - CloudFormation Stack
- Study Notes - CloudFormation Debugging
延伸閱讀 (站內)
參考資料
更新紀錄
- 2017/03/31: 初版
- 2018/12/22: 調整排版