Pulumi vs AWS CDK
Infrastructure as real code. Both let you use TypeScript instead of YAML. One works everywhere. The other is AWS-only.
The short answer
Pulumi over AWS CDK for most cases. Pulumi works with AWS, GCP, Azure, Cloudflare, and 100+ providers.
- Pick Pulumi if use multiple clouds, want faster deployments, or prefer not being locked into AWS
- Pick AWS CDK if all-in on AWS and want the deepest integration with AWS services and constructs
- Also consider: Terraform is still the most widely used IaC tool. More hiring pool, more examples, more modules.
— Nice Pick, opinionated tool recommendations
Real Code, Finally
Both Pulumi and CDK let you define infrastructure in TypeScript, Python, Go, or other real languages. No more YAML. No more HCL. Loops, conditionals, type checking, refactoring — all the things you expect from programming.
This is a massive improvement over Terraform's HCL or CloudFormation's JSON/YAML.
Cloud Lock-in
AWS CDK generates CloudFormation templates. It's deeply integrated with AWS. If you're all-in on AWS and always will be, this is fine. The integration is tight and the constructs library is extensive.
Pulumi has providers for everything. AWS, GCP, Azure, Kubernetes, Cloudflare, Vercel, Datadog. One tool, one language, all clouds.
State Management
Pulumi manages state in their cloud service (free for individuals) or you can self-host it with S3+DynamoDB or their open-source backend.
CDK uses CloudFormation for state, which means you get CloudFormation's limitations: slow deployments, 500-resource stack limits, painful rollbacks.
Quick Comparison
| Factor | Pulumi | AWS CDK |
|---|---|---|
| Cloud Providers | 100+ (AWS, GCP, Azure...) | AWS only |
| Languages | TS, Python, Go, C#, Java | TS, Python, Java, C#, Go |
| AWS Integration | Good | Deep (native) |
| Deployment Speed | Direct API calls | CloudFormation (slower) |
| State Management | Pulumi Cloud or self-hosted | CloudFormation |
| Construct Library | Growing | Extensive (L2/L3) |
| Testing | Unit + integration | Unit + snapshot |
The Verdict
Use Pulumi if: You use multiple clouds, want faster deployments, or prefer not being locked into AWS.
Use AWS CDK if: You're all-in on AWS and want the deepest integration with AWS services and constructs.
Consider: Terraform is still the most widely used IaC tool. More hiring pool, more examples, more modules.
Pulumi vs AWS CDK: FAQ
Is Pulumi or AWS CDK better?
Pulumi is the Nice Pick. Pulumi works with AWS, GCP, Azure, Cloudflare, and 100+ providers. CDK is AWS-only (CDKTF exists for Terraform but it's separate). If you're multi-cloud or might be, Pulumi is the safer bet. Same DX, more flexibility.
When should you use Pulumi?
You use multiple clouds, want faster deployments, or prefer not being locked into AWS.
When should you use AWS CDK?
You're all-in on AWS and want the deepest integration with AWS services and constructs.
What's the main difference between Pulumi and AWS CDK?
Infrastructure as real code. Both let you use TypeScript instead of YAML. One works everywhere. The other is AWS-only.
How do Pulumi and AWS CDK compare on cloud providers?
Pulumi: 100+ (AWS, GCP, Azure...). AWS CDK: AWS only. Pulumi wins here.
Are there alternatives to consider beyond Pulumi and AWS CDK?
Terraform is still the most widely used IaC tool. More hiring pool, more examples, more modules.
Pulumi works with AWS, GCP, Azure, Cloudflare, and 100+ providers. CDK is AWS-only (CDKTF exists for Terraform but it's separate). If you're multi-cloud or might be, Pulumi is the safer bet. Same DX, more flexibility.
Related Comparisons
Disagree? nice@nicepick.dev