re:Invent 来自 AWS CDK 的特别更新
Source: Dev.to
TL;DR
在 2025 年即将结束之际,我们对卓越的 CDK 社区心怀感激!今年带来了激动人心的更新:CDK Mixins 进入开发者预览、用于 AI 辅助的 AWS IaC MCP Server、完整的 EC2 Image Builder L2 支持、Bedrock AgentCore 构造,以及强大的新模式如 L1 构造接受其他构造作为参数。我们看到了社区(包括 AWS 内部和外部)的精彩贡献,推出了新的 Grants 模式,为 Lambda 托管实例、Lambda 持久函数、Lambda 多租户、Route 53 故障转移路由、DynamoDB GSI 复合键、VPC 端点用于 ACM/ACM‑PCA 等添加了 L2 构造,内容丰富。感谢大家让 CDK 每天都在进步!
感谢致辞
在 2025 年收官之际,我们想抽出时间感谢我们了不起的 CDK 社区。过去一年非同凡响——不仅因为我们发布的功能,更因为让 CDK 成为今天模样的卓越人士。
- 外部贡献者:你们提交 PR、报告问题、回答提问,并用 CDK 构建了惊人的项目。无论是大型 L2 构造还是小型 bug 修复,你们的贡献让 CDK 对所有人都更好。感谢你们的时间、专业和奉献。
- 社区成员:无论你是在 Stack Overflow 提问、在 Slack 分享知识,还是在 GitHub Discussions 中帮助他人,你们都在打造一个友好、协作的社区,使 CDK 与众不同。
在假期来临之际,我们对每一位成员心存感激。祝大家 2026 年精彩纷呈! 🎄✨
主要特性
CDK Mixins – 开发者预览
CDK Mixins 从根本上改变了你组合和复用基础设施抽象的方式。将高级功能应用于任何构造——L1、L2 或自定义——而无需锁定特定实现。
import { Mixins } from '@aws-cdk/mixins-preview';
import '@aws-cdk/mixins-preview/with';
import { EncryptionAtRest, AutoDeleteObjects } from '@aws-cdk/mixins-preview/aws-s3/mixins';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as logs from 'aws-cdk-lib/aws-logs';
// Fluent syntax
const bucket = new s3.CfnBucket(this, 'Bucket')
.with(new EncryptionAtRest())
.with(new AutoDeleteObjects());
// Cross‑service abstractions
const logGroup = new logs.CfnLogGroup(this, 'LogGroup');
Mixins.of(logGroup).apply(new EncryptionAtRest());
// Apply at scale
Mixins.of(this).apply(new EncryptionAtRest());
Vended Log Deliveries
自动为 47+ AWS 资源配置日志投递:
import { LogDelivery } from '@aws-cdk/mixins-preview';
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.CfnBucket(this, 'Bucket');
Mixins.of(bucket).apply(new LogDelivery());
EventBridge 事件模式
为 26 项服务生成类型安全的 EventBridge 事件模式的辅助工具:
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as lambda from 'aws-cdk-lib/aws-lambda';
// Works with L2 constructs
const bucket = new s3.Bucket(this, 'Bucket');
const bucketEvents = BucketEvents.fromBucket(bucket);
new events.Rule(this, 'Rule', {
eventPattern: bucketEvents.objectCreatedPattern({
object: { key: ['uploads/*'] },
}),
targets: [new targets.LambdaFunction(fn)],
});
// Also works with L1 constructs
const cfnBucket = new s3.CfnBucket(this, 'CfnBucket');
const cfnBucketEvents = BucketEvents.fromBucket(cfnBucket);
new events.CfnRule(this, 'CfnRule', {
state: 'ENABLED',
eventPattern: cfnBucketEvents.objectCreatedPattern(),
targets: [{ arn: fn.functionArn, id: 'Target' }],
});
新的 Grants 模式
使用专用的 grant 类简化权限管理,现已支持 S3、DynamoDB、Step Functions 和 Route 53。
// S3
bucket.grants.read(role);
bucket.grants.write(role);
// DynamoDB
table.grants.readData(role);
table.grants.writeData(role);
table.streamGrants.read(role);
// Step Functions
stateMachine.grants.startExecution(role);
stateMachine.grants.read(role);
// Route53
hostedZone.grants.delegation(role);
开始使用:
npm install @aws-cdk/mixins-preview
L1 构造接受构造作为参数
显著提升开发者体验!直接传入构造,而不是为已知资源关系手动提取 ARN/ID。
// Before
new lambda.CfnFunction(this, 'Function', {
role: role.roleArn, // Manual extraction
});
// After
new lambda.CfnFunction(this, 'Function', {
role: role, // Pass construct directly!
});
此模式适用于所有 L1 构造,使代码更简洁、更直观。
AI 驱动的开发
AWS IaC MCP Server
AWS IaC MCP Server 将模型上下文协议(Model Context Protocol)引入 CDK 工作流,可与 Amazon Q Developer、Claude Desktop、Cursor、VS Code 等 AI 助手集成。
特性
- 使用最新文档、API 参考和最佳实践构建 CDK
- 在 TypeScript、Python、Java、C#、Go 中查找 CDK 代码示例
- 使用 cfn‑lint 验证 CloudFormation 模板
- 使用 cfn‑guard 检查合规性
- 通过模式匹配排查部署问题
配置(~/.aws/amazonq/mcp.json)
{
"mcpServers": {
"awslabs.aws-iac-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-iac-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-named-profile"
}
}
}
}
服务 L2 构造
EC2 Image Builder(Alpha)
为 EC2 Image Builder 提供完整的 L2 支持,包含组件、配方、管道、工作流和生命周期策略构造。
import * as imagebuilder from '@aws-cdk/aws-imagebuilder-alpha';
const component = new imagebuilder.Component(this, 'Component', {
platform: imagebuilder.Platform.LINUX,
data: imagebuilder.ComponentData.fromAsset(this, 'ComponentAsset', 'component.yaml'),
});
const recipe = new imagebuilder.ImageRecipe(this, 'Recipe', {
parentImage: 'ami-12345678',
components: [component],
});
const pipeline = new imagebuilder.ImagePipeline(this, 'Pipeline', {
imageRecipe: recipe,
infrastructureConfiguration,
schedule: imagebuilder.Schedule.cron({ hour: '0', minute: '0' }),
});
const lifecycle = new imagebuilder.LifecyclePolicy(this, 'Lifecycle', {
resources: [imagebuilder.LifecycleResource.AMI],
rules: [{
action: imagebuilder.LifecycleAction.DELETE,
selection: {
type: imagebuilder.SelectionType.AGE,
value: 90,
unit: imagebuilder.TimeUnit.DAYS,
},
}],
});
Bedrock AgentCore(Alpha)
构建完整的 AI 代理,包含运行时、网关、记忆和工具集成。
运行时 – 基于容器的代理执行,支持 ECR 与镜像 URI:
import * as agentcore from '@aws-cdk/aws-bedrock-agentcore-alpha';
// Example placeholder – replace with actual construct usage
const agent = new agentcore.Agent(this, 'MyAgent', {
runtime: {
imageUri: '123456789012.dkr.ecr.us-east-1.amazonaws.com/my-agent:latest',
},
// Additional configuration (gateway, memory, tools) goes here
});
更多文档和示例请参阅预览包。