re:Invent Special Update from AWS CDK

Published: (December 10, 2025 at 01:22 PM EST)
4 min read
Source: Dev.to

Source: Dev.to

TL;DR

As we close out 2025, we’re filled with gratitude for our incredible CDK community! This year brought exciting updates: CDK Mixins in developer preview, the AWS IaC MCP Server for AI‑powered assistance, comprehensive EC2 Image Builder L2 support, Bedrock AgentCore constructs, and powerful new patterns like L1 constructs accepting other constructs as parameters. We’ve seen amazing contributions from our community (both internal AWS and external), launched new Grants patterns, added L2 constructs for Lambda Managed Instances, Lambda durable functions, Lambda multi‑tenancy, Route 53 failover routing, DynamoDB compound keys for GSIs, VPC Endpoints for ACM/ACM‑PCA, and so much more. Thank you for making CDK better every day!

A Message of Gratitude

As we wrap up 2025, we want to take a moment to thank our amazing CDK community. This year has been extraordinary—not just because of the features we’ve shipped, but because of the incredible people who make CDK what it is.

  • External contributors: You’ve submitted PRs, filed issues, answered questions, and built amazing things with CDK. Your contributions—from major L2 constructs to small bug fixes—make CDK better for everyone. Thank you for your time, expertise, and dedication.
  • Community members: Whether you’re asking questions on Stack Overflow, sharing knowledge on Slack, or helping others in GitHub Discussions, you’re building the welcoming, collaborative community that makes CDK special.

As we head into the holidays, we’re grateful for each of you. Here’s to an amazing 2026! 🎄✨

Major Features

CDK Mixins – Developer Preview

CDK Mixins fundamentally transform how you compose and reuse infrastructure abstractions. Apply sophisticated features to any construct—L1, L2, or custom—without being locked into specific implementations.

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

Automatically configure log delivery for 47+ AWS resources:

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 Event Patterns

Helpers to generate type‑safe EventBridge event patterns for 26 services:

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' }],
});

New Grants Pattern

Simplified permission management with dedicated grant classes, now available for S3, DynamoDB, Step Functions, and 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);

Get started:

npm install @aws-cdk/mixins-preview

L1 Constructs Accept Constructs as Parameters

Major DX improvement! Pass constructs directly instead of extracting ARNs/IDs for known resource relationships.

// Before
new lambda.CfnFunction(this, 'Function', {
  role: role.roleArn,  // Manual extraction
});

// After
new lambda.CfnFunction(this, 'Function', {
  role: role,  // Pass construct directly!
});

This pattern works across all L1 constructs, making your code cleaner and more intuitive.

AI‑Powered Development

AWS IaC MCP Server

The AWS IaC MCP Server brings Model Context Protocol to your CDK workflow, integrating with AI assistants like Amazon Q Developer, Claude Desktop, Cursor, and VS Code.

Features

  • Build CDK with latest documentation, API references, and best practices
  • Find CDK code samples across TypeScript, Python, Java, C#, Go
  • Validate CloudFormation templates with cfn‑lint
  • Check compliance with cfn‑guard
  • Troubleshoot deployments with pattern matching

Configuration (~/.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"
      }
    }
  }
}

Documentation

Service L2 Constructs

EC2 Image Builder (Alpha)

Comprehensive L2 support for EC2 Image Builder with constructs for components, recipes, pipelines, workflows, and lifecycle policies.

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)

Build complete AI agents with runtime, gateway, memory, and tool integrations.

Runtime – Container‑based agent execution with ECR and image‑URI support:

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
});

Further documentation and examples are available in the preview package.

Back to Blog

Related posts

Read more »