Skip to content
返回云服务

AWS CDK 基础设施代码

用 TypeScript/Python/Java 定义 AWS 基础设施,编译到 CloudFormation 带构造。

AWS进阶

为什么

CDK 给真正编程 — 循环、条件、抽象 — 做基础设施。构造封装模式。aws-cdk-lib 有 200+ L2 构造带合理默认。合成到 CloudFormation。

何时使用

带逻辑的 AWS 基础设施、可复用构造和团队熟悉代码时用。多云用 Terraform,仅 serverless 用 SAM。

如何做

1. 初始化 — cdk init app --language typescript 2. 堆栈 — class extends Stack,构造函数中定义资源 3. 构造 — L1(原始 CFN)、L2(合理默认)、L3(模式) 4. 合成 — cdk synth,输出 CloudFormation 模板 5. 部署 — cdk deploy,应用前 diff 6. Diff — cdk diff,看变更 7. 切面 — 访问所有构造,应用横切(标签、安全) 8. 测试 — jest + @aws-cdk/assert,快照测试

示例

import * as cdk from "aws-cdk-lib"; import * as s3 from "aws-cdk-lib/aws-s3"; import * as lambda from "aws-cdk-lib/aws-lambda"; export class WebStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const bucket = new s3.Bucket(this, "uploads", { encryption: s3.BucketEncryption.KMS, blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, lifecycleRules: [{ transitions: [{ storageClass: s3.StorageClass.GLACIER, transitionAfter: cdk.Duration.days(90) }] }], }); const fn = new lambda.Function(this, "api", { runtime: lambda.Runtime.NODEJS_20_X, handler: "index.handler", code: lambda.Code.fromAsset("./dist"), environment: { BUCKET: bucket.bucketName }, }); bucket.grantReadWrite(fn); } } // cdk deploy WebStack --parameters Env=prod

常见问题

  • ⚠合成非确定性 — 用 cdk.json 上下文、固定版本可复现构建
  • ⚠L1 vs L2 混淆 — L2 有默认、L1 原始,除非需原始控制否则优先 L2
  • ⚠导入资源不可管理 — fromBucketArn(只读)vs new Bucket(管理)

最佳实践

  • ✓用 L2 构造 — 合理默认、内置安全最佳实践
  • ✓写构造测试 — jest 快照捕获意外基础设施变更
  • ✓横切用切面 — 标签所有资源、全局强制加密

常见问题解答

什么是AWS CDK 基础设施代码?它解决什么问题?

用 TypeScript/Python/Java 定义 AWS 基础设施,编译到 CloudFormation 带构造。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手AWS CDK 基础设施代码?

两步即可跑通:① 初始化 — cdk init app --language typescript;② 堆栈 — class extends Stack,构造函数中定义资源。建议先用免费套餐验证流程,再接入生产环境。

AWS CDK 基础设施代码 最容易踩的坑是什么?

最高频的问题是:合成非确定性 — 用 cdk.json 上下文、固定版本可复现构建。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

AWS CDK 基础设施代码 的最佳实践有哪些?

AWS CDK 基础设施代码 的最佳实践包括:用 L2 构造 — 合理默认、内置安全最佳实践;写构造测试 — jest 快照捕获意外基础设施变更;横切用切面 — 标签所有资源、全局强制加密。其中首条「用 L2 构造 — 合理默认、内置安全最佳实践」应作为团队默认规范写入 IaC 模板。

AWS CDK 基础设施代码 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS CDK 基础设施代码 多数提供免费套餐,先在免费额度内验证再放量。