What It Costs to Run a Serverless SaaS on AWS (~$0.50/Month Idle)
“How much will this cost to run?” is the question that stalls a lot of side projects before they start. For a serverless SaaS that scales to zero, the honest answer surprises people: an idle environment runs for about fifty cents a month. Here’s the line-by-line breakdown — and the one cost that isn’t free.
Why idle is nearly free
Traditional hosting charges you for capacity — a server, a database instance, a load balancer — whether or not anyone is using it. That fixed monthly floor is what makes people nervous about spinning up infrastructure before they have customers.
A serverless architecture inverts that. The compute and data layers bill per request, not per hour of existence. Lambda functions cost nothing when no one is calling them. Aurora DSQL has no provisioned floor and scales to zero. API Gateway and CloudFront are per-request too. So when your app is idle — nights, the weeks before launch, a staging environment nobody’s testing — the meter sits at essentially zero.
The line items of an idle environment
Here’s what a fully deployed, serverless-first SaaS environment actually bills while it’s sitting idle — auth, database, API, and frontends all live, just not under load:
Idle environment — monthly cost Route 53 hosted zone ............. ~$0.50 ACM TLS certificates ............. $0.00 (free) API Gateway (HTTP API) ........... $0.00 (per request) Lambda — SSR + API ............... $0.00 (per request) CloudFront ....................... ~$0.00 (per request) Cognito .......................... $0.00 (free tier) Aurora DSQL ...................... ~$0.00 (scales to zero) S3 — static assets ............... ~$0.00 (pennies) ────────────────────────────────────────── Total ............................ ~$0.50 / month
Everything that scales to zero does. What’s left rounds to the cost of one fixed resource.
The one thing that isn’t free: the hosted zone
A Route 53 hosted zone — the DNS for your domain — costs a flat $0.50/month, charged whether or not the domain gets a single query. It exists the moment you have a domain, so it’s the irreducible floor of running a real, custom-domain app. (TLS certificates from ACM, by contrast, are genuinely free.) That half-dollar is essentially the whole bill for an idle environment.
What happens when you get traffic
Costs rise — but they rise with usage, which is the good kind of cost. AWS’s free tiers absorb the early days (Lambda’s first million requests a month, CloudFront’s first terabyte out, Cognito’s monthly active users), so your first real users are often still within rounding distance of that fifty cents. By the time the bill is meaningful, you have the traffic — and ideally the revenue — to match it. You never pay ahead of demand.
Which is why extra environments are basically free
Because idle costs nothing, the usual reasons to be stingy with environments evaporate. Stand up dev, staging, and prod and leave them all running — three idle environments is a few dollars a month, not a budget meeting. The same logic makes per-branch or per-customer environments practical: you’re billed for what runs, and most of them mostly don’t.
The trap to avoid: always-on infrastructure
There’s a catch that quietly wrecks the “serverless is cheap” story: a single always-on resource snuck into the architecture. The classic culprit is a NAT gateway — roughly $32/month each, billed 24/7 whether traffic flows or not — but provisioned RDS instances, idle load balancers, and ECS/Fargate tasks do the same thing. One of these turns a $0.50 idle bill into a $30+ one.
The fix is architectural: keep the stack serverless end to end so there’s nothing to leave running. That’s a deliberate design choice in cdkbase — Lambda and DSQL for compute and data, API Gateway and CloudFront in front, no NAT gateways, no VPC-bound database, no idle compute anywhere. The result is a complete, production-shaped stack whose idle cost really is just the hosted zone.
The bottom line
A serverless SaaS doesn’t charge you to exist — it charges you to be used. You can deploy the full thing today, leave it running, and pay about fifty cents a month until you have customers, at which point your costs grow in step with your usage. For anyone weighing whether to stand up real infrastructure before launch, that changes the math entirely — and it pairs naturally with starting from a template instead of building the foundation from scratch.
Skip the wiring and start from a working stack
cdkbase is a fork-ready AWS serverless template that ships everything in this article — CDK infrastructure, Cognito auth, Aurora DSQL, a Hono API, Stripe billing, and web/SPA/mobile frontends — already wired together and built for Claude Code. See pricing or read the getting-started guide.