pulumi-aws

Type-safe Pulumi resources for provisioning and managing AWS infrastructure as code.

SDK
npm
v7.48.0
577 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
91 /100 Excellent
Development Activity 96
Maintenance 96
Community 84
Maturity 60
Momentum 28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
80 /100 Excellent
Architecture 88
Code Quality 82
Innovation 58
Learning Curve 90

@pulumi/aws is the Node.js/TypeScript SDK for Pulumi’s AWS resource provider, a Terraform-bridged package that exposes strongly-typed classes for the entirety of AWS’s resource surface — EC2, S3, IAM, Lambda, RDS, ECS, VPC, CloudFront, and hundreds more — generated from the upstream terraform-provider-aws schema and kept current as AWS adds services.

Beyond raw resource coverage, the package layers convenience abstractions on top, such as aws.lambda.CallbackFunction for defining serverless functions directly from an in-language callback, plus data-source functions like getCallerIdentity and getAvailabilityZones for reading live account state during a deploy. The same generated schema produces matching SDKs for Python, Go, .NET, and Java, so teams standardize on one resource model across every language.

What You Get

  • Full strongly-typed resource coverage across the entirety of AWS services (EC2, S3, IAM, Lambda, RDS, ECS, VPC, CloudFront, and hundreds more)
  • Data source functions (aws.getCallerIdentity, aws.getAvailabilityZones, aws.getRegion, aws.getPartition) for querying live AWS account/region state at preview and update time
  • Convenience abstractions layered on top of raw resources, like aws.lambda.CallbackFunction for defining a Lambda directly from an in-language callback
  • A consistent provider configuration surface (access keys, named profiles, shared credentials files, STS assume-role, custom endpoints) matching Terraform’s AWS provider model
  • Automatic secret-handling for sensitive outputs (access keys, passwords, tokens) surfaced as Pulumi secret outputs

Common Use Cases

  • Provisioning AWS infrastructure (VPCs, EC2, ECS/EKS, RDS, S3) entirely in TypeScript, Python, Go, C#, or Java instead of HCL
  • Wiring event-driven serverless architectures (S3-to-Lambda, CloudWatch-to-Lambda) using the callback-function helpers
  • Building reusable, versioned component resources that wrap common AWS patterns for internal platform teams
  • Migrating existing Terraform AWS configurations into a general-purpose programming language via Pulumi
  • Managing multi-account/multi-region AWS deployments with per-stack provider configuration

Under The Hood

Architecture The provider is built on the Terraform-bridge pattern: provider/resources.go assembles a tfbridge.ProviderInfo that wraps the upstream terraform-provider-aws schema (via pkg/tfshim/sdk-v2 for classic SDKv2 resources and pkg/pf/tfbridge for newer plugin-framework resources), with resource_overrides.go, data_source_overrides.go, aliases.go, compatibility.go, and computed_ids.go translating Terraform resource and attribute names into Pulumi tokens and preserving identity across provider versions. provider/cmd/pulumi-tfgen-aws generates the cross-language schema from this metadata, while provider/cmd/pulumi-resource-aws is the runtime gRPC provider binary the Pulumi engine talks to; the sdk/{nodejs,python,go,dotnet,java} directories are entirely generated output that AGENTS.md explicitly forbids hand-editing, with only a small set of hand-authored overlay files (CallbackFunction, ARN build/parse helpers, tag utilities) layered in for ergonomics beyond raw generation.

Tech Stack Go modules pull in pulumi-terraform-bridge/v3 as the core bridging dependency, which wraps a Pulumi-forked terraform-plugin-sdk/v2 plus terraform-plugin-framework/-go/-log for framework-based upstream resources; the build is orchestrated by a large generated Makefile (sourced from .ci-mgmt.yaml) driving make schema and make build_sdks. Generated SDKs use plain tsc for the Node.js package, standard packaging for Python, Go modules for the Go SDK, and equivalent .NET/Java toolchains; mise.toml and devbox.json/.devcontainer pin reproducible tool versions, and CI runs as GitHub Actions across build, lint, unit-test, and both scheduled and nightly acceptance-test workflows, with Renovate managing dependency upgrades.

Code Quality The provider/ package carries roughly a dozen Go test files (configure_test.go, doc_edits_test.go, replay_regressions_test.go, provider_endpoint_test.go, enum_test.go, resources_test.go, and more) exercising bridge configuration, documentation post-processing, and provider replay regressions, while examples/ adds per-language end-to-end tests (examples_nodejs_test.go, examples_go_test.go, examples_dotnet_test.go) that actually deploy sample programs; .golangci.yml enforces Go linting via make lint, and error handling favors typed tfbridge/tfdiag diagnostics over swallowed errors. No hand-written tests exist for the generated SDK code itself, which is consistent with the project’s stated policy that SDKs are generated artifacts never edited directly, so coverage properly concentrates on the provider/bridge layer and cross-language example programs instead.

What Makes It Unique The package’s distinguishing quality is scale and fidelity rather than a novel API shape: it mirrors Terraform’s AWS resource surface closely enough that existing Terraform AWS knowledge transfers almost directly, while the schema-driven generation pipeline keeps five language SDKs — Node/TypeScript, Python, Go, .NET, and Java — in lockstep from one upstream source that is refreshed against the real Terraform AWS provider on a regular cadence. Deliberate ergonomic additions on top of the generated baseline, like the callback-based Lambda helper and ARN/tag utilities, show real polish, but the underlying bridge-a-Terraform-provider approach is now a well-established pattern across the wider Pulumi ecosystem rather than something unique to this package.

Used by 5 apps in this directory

TypeScript
100%
Other

Activepieces

AI Assistants · Automation · Mcp

24,756

Open-source AI automation platform that converts 280+ workflow integrations into MCP servers for LLMs, with no-code builders and TypeScript extensibility.

View details
92
Repo Health
85
Technical
64
Dependency
Built with
TypeScript 100%
Updated 4 days ago
TypeScript
99%
MIT

GraphQL Hive

Developer Tools · Devops · Monitoring

484

Open-source GraphQL schema registry and observability platform with breaking change detection, federation support, and CI/CD integration for teams of any size.

View details
90
Repo Health
81
Technical
69
Dependency
Built with
TypeScript 99%
Updated 4 days ago
TypeScript
78%
LGPL 3.0

Latitude

AI Agents · Monitoring

4,686

Open-source AI agent monitoring that catches what will break next before your users do.

View details
86
Repo Health
88
Technical
67
Dependency
Built with
TypeScript 78%
Rust 11%
Python 11%
Updated 1 weeks ago
TypeScript
85%
Other

Webiny JS

Blogging · CMS · Ecommerce

8,048

Open-source, self-hosted CMS on AWS serverless — a TypeScript framework you extend with code, not a product you configure through a UI.

View details
90
Repo Health
86
Technical
62
Dependency
Built with
TypeScript 85%
JavaScript 13%
Updated 5 days ago
Rust
32%
Other

Windmill

Automation · Developer Tools

18,043

Turn scripts into webhooks, workflows, and auto-generated UIs — the fastest self-hostable workflow engine, 13x faster than Airflow.

View details
91
Repo Health
82
Technical
65
Dependency
Built with
Rust 32%
TypeScript 24%
Svelte 22%
Updated 4 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers