与 AWS CDK 关系
CDK 生成 CFN;与 aws-cdk 节点衔接。
25 分钟
与 AWS CDK 关系
AWS CDK 用 TypeScript、Python、Java 等 编程语言 定义 Construct,合成(synth) 为 CloudFormation 模板,再经 cdk deploy 创建 Stack。学 CFN YAML 有助于 读 CDK 输出、排障 Stack 事件。
学习目标
- 理解 CDK App → Stack → Construct → CFN 模板 链路
- 会用
cdk synth对照本 track 的 YAML 写法 - 衔接 aws-cdk 与 terraform-essentials
合成链路
CDK 源码(TS/Java)
↓ cdk synth
CloudFormation template.json / yaml ← 本 track 学的格式
↓ cdk deploy / CloudFormation
AWS 资源(EC2、VPC、Lambda…)
CDK 不替代 CloudFormation 引擎——它是 模板生成器 + 部署 CLI。SAM 类似,靠 Transform 宏扩展。
最小 VPC(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) {
super(scope, id);
new ec2.Vpc(this, 'CoderoadmapVpc', {
maxAzs: 2,
cidr: '10.0.0.0/16',
});
}
}
cdk synth > cfn-out.yaml # 打开文件找 AWS::EC2::VPC
cdk diff # 类似 ChangeSet 预览
cdk deploy # 需 cdk bootstrap
三者分工(CodeRoadMap)
| 工具 | 适用 |
|---|---|
| Terraform | 推荐:VPC、RDS、EKS、CI plan/apply |
| CDK | AWS-only、强类型、Construct 复用 |
| 裸 CFN YAML | 读文档、SAM、Stack 排障 |
团队已学 TF 时 优先 TF;深度 AWS-only 或已有 CDK 基线时选 CDK。本 track 的 YAML 是 三者的共同下游语言。
练习
- 运行 aws-cdk 练习中的
cdk synth,定位AWS::EC2::VPC - 对比 cf-resources 手写 VPC 与 CDK 生成 Properties 差异
- 说明为何 CodeRoadMap 文档以 TF 为主、CDK 何时更合适