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 維護和更新

常見使用情境

  1. 基礎設施自動化
  2. 跨環境一致性
  3. 快速災難復原
  4. 合規性和審計