AWS - CDK
CDK Cloud Development Kit
是 AWS 的「以程式碼建構基礎架構(IaC)」框架。用 Python、TypeScript、Java、C# 等語言寫程式,CDK 會自動轉換成 CloudFormation Template,再由 CloudFormation 幫你部署。
為什麼要用 CDK
| 傳統 IaC 問題 | CDK 解法 |
|---|
| CloudFormation YAML 很冗長 | 用程式語法組裝資源(OOP + 重用) |
| 環境變數、邏輯不好寫 | 可以用條件式、迴圈、函式 |
| 想封裝可重用架構 | CDK Construct 封裝一整組元件 |
架構概念
| 名稱 | 說明 |
|---|
| App | 整個 CDK 專案的 root(entrypoint) |
| Stack | 一組資源(對應 CloudFormation Stack) |
| Construct | 可重用的基礎元件(CDK 的最小單位) |
一個 App 可包含多個 Stack,每個 Stack 內有多個 Construct。
CDK Workflow
1 2 3 4 5 6
| cdk init # 建立專案骨架 cdk synth # 轉換成 CloudFormation Template cdk diff # 比對現有 Stack 變更 cdk deploy # 佈署 Stack 到 AWS cdk destroy # 移除 Stack
|
CDK CLI 指令大全
| 指令 | 功能 | 備註 |
|---|
cdk init | 建立新專案 | --language typescript/python/java |
cdk synth | 產生 CloudFormation 模板 | 實際部署前可檢查 |
cdk diff | 比對本地與線上 Stack | 類似 Change Set |
cdk deploy | 部署 Stack | 自動產生與套用 Template |
cdk destroy | 刪除 Stack | 等同 CloudFormation delete-stack |
cdk bootstrap | 初始化部署環境(S3、IAM Role) | 必做第一次 |
cdk list | 顯示 App 中所有 Stack | |
cdk doctor | 檢查 CLI 與環境設定 | 偵錯用 |
cdk context | 管理 context cache | e.g. 清除 cached lookup |
cdk metadata | 檢查 Stack metadata | 進階排錯 |
常見組合
1 2 3 4
| cdk bootstrap aws://ACCOUNT/REGION cdk synth cdk diff cdk deploy
|