# 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
更新於