$30/Month AWS Bill Becomes $480 the Week Your Side Project Goes Viral (the Egress Trap)

The Story Every Indie Hacker Has

You launched the side project on $30/month AWS — a t3.medium, an S3 bucket, maybe a small RDS. Numbers feel reasonable. Hacker News picks it up Friday afternoon. By Monday your bill alert goes off and you discover $480 of egress charges.

This is the canonical “egress trap.” Let’s run the math.

Normal week: $30/month

ServiceUsageCost
1 vCPU compute730 hours/mo$30.40
S3 storage20 GB$0.46
Direct egress30 GB/mo$2.70
Monthly bill$33.56

Your side project is sustainable. You’re proud. You ship features.

Viral week: 5,000 GB egress in 4 days

The Hacker News crowd lands. Each visitor downloads ~50MB of the demo video served direct from S3. You get 100,000 views before the front page falls off.

ServiceUsageCost
1 vCPU compute730 hours/mo$30.40
S3 storage20 GB$0.46
Direct egress5,030 GB/mo$452.70
Monthly bill$483.56

Egress went from 8% of the bill to 94% of the bill. The compute, storage, and code didn’t change — only one variable shifted, and your bill is 14× higher.

Why egress is the killer

Three things make egress the worst line:

  1. It scales linearly with success. Compute scales with what you provision. Egress scales with what users do. Going viral means hitting the egress line hard with no warning.
  2. The unit price is high relative to what users perceive. A user thinks “I downloaded a 50MB video.” You see “$0.0045 wire transferred to AWS.” Multiply by 100K and that’s real money.
  3. Most developers don’t have alerts on it. AWS Budgets defaults to total spend; egress doesn’t have its own alert by default. By the time the bill arrives, the damage is done.

The CDN fix

CloudFront / Cloud CDN / Front Door egress is $0.085/GB for the first 10TB — slightly cheaper than direct egress. But the real win isn’t the per-GB price; it’s three structural advantages:

AspectDirect from originThrough CDN
Per-GB price$0.090$0.085
Latency100-300ms (single region)5-50ms (edge)
Origin loadEvery request hits your serverCache hit ratio 80-95% on static assets
DDoS protectionManualBuilt-in
5,000 GB/month$450$425 + reduced compute (you serve 90% fewer requests)

For static assets — images, videos, JS bundles, CSS — there’s almost no reason to serve from origin. CloudFront’s free tier covers 1TB/month for the first year. After that the cost is similar but you’ve also reduced your origin load by 90%, meaning lower compute cost too.

The other surprise: NAT Gateway

We didn’t model this in the calculator because it’s situational, but it bites people often:

  • $0.045/hour fixed = $32.85/month per NAT Gateway, just running
  • $0.045/GB processed = matches direct egress

If you set up a private subnet (best practice) and put a NAT Gateway in front, then walk away for a weekend without traffic, you still pay $32.85 for the empty NAT. With traffic, the $0.045/GB processed compounds with regular egress to make every byte twice as expensive.

The fix: use NAT Instance (cheap EC2) for hobby workloads, or VPC endpoints for AWS-internal traffic.

What growing SaaS bills actually look like

We modeled three scale points to anchor expectations:

ScalevCPUStorageEgressDBCDNMonthly
Solo project (5 users)120 GB30 GBNone50 GB$37
Early SaaS (1K users)2100 GB100 GB50 GB500 GB$190
Growing SaaS (10K users)4500 GB200 GB100 GB1,500 GB$310
Heavy traffic SaaS (100K users)162 TB1 TB500 GB8 TB$1,580

The pattern: cost grows roughly linearly with users, but only if you’ve moved egress to CDN. Without CDN, egress becomes super-linear with growth and dominates the bill.

When reserved instances pay off

A 4-vCPU production fleet running 24/7:

StrategyMonthly computeAnnual
All on-demand$121$1,460
50% on 1-year RI$103$1,231
100% on 1-year RI$85$1,015
Savings (100% RI)$36/mo$444/yr

The trade-off: 1-year RI commits you to that capacity even if you scale down. Don’t commit 100% unless your traffic is genuinely steady. 50-70% commit + on-demand for spikes is the typical sweet spot.

For 16-vCPU production scale, the 50% commit saves $1,776/year — equivalent to a quarter of an indie hacker’s annual revenue at MRR $4-5K.

Where this calculator falls short

  • No NAT Gateway / Load Balancer / monitoring modeled. These can add 10-30% on real bills. Use AWS Cost Explorer post-launch to validate.
  • GCP/Azure pricing differs by 5-15%. We use AWS as baseline. The structural advice (move egress to CDN, RI for stable compute) applies identically.
  • Free tier not modeled. AWS free tier covers 750 hours/month of t2.micro for the first 12 months — enough to run a hobby project free. The calculator gives you the post-free-tier number.
  • Spot instances not modeled. 60-80% off on-demand for interruptible workloads. Useful for batch processing, ML training, dev environments. Rarely used by indie hackers because of complexity.

What to actually do

  1. Run your specific stack through the calculator with realistic numbers, not aspirational ones.
  2. Set AWS Budgets with email alerts at 50% / 80% / 100% of the expected monthly bill — before you launch.
  3. Move all user-facing traffic through CDN. No exceptions for “static” or “small” — small files multiply.
  4. Audit NAT Gateway monthly. It’s the most common $50-200 hidden line.
  5. Commit RI when stable: once you’ve run the same compute fleet for 3+ months, 50% RI commit saves real money with no downside.

Open the Cloud Bill Estimator → and run your specific stack. The egress line is the one to scrutinize — it’s where every viral moment becomes an unexpected invoice.

Want to try it yourself?
Open the interactive simulator and run the numbers yourself.
Open tool →
Related articles