AWS CDK: Define cloud infrastructure in code
Programming language abstractions that synthesize into CloudFormation templates.
Learn more about aws-cdk
AWS CDK is an infrastructure-as-code framework that allows developers to define cloud resources using general-purpose programming languages rather than declarative configuration formats. The framework provides high-level constructs and abstractions that map to AWS services, which are then synthesized into CloudFormation templates during a compilation phase. These constructs are organized in a hierarchical tree structure where resources are defined as objects with properties and methods, enabling logic, loops, and conditionals within infrastructure definitions. The framework supports TypeScript, Python, Java, C#, and Go, allowing teams to use familiar language tooling, type checking, and IDE features when building cloud infrastructure. This approach trades the simplicity of pure declarative templates for the expressiveness and reusability benefits of imperative programming constructs.

Multi-language support
Supports TypeScript, Python, Java, .NET, and Go, allowing teams to write infrastructure code in their existing programming languages. Language versions are supported until their vendor-defined end-of-life.
Construct-based composition
Infrastructure is built from reusable components called constructs that encapsulate AWS best practices and can be shared across projects. The AWS Construct Library provides pre-built constructs for AWS services, with stability designations indicating API compatibility guarantees.
CloudFormation synthesis
The CLI synthesizes CDK applications into AWS CloudFormation templates, enabling standard deployment workflows and infrastructure diffing to preview changes before deployment.
import { App, Stack } from 'aws-cdk-lib';
import { Bucket, BlockPublicAccess } from 'aws-cdk-lib/aws-s3';
const app = new App();
const stack = new Stack(app, 'MyStack');
const bucket = new Bucket(stack, 'MyBucket', {
versioned: true,
blockPublicAccess: BlockPublicAccess.BLOCK_ALL
});
app.synth();Breaking changes remove four L1 properties from DynamoDB GlobalTable/Table and Events EventBusPolicy to align with CloudFormation schemas.
- –Remove references to GlobalTableSettingsReplicationMode and GlobalTableSourceArn in DynamoDB L1 constructs before upgrading.
- –Stop relying on the Id attribute of AWS::Events::EventBusPolicy; CloudFormation no longer exposes it.
Breaking change in bedrock-agentcore requires switching from string IDs to IUserPool/IUserPoolClient constructs in RuntimeAuthorizerConfiguration.usingCognito().
- –Update bedrock-agentcore calls to pass IUserPool and IUserPoolClient constructs instead of string parameters for Cognito authorization.
- –Enable Java 25 and Python 3.14 Lambda runtimes; opt into NLB security groups via feature flag elasticloadbalancingv2/nlbSecurityGroups.
Patch release fixing a Go compilation failure introduced in prior versions.
- –Upgrade if using Go bindings; resolves compilation errors reported in #35770 and #35862.
- –No breaking changes or new requirements; safe drop-in replacement for v2.221.0.
See how people are using aws-cdk
Top in Cloud & DevOps
Related Repositories
Discover similar tools and frameworks used by developers
OpenLens
Community-built Kubernetes IDE without authentication requirements.
dockge
Self-hosted Docker Compose manager with real-time terminal streaming.
watchtower
Automated Docker container updates via registry polling.
kubespray
Production-grade Kubernetes deployment via Ansible playbooks.
kaniko
Daemon-free Docker image builder for Kubernetes clusters.