IBRAVRA Media Network
Comparisons • 13 min read

Terraform vs Pulumi vs AWS CDK: Infrastructure-as-Code Pricing Playbook

Three tools provision the same 1,000 resources for $100, $182.50, and $0 a month. This guide prices all three meters, the tier jumps, and the operator tax.

By Enow A. Jovial • Published 2026-11-05

Three tools provision the same thousand resources, and the monthly bills are $0, $100, and $182.50. That spread is not a pricing accident — it is three different meters. HCP Terraform charges per managed resource per month. Pulumi Cloud charges per resource-hour against a prepaid credit pool. AWS CDK charges nothing for the control plane at all, and bills you only for the AWS resources you create. The cheapest tool on the invoice is not always the cheapest to run: the free one needs an operator, and the wrong choice at 20,000 resources is a five-figure annual gap. This guide prices all three on the same workloads and names the meter that decides the winner at each scale.

What the three tools are, in one paragraph

Terraform is HashiCorp's declarative infrastructure-as-code engine, written in HCL, with state files, plans, and applies; HCP Terraform is the managed control plane that hosts the state, runs the plans, and enforces policy. Pulumi is an infrastructure-as-code engine written in general-purpose languages — TypeScript, Python, Go, .NET, Java, YAML — with Pulumi Cloud as its managed control plane for state, secrets, and deployments. AWS CDK is Amazon's open-source framework for defining AWS infrastructure in code; there is no managed CDK control plane to buy, because the framework synthesizes CloudFormation templates you deploy yourself. Terraform's engine is Business Source License, Pulumi's and CDK's are Apache-2.0. A team choosing a tool is choosing a language, a state store, and a meter at the same time.

> [!KEY TAKEAWAY]

> The three platforms meter three different things: HCP Terraform bills managed resources per hour at the peak count, Pulumi bills declared resource-hours against a prepaid credit pool, and AWS CDK bills nothing — you pay only for the AWS resources it creates. At 1,000 resources the control-plane bills are $100, $182.50, and $0; at 20,000 they are $2,000, $3,650, and $0. The meter, not the logo, decides the winner.

Why it matters

Infrastructure-as-code spend is invisible until it is not. A team that manages 1,000 resources pays $100 a month on HCP Terraform Essentials and barely notices. The same team at 20,000 resources pays $2,000 a month on Essentials, $9,400 on Standard, and $19,800 on Premium — $237,600 a year at the top tier. The bill scales with the resource count, and the count scales with every microservice, environment, and security group rule — each one is a managed resource in state. HCP Terraform bills the peak hourly count, so a spike at 2 PM inflates that hour's bill even after the resources are gone. The pricing decision is a capacity decision, and it should be made before the first apply, not after the first invoice.

> [!FOUNDER]

> "Every team I have watched pick an IaC platform picked it for the language and paid for the meter. HCL, TypeScript, or Python is a preference. Per-resource-per-month is a budget line. Write the resource count down first, run it through all three meters, and let the arithmetic pick — the language never pays the invoice." — Enow A. Jovial, Founder & Chief Executive Officer

The pricing tables, from the vendors' own pages

HCP Terraform prices per managed resource, billed hourly on the peak count in that hour. The figures below are corroborated across independent 2026 reads of HashiCorp's pricing page, which returns a rate-limit error from this network — verify them on the live page before signing.

| HCP Terraform tier | Per resource / month | Per resource / hour | Free allowance |

| :--- | :--- | :--- | :--- |

| Free | $0 | $0 | Up to 500 managed resources |

| Essentials | $0.10 | $0.0001359 | None |

| Standard | $0.47 | $0.00064 | None |

| Premium | $0.99 | $0.00135 | None |

| Authority | HashiCorp pricing page, corroborated 2026 | HashiCorp pricing page footnotes | HashiCorp pricing page |

Pulumi Cloud prices per resource-hour against a prepaid credit pool. One Pulumi Credit costs $1, and managed resources draw from the pool at $0.00025 per resource-hour. Essentials is $40 a month with 40 credits included, for up to 500 managed resources; Pro is $400 a month with 400 credits, for up to 2,000; Enterprise is custom-priced. Free is $0 for one user with 500 workflow minutes a month; extra minutes are $0.01 each.

| Pulumi Cloud edition | Monthly fee | Included credits | Stated scale | Meter beyond pool |

| :--- | :--- | :--- | :--- | :--- |

| Free | $0 | $0 | 1 user | $0.00025 / resource-hour |

| Essentials | $40 | 40 credits ($40) | Up to 500 managed resources | $0.00025 / resource-hour |

| Pro | $400 | 400 credits ($400) | Up to 2,000 managed resources | $0.00025 / resource-hour |

| Enterprise | Custom | Custom | Custom | Custom |

| Authority | Pulumi pricing page, read Nov 5, 2026 | Pulumi pricing page | Pulumi pricing page | Pulumi pricing page |

!Pulumi Cloud pricing: Essentials $40 a month including 40 credits for up to 500 managed resources, and Pro $400 a month including 400 credits for up to 2,000 managed resources

AWS CDK has no control-plane price at all. Amazon's own FAQ: there is no additional charge for AWS CDK; you pay for the AWS resources created using CDK as if you created them manually, with no minimum fees and no required upfront commitments. The cost of CDK is the AWS resources plus the operator time to run the pipelines, the state, and the drift checks yourself.

!AWS CDK FAQ: there is no additional charge for AWS CDK; you pay for the AWS resources created using it, with no minimum fees and no required upfront commitments

The worked math: the same estate on all three meters

Pulumi's meter is $0.00025 per resource-hour, which is $0.1825 per resource per month over a 730-hour month; HCP Terraform Essentials is $0.10. The comparison, at list prices, before any included credits:

$

\text{HCP Essentials monthly} = \text{resources} \times \$0.10

$

$

\text{Pulumi meter monthly} = \text{resources} \times 730 \times \$0.00025 = \text{resources} \times \$0.1825

$

| Resources | HCP Essentials | HCP Standard | HCP Premium | Pulumi meter (gross) | AWS CDK |

| :--- | :--- | :--- | :--- | :--- | :--- |

| 500 | $50 ($0 on Free) | $235 | $495 | $91.25 | $0 |

| 1,000 | $100 | $470 | $990 | $182.50 | $0 |

| 5,000 | $500 | $2,350 | $4,950 | $912.50 | $0 |

| 20,000 | $2,000 | $9,400 | $19,800 | $3,650.00 | $0 |

| Authority | HashiCorp pricing page | HashiCorp pricing page | HashiCorp pricing page | Pulumi pricing page | AWS CDK FAQ |

Pulumi's included credits change the net bill. Essentials includes $40 of credits, Pro includes $400. The net monthly bill is the edition fee plus any usage above the included pool:

$

\text{Pulumi net} = \text{edition fee} + \max(0, \text{gross meter} - \text{included credits})

$

At 1,000 resources on Essentials: $40 plus $182.50 minus $40, which is $182.50 all-in. At 2,000 resources on Pro: the gross meter is $365.00, inside the $400 included pool, so the bill is $400 flat. At 5,000 resources on Pro: $400 plus $912.50 minus $400, which is $912.50 all-in. At 20,000 resources on Pro: $400 plus $3,650.00 minus $400, which is $3,650.00 all-in. The three-year totals at 5,000 resources are $18,000 on HCP Essentials, $32,850 on Pulumi Pro, and $0 on CDK before operator time — a $14,850 gap between the two managed planes, and the entire gap is the meter, not the features.

At each plan's stated ceiling: Pulumi Essentials is $40 for up to 500 resources, or $0.08 per resource per month; Pulumi Pro is $400 for up to 2,000, or $0.20; HCP Essentials is a flat $0.10 at any count. Below 500 resources, HCP's Free tier and CDK both cost $0 on the control plane, and the decision is about features, not price.

State, drift, and governance: what the tiers actually buy

Price is only half the comparison. The three platforms differ in where state lives, who watches for drift, and which tier unlocks policy enforcement:

| Capability | HCP Terraform | Pulumi Cloud | AWS CDK |

| :--- | :--- | :--- | :--- |

| State storage | Managed in HCP, all tiers | Managed in Pulumi Cloud, all tiers | Self-managed (S3 + DynamoDB, or local) |

| Drift detection | Standard tier and above | Pro edition and above | None managed; cdk diff by hand |

| Policy as code | Sentinel / OPA, Standard and above | CrossGuard, Pro and above | None built in; use CDK Aspects or OPA yourself |

| Language | HCL | TypeScript, Python, Go, .NET, Java, YAML | TypeScript, Python, Java, .NET, Go |

| Cloud scope | Multi-cloud | Multi-cloud | AWS only |

| Engine license | Business Source License 1.1 | Apache-2.0 | Apache-2.0 |

| Authority | HashiCorp pricing page | Pulumi pricing page | AWS CDK FAQ |

The governance gap is the real reason teams land on Standard or Pro instead of the entry tier. Drift detection and policy enforcement stop a 2 AM manual console change from silently diverging from state, and both vendors gate them above the cheapest paid tier. A team that buys Essentials for the $0.10 rate and then needs drift detection pays the Standard rate — $0.47 per resource, a 4.7x jump — and that jump belongs in the budget from day one. The Docker vs Kubernetes vs Amazon ECS container deployment pricing guide prices the workloads these tools provision, and the headless WordPress vs Next.js decoupling guide covers the architecture the IaC stack deploys.

The traps: peak hours, declared resources, and the operator tax

> [!WARNING]

> Three traps erase the savings. First, HCP Terraform bills the peak resource count in each hour, so a bad pipeline that creates 500 throwaway resources at 2 PM inflates that hour's bill even after the resources are destroyed — ephemeral environments are billable while they exist. Second, Pulumi's meter runs on declared resources in every program, so a stack that declares resources it never provisions still consumes credits. Third, CDK's $0 control-plane price is not a $0 total cost: the state store, the CI pipeline, the drift checks, and the on-call for a broken deploy are operator hours, and at 20,000 resources those hours cost more than either managed plane.

The operator tax is the honest counterweight to CDK's $0. A self-managed Terraform or CDK setup needs a state backend, locking, a runner, and someone who owns the pipeline on a Saturday night. At small scale that is an afternoon of setup. At 20,000 resources across ten environments it is a part-time job, and the managed planes exist precisely to buy that job back. The correct comparison is never $0 versus $2,000; it is $0 plus operator hours versus $2,000 with the operations included.

The decision table

| Team shape | Resources | Best fit | Monthly control-plane cost | Authority |

| :--- | :--- | :--- | :--- | :--- |

| Solo dev, one AWS account | Under 500 | HCP Free or CDK | $0 | HashiCorp / AWS CDK FAQ |

| Small team, multi-cloud, HCL shop | 500–1,000 | HCP Essentials | $50–$100 | HashiCorp pricing page |

| Small team, TypeScript shop | 500–1,000 | Pulumi Essentials | $91.25–$182.50 | Pulumi pricing page |

| Growing team needing drift detection | 2,000 | Pulumi Pro | $400 | Pulumi pricing page |

| Growing team needing drift detection | 2,000 | HCP Standard | $940 | HashiCorp pricing page |

| Enterprise, strict governance | 20,000 | HCP Premium | $19,800 | HashiCorp pricing page |

| AWS-only, strong platform team | Any | AWS CDK | $0 + operator time | AWS CDK FAQ |

Who should NOT pick each tool

Do not pick HCP Terraform if your resource count is dominated by short-lived ephemeral environments — the peak-hour meter punishes exactly that pattern, and CDK or a self-managed backend will be cheaper. Do not pick Pulumi if your team writes HCL and has no appetite for a general-purpose language; the productivity gain of TypeScript is real, but a forced language migration is a quarter of lost velocity. Do not pick AWS CDK if you run more than one cloud — it provisions AWS only, and a second cloud means a second tool. Do not pick any managed plane if you manage fewer than 500 resources and need nothing beyond state and runs: the Free tiers and CDK both cost $0, and the decision should be about language and workflow, not price. The Cloudflare Workers vs Vercel edge functions guide covers the serverless layer these tools often deploy, and the pricing calculator runs the per-resource math on your own estate before you commit.

The execution checklist

  • [x] Step 1: Count the estate. List every resource in state across every environment, including security group rules and IAM policies. The count, not the team size, decides the bill.
  • [x] Step 2: Run the meter. Multiply the count by $0.10 for HCP Essentials, by $0.1825 for the Pulumi meter, and by $0 for CDK. Write all three numbers down.
  • [x] Step 3: Price the tier you actually need. If you need drift detection or policy enforcement, price HCP Standard or Pulumi Pro, not the entry tier — the jump is 4.7x on HCP.
  • [x] Step 4: Apply the included pools. Subtract Pulumi's included credits ($40 on Essentials, $400 on Pro) and HCP's 500-resource Free allowance before comparing.
  • [x] Step 5: Audit ephemeral environments. Count how many resources exist for less than a day each week; on HCP's peak-hour meter they still bill for the hours they exist.
  • [x] Step 6: Budget the operator tax. If CDK wins on price, write down who owns the state backend, the runner, and the Saturday-night deploy before choosing it.
  • [x] Step 7: Re-count quarterly. Resource counts grow with every service. Re-run this checklist every quarter; a 5,000-resource estate becomes a 20,000-resource estate in a year of growth.
  • > [!TIP]

    > The cheapest migration is the one you do before the estate grows: moving 500 resources between control planes is an afternoon, moving 20,000 is a project. Pick the tool for the estate you will have in two years, not the one you have today — and re-read the pricing page before you sign, because both vendors have repriced within the last year.