# AWS CDK — Define Cloud Infrastructure Using Real Programming Languages > The AWS Cloud Development Kit lets you define cloud infrastructure in TypeScript, Python, Java, Go, or C# instead of YAML templates. CDK synthesizes your code into CloudFormation and deploys it with a single command. ## Install Save in your project root: # AWS CDK — Define Cloud Infrastructure Using Real Programming Languages ## Quick Use ```bash npm install -g aws-cdk mkdir my-app && cd my-app cdk init app --language typescript # Edit lib/my-app-stack.ts to add resources cdk deploy ``` ## Introduction AWS CDK (Cloud Development Kit) lets you define AWS infrastructure using familiar programming languages instead of declarative YAML or JSON. You write TypeScript, Python, Java, Go, or C# classes that represent cloud resources, and CDK synthesizes them into CloudFormation templates. This brings IDE autocompletion, type checking, loops, and abstractions to infrastructure as code. ## What AWS CDK Does - Models AWS resources as object-oriented constructs in your preferred language - Synthesizes high-level code into CloudFormation templates automatically - Deploys, updates, and destroys stacks with `cdk deploy` and `cdk destroy` - Provides an L2 construct library with sensible defaults for 200+ AWS services - Supports reusable patterns through custom constructs published to package registries ## Architecture Overview CDK operates in three layers. L1 constructs are auto-generated one-to-one mappings of every CloudFormation resource. L2 constructs add opinionated defaults, helper methods, and cross-resource wiring (e.g., granting a Lambda function read access to an S3 bucket). L3 constructs (patterns) compose multiple resources into common architectures. The CDK CLI runs synthesis locally, producing a CloudFormation template and asset bundle, then deploys via the CloudFormation API. ## Self-Hosting & Configuration - Install the CLI with `npm install -g aws-cdk` and bootstrap your account with `cdk bootstrap` - Initialize projects with `cdk init` choosing TypeScript, Python, Java, Go, or C# - Configure AWS credentials via environment variables, profiles, or IAM roles - Use `cdk.json` to set context values, feature flags, and synthesis options - Organize large projects with CDK Pipelines for CI/CD-driven multi-account deployments ## Key Features - Full programming language power: loops, conditionals, type safety, and IDE support - L2 constructs with smart defaults reduce boilerplate by 60-80% vs raw CloudFormation - Asset bundling automatically packages Lambda code, Docker images, and static files - CDK Pipelines: self-mutating CI/CD pipeline that deploys your CDK app across stages - Construct Hub: public registry of 1,500+ reusable community constructs ## Comparison with Similar Tools - **Terraform** — Multi-cloud HCL-based IaC; CDK is AWS-focused with real language support - **Pulumi** — Multi-cloud IaC in real languages; CDK generates CloudFormation, Pulumi uses its own engine - **CloudFormation** — CDK's compilation target; writing raw CFN is more verbose and error-prone - **AWS SAM** — Serverless-focused subset of CloudFormation; CDK covers all AWS services - **CDKTF** — CDK for Terraform; uses CDK constructs but targets Terraform providers instead of CloudFormation ## FAQ **Q: Does AWS CDK work with non-AWS clouds?** A: CDK itself targets AWS CloudFormation. For multi-cloud, look at CDKTF (CDK for Terraform) or Pulumi which share similar concepts. **Q: Is there a cost to using CDK?** A: CDK is free and open source. You only pay for the AWS resources it provisions. CloudFormation itself has no additional charge. **Q: Can I import existing AWS resources into a CDK stack?** A: Yes. Use `cdk import` to bring existing resources under CDK management, or reference them with `fromXxx` lookup methods. **Q: How does CDK handle state?** A: CDK relies on CloudFormation for state management. Each stack's state is stored in CloudFormation, so there is no separate state file to manage. ## Sources - https://github.com/aws/aws-cdk - https://docs.aws.amazon.com/cdk/v2/guide/ --- Source: https://tokrepo.com/en/workflows/b9fb8a8c-398f-11f1-9bc6-00163e2b0d79 Author: AI Open Source