# 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
|