OpsRunway Talk to an engineer

How much AWS costs a startup per month, line by line.

A typical early web app on AWS costs somewhere between $60 and $1,100 a month, and the number depends far more on how many environments and NAT gateways you run than on traffic. Below are three illustrative startups, each priced item by item with the maths shown, so you can swap in your own numbers.

Prices checked: 22 Oct 2026, us-east-1, on-demand list prices

01Short answer

The three bills, side by side.

Profile (illustrative)ShapePer month
A. PrototypeOne environment, one container, small database, no NAT$67.35
B. Seed SaaS, first customersProduction only, private subnets, Multi-AZ database$294.04
C. Post-seed, staging + productionTwo environments, NAT per AZ in production, bigger database$1,076.01

These are made-up startups, not clients and not averages. They're common shapes for a team running a web API, a background worker and Postgres on ECS Fargate. Your bill will differ, and the point of the tables below is to show you which lines move it.

Want to see what your own bill does to your runway once credits run out? Put it into the AWS credits runway calculator. It takes a monthly bill, a growth rate and your credit balance, and shows the month you start paying cash.

The prices every line below is built from.

Item, us-east-1List pricePer month (730 h)
Fargate vCPU, Linux/x86$0.04048 /vCPU-hour$29.55
Fargate memory, Linux/x86$0.004445 /GB-hour$3.24
RDS PostgreSQL db.t4g.micro, Single-AZ$0.016 /hour$11.68
RDS PostgreSQL db.t4g.small, Single-AZ$0.032 /hour$23.36
RDS PostgreSQL db.t4g.medium, Multi-AZ$0.129 /hour$94.17
RDS PostgreSQL db.m7g.large, Multi-AZ$0.337 /hour$246.01
RDS gp3 storage, Single-AZ / Multi-AZ$0.115 / $0.23 /GB-monthn/a
RDS backup storage beyond 100% of DB size$0.095 /GB-monthn/a
NAT gateway$0.045 /hour + $0.045 /GB$32.85 + data
Public IPv4 address, in use or idle$0.005 /hour$3.65
Application Load Balancer$0.0225 /hour + $0.008 /LCU-hour$16.43 + $5.84 per LCU
S3 Standard storage, first 50 TB$0.023 /GB-monthn/a
S3 requests, PUT / GET$0.005 per 1,000 / $0.004 per 10,000n/a
CloudFront flat-rate plans, Free / Pro$0 / $15 per month$0 / $15
CloudWatch Logs ingestion / storage$0.50 /GB / $0.03 /GB-monthfirst 5 GB free
Data transfer out to the internet, first 10 TB$0.09 /GBfirst 100 GB free
Route 53 hosted zone / queries$0.50 /zone / $0.40 per millionn/a
Secrets Manager$0.40 /secretn/a
ECR image storage$0.10 /GB-monthn/a

All prices are AWS on-demand list prices for US East (N. Virginia), checked 22 Oct 2026, before tax, credits, Savings Plans or the free tier unless a line says so. A month is 730 hours. The CloudFront Free plan includes 1 million requests and 100 GB of transfer; Pro includes 10 million requests and 50 TB.

03Profile A

Illustrative. Two founders, a demo app, a few hundred users.

A prototype: about $67 a month.

One container serving the API and the frontend, behind a load balancer, in public subnets so there's no NAT gateway. A small Postgres database. Logs and traffic stay inside the free allowances.

Line itemArithmetic$ /month
Fargate, 1 task, 0.5 vCPU, 1 GB0.5 × $29.55 + 1 × $3.2418.02
Public IPv4 on the task1 × $3.653.65
RDS db.t4g.micro, Single-AZ730 h × $0.01611.68
RDS storage, 20 GB gp320 × $0.1152.30
RDS backups, 7 daysunder 100% of DB size, free0.00
ALB, hourly730 h × $0.022516.43
ALB, 1 LCU average730 h × $0.0085.84
ALB public IPv4, 2 AZs2 × $3.657.30
S3, 10 GB uploads10 × $0.0230.23
CloudFront, Free planunder 100 GB, 1M requests0.00
CloudWatch Logs, 3 GBinside the 5 GB free tier0.00
Data transfer out, 20 GBinside the 100 GB free tier0.00
Route 53, 1 hosted zone1 × $0.50, queries round to $00.50
Secrets Manager, 3 secrets3 × $0.401.20
ECR, 2 GB of images2 × $0.100.20
Total67.35

The load balancer and its two IP addresses are nearly half of this bill. That's normal at this size. You could drop the ALB and run on Lambda instead (App Runner is closed to new customers), but then you're pricing a different architecture; we kept the same building blocks across all three profiles so the jump between them is easy to follow.

04Profile B

Illustrative. Five engineers, paying customers, one production environment.

A seed SaaS with first customers: about $294 a month.

Now there are customers, so the database is Multi-AZ and the containers sit in private subnets. That brings the first NAT gateway. The API runs two tasks for availability, plus one worker. Staging is someone's laptop for now.

Line itemArithmetic$ /month
Fargate, 3 tasks, 0.5 vCPU, 1 GB3 × $18.0254.06
NAT gateway, 1, hourly730 h × $0.04532.85
NAT gateway, 50 GB processed50 × $0.0452.25
NAT gateway public IPv41 × $3.653.65
ALB, hourly730 h × $0.022516.43
ALB, 2 LCU average2 × $5.8411.68
ALB public IPv4, 2 AZs2 × $3.657.30
RDS db.t4g.medium, Multi-AZ730 h × $0.12994.17
RDS storage, 50 GB gp3, Multi-AZ50 × $0.2311.50
RDS backups, 14 days, 80 GB(80 − 50 free) × $0.0952.85
S3, 100 GB100 × $0.0232.30
S3, 200k PUT + 2M GET200 × $0.005 + 200 × $0.0041.80
CloudFront, Pro planflat15.00
CloudWatch Logs, 30 GB ingested(30 − 5 free) × $0.5012.50
CloudWatch Logs, 60 GB stored60 × $0.031.80
Data transfer out, 300 GB from the ALB(300 − 100 free) × $0.0918.00
Route 53, 1 zone + 5M queries$0.50 + 5 × $0.402.50
Secrets Manager, 6 secrets6 × $0.402.40
ECR, 10 GB10 × $0.101.00
Total294.04

The database is now the biggest line, and Multi-AZ doubles both the instance and the storage price. That's the right call once customers depend on you, but it's worth knowing that's where a third of the bill goes. The NAT gateway costs $38.75 before it has done much useful work.

Locked backup copies in a separate account add about $16 a month to this stack, as priced in our disaster recovery plan template.

05Profile C

Illustrative. Ten to fifteen engineers, a staging environment, more traffic.

Post-seed with staging and production: about $1,076 a month.

Production gets bigger tasks and a NAT gateway in each of its two availability zones, so one zone failing doesn't take outbound traffic with it. Staging is a smaller copy with one NAT gateway and a Single-AZ database. Logs and traffic have grown about five times.

Line itemArithmetic$ /month
Fargate prod, 5 tasks, 1 vCPU, 2 GB5 × ($29.55 + 2 × $3.24)180.20
Fargate staging, 3 tasks, 0.5 vCPU, 1 GB3 × $18.0254.06
NAT gateways, 2 prod + 1 staging3 × $32.8598.55
NAT, 330 GB processed330 × $0.04514.85
NAT public IPv43 × $3.6510.95
ALBs, prod + staging, hourly2 × $16.4332.85
ALB, 6 LCU average across both6 × $5.8435.04
ALB public IPv44 × $3.6514.60
RDS prod db.m7g.large, Multi-AZ730 h × $0.337246.01
RDS prod storage, 200 GB gp3, Multi-AZ200 × $0.2346.00
RDS prod backups, 30 days, 500 GB(500 − 200 free) × $0.09528.50
RDS staging db.t4g.small, Single-AZ730 h × $0.03223.36
RDS staging storage, 50 GB gp350 × $0.1155.75
S3, 1 TB1,024 × $0.02323.55
S3, 2M PUT + 20M GET2,000 × $0.005 + 2,000 × $0.00418.00
CloudFront, Pro planflat15.00
CloudWatch Logs, 150 GB ingested(150 − 5 free) × $0.5072.50
CloudWatch Logs, 300 GB stored300 × $0.039.00
Data transfer out, 1.5 TB(1,536 − 100 free) × $0.09129.24
Route 53, 2 zones + 20M queries2 × $0.50 + 20 × $0.409.00
Secrets Manager, 15 secrets15 × $0.406.00
ECR, 30 GB30 × $0.103.00
Total1,076.01

Staging alone (its tasks, NAT gateway, load balancer, IPs and database) comes to roughly $150 of this. NAT gateways are now $124 a month across both environments, more than the staging compute. Data transfer out and log ingestion, which were rounding errors in profile A, are together about $200.

Not in any of the three: tax, an AWS Support plan, WAF, GuardDuty, CI runners, email sending, third-party monitoring and anything AI. Each can be small, and together they often add another 10 to 30% on top. Treat that range as our rule of thumb, not an AWS figure.

The line items that surprise founders.

  • NAT gateways. $32.85 a month each just for existing, plus $0.045 for every GB that passes through. That per-GB charge includes container images pulled from ECR and objects fetched from S3, unless you add VPC endpoints. A NAT gateway per AZ per environment adds up fast.
  • Public IPv4 addresses. $3.65 a month each, idle or in use. Every load balancer AZ, NAT gateway and public task has one.
  • Cross-AZ traffic. $0.01 per GB in each direction between availability zones. A chatty service in one zone talking to a database or cache in another pays it on every request.
  • CloudWatch Logs ingestion. $0.50 per GB is more than ten times the cost of storing the same GB in S3. Debug-level logging in production is the classic cause of a sudden jump.
  • Log groups with no retention. The default is to keep logs forever, so storage only ever grows.
  • Multi-AZ on non-production. It doubles the database line and staging doesn't need it.
  • Forgotten resources. A load balancer from a deleted preview environment, unattached volumes, old snapshots, a test database someone stopped (RDS restarts a stopped instance after seven days).
  • EKS control planes. $73 a month per cluster before any workload, more on extended support. See ECS vs EKS for startups for the full comparison.
07Credits

What credits do and don't cover.

AWS Activate credits pay most of the lines above automatically, so a startup on credits often sees a $0 invoice for a year or more. That's exactly why the bill tends to grow unwatched. The gross usage on the invoice is the number to track, not the amount due.

Credits don't cover past charges, and marketplace software billed through AWS is generally not covered either. They also expire, and they run out early if usage grows faster than planned. The tiers, eligibility rules and exclusions are covered in our AWS Activate credits guide, so we won't repeat them here.

If you are close to the end of your credits, the page on what happens when AWS credits run out walks through the cliff month and what to check first.

08When it grows

What to do when the bill grows.

Work through these in order. The first three cost nothing and take an afternoon.

  1. Turn on cost allocation tags and a budget alert. Tag everything with an environment and a service, then set an AWS Budgets alert at the number you expect. You can't fix a bill you only see once a month.
  2. Read Cost Explorer by usage type, not by service. "EC2-Other" hides NAT gateway hours and data processing. Grouping by usage type shows them as separate lines.
  3. Set log retention on every log group. Thirty days is plenty for most application logs. Lower production log levels to info.
  4. Add VPC gateway endpoints for S3 and DynamoDB. They're free and take that traffic off the NAT gateway. Interface endpoints for ECR and others cost money per hour, so compare them with your NAT data charge first.
  5. Shrink staging. One NAT gateway, Single-AZ database, smaller tasks, and scale it to zero outside working hours.
  6. Right-size from metrics. If tasks sit at 10% CPU, halve them. Try Fargate on ARM (Graviton), which lists at $0.03238 per vCPU-hour against $0.04048 for x86, if your images build for it.
  7. Only then commit. Compute Savings Plans and RDS reserved instances cut the price of what's left, but lock in a year of spend. Trim first, commit second.

Re-run the numbers in the runway calculator after each change to see what it's worth in months.

09Questions
Is the AWS free tier enough to run a startup?

For a prototype, parts of it help: the first 100 GB of data transfer out, 5 GB of CloudWatch Logs and the CloudFront Free plan are all included in profile A above, though CloudFront's flat-rate plans need an account that has left the AWS Free Tier. Load balancers, NAT gateways, IPv4 addresses and a Multi-AZ database are not free, and those are what a production setup needs.

Why does my bill say "EC2-Other" when I don't run EC2?

NAT gateways, EBS volumes and some data transfer show up under EC2-Other in Cost Explorer, even if everything you run is Fargate or RDS. Group Cost Explorer by usage type to see them.

Is ECS on Fargate cheaper than EC2 instances?

Per vCPU, EC2 is usually cheaper if you keep the instances busy. Fargate wins at small scale because you don't pay for idle capacity or spend time patching hosts. Most startups switch, if ever, well past profile C.

How accurate are these numbers?

The unit prices are AWS list prices for us-east-1, checked 22 Oct 2026. The usage figures (tasks, GB, requests) are illustrative. Plug your own usage into the same formulas, or into the AWS Pricing Calculator, and expect your real bill to land within the range of the profile that looks most like you.

What should a startup AWS bill be as a share of revenue?

There's no reliable public benchmark at seed stage, and we won't invent one. Track gross AWS cost per customer instead; investors ask for it in due diligence, and it tells you whether growth makes the bill better or worse.

10Related
11Next step

If your bill already looks like the bigger profiles above, a fixed-fee cost review ranks every saving by dollars a month, and it is free if we find less than 3x the fee in annual savings.

StripCOST-FX
TypeFixed fee
AWS spendup to $30,000 /mo
You keep100% of savings
If we find littleFree under 3x fee
Price$1,500
NextAWS cost review
Talk to an engineer