AWS - CloudFormation
簡介
AWS 上的 IaC(Infrastructure as Code) 服務,讓使用者可以用 YAML/JSON Template 定義 AWS 資源,再由 CloudFormation 自動化建立,更新與刪除。
你只需要描述 需要什麼資源 不需要逐一手動設定 -> CloudFormation 會幫你處理資源之間的依賴與建立順序
核心概念
Template
- 定義基礎設施的藍圖:格式為 JSON/YAML
- 包含以下區塊
- Parameters: 允許在建立 Stack 時傳入變數
- Resources: 核心,定義要建議的 AWS 資源
- Outputs: 輸出資訊
- Mappings & Conditions: 做區域或環境的判斷
Stack
- Template 實體化結果
- Example: 用 Template 建立 EC2 + VPC + RDS -> 這個整體就是 Stack
- Stack 可以
- Create: 依照 Template 建立資源
- Update: 修改 Template 自動更新相關資源
- Delete: 刪除整個 Stack 連帶清除資源
Change Set
- 在更新 Stack 前,可先產生 Change Set 來模擬看看會有哪些影響(避免誤刪誤建)
Nested Stacks
- 將大 Template 拆解成小 Template,Reuse 且模組化設計
- 例如一個 VPC Stack 可被不同專案的 App Stack 引用
Drift Detection
- 偵測實際資源設定是否跟 Template 不同(如果有人手動改了某個資源)
範本
AWS 提供一些地方讓你可以參考以及運用這些已經創建好的 Template
AWS Quick Starts
- 提供由 AWS 解決方案架構師和合作夥伴創建的參考部署
- 包含預先建立的 CloudFormation 範本
- 提供最佳實務架構部署方案
- 經過驗證和測試的範本
AWS Solutions Library
- 提供完整的 AWS 解決方案集合
- 包含詳細的架構指南和 CloudFormation 範本
- 提供多種產業和使用案例的解決方案
- 由 AWS 維護和更新
常見使用情境
- 基礎設施自動化
- 跨環境一致性
- 快速災難復原
- 合規性和審計