AWS CDK 简介
代码定义基础设施、与 Terraform 对照。
30 分钟
AWS CDK 简介
AWS CDK(Cloud Development Kit) 用 TypeScript、Python、Java 等 编程语言 生成 CloudFormation,再部署 AWS 资源。与 terraform-essentials 同属 IaC,但 AWS 原生、强类型、可单元测试。
学习目标
- 理解 CDK App → Stack → Construct 层次
- 对照 HCL 与 CDK 的取舍
- 知道 CodeRoadMap 推荐 Terraform + GitOps 为主路径
核心内容
CDK vs Terraform
| CDK | Terraform | |
|---|---|---|
| 语言 | TS / Java / Python | HCL |
| 状态 | CloudFormation 栈 | tfstate |
| 多云 | 主要 AWS | AWS/Azure/GCP/K8s |
| 生态 | AWS 官方 | HashiCorp 社区 |
CodeRoadMap 实验拓扑(VPC + RDS + EC2)在 TF 与 CDK 均可描述;团队已学 TF 时 优先 TF,深度 AWS-only 可选 CDK。
最小 Stack(TypeScript 概念)
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
export class LabStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new ec2.Vpc(this, 'CoderoadmapVpc', { maxAzs: 2 });
}
}
工作流
cdk init → cdk synth(生成 CFN)→ cdk deploy → CloudFormation 创建资源
CLI 示例
npm install -g aws-cdk
cdk init app --language typescript
cdk synth # 预览 CloudFormation 模板
cdk diff # 与已部署栈对比
cdk deploy # 需 bootstrap:cdk bootstrap aws://ACCOUNT/REGION
cdk destroy # 实验结束销毁
与 docker-essentials 构建镜像、kubernetes-essentials 部署 Chart 一样,CDK 是 基础设施层的代码。
练习
-
cdk init生成空栈,cdk synth查看 CFN JSON - 读生成的模板,找到 VPC 相关 Resource
- 说明 CodeRoadMap 为何文档以 Terraform 为主、CDK 何时更合适