We Audited 12 Startups' AWS Bills — Average Waste: 43%
Real data from 12 startup AWS audits. The 5 biggest cost leaks, exact savings, and a 45-minute audit process you can run today.
# We Audited 12 Startups' AWS Bills — Average Waste: 43%
Last quarter, we ran infrastructure cost audits for 12 startups (seed to Series B). The results were consistent and painful: every single one was wasting between 28% and 67% of their AWS spend.
Not because they were stupid. Because AWS makes it trivially easy to provision resources and quietly expensive to maintain them.
Here's exactly what we found and how to fix it in 45 minutes.
The 5 Biggest Cost Leaks (In Order of Impact)
1. NAT Gateway Charges: The Silent $540/Month Tax
Every startup we audited was running 3 NAT Gateways (one per AZ) at $180/month each — $540/month for outbound internet traffic routing.
The reality: A 4-person engineering team with a single-service backend does not need multi-AZ redundancy for NAT. Your app server can tolerate a single NAT Gateway. If it goes down, requests retry.
The fix: Reduce to 1 NAT Gateway in your primary AZ. If your app is truly multi-AZ critical, use VPC endpoints for AWS services (S3, DynamoDB, SQS) to eliminate NAT traffic for internal AWS calls.
Savings: $360/month (67% reduction in NAT costs)
2. Oversized RDS Instances: Paying for 12x the CPU You Need
8 out of 12 startups were running db.r5.xlarge or larger ($800+/month) with CPU utilization under 10%.
Why this happens: The RDS instance wizard defaults to production-grade instances. Developers pick "recommended" and forget. RDS has no auto-downsize.
The fix:
# Check your actual utilization
aws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name CPUUtilization \
--dimensions Name=DBInstanceIdentifier,Value=YOUR_DB \
--start-time $(date -d '30 days ago' --iso-8601) \
--end-time $(date --iso-8601) \
--period 86400 \
--statistics Average MaximumIf your P99 CPU is under 40%, drop one instance class. Under 20%? Drop two.
A db.t3.medium ($70/month) handles most startup workloads beautifully until you hit 500+ concurrent connections.
Savings: $500-730/month per instance
3. CloudWatch Log Retention: Paying Forever for Logs Nobody Reads
Default log retention: Never expire. Cost: $0.03/GB/month stored, $0.50/GB ingested.
One startup had 4TB of CloudWatch logs going back to 2023. Cost: $120/month storage + $200/month ingestion for verbose DEBUG logs in production.
The fix:
# Set 14-day retention on all log groups
aws logs describe-log-groups --query 'logGroups[].logGroupName' --output text | \
xargs -I {} aws logs put-retention-policy --log-group-name {} --retention-in-days 14For long-term analysis, export to S3 ($0.023/GB/month — 75% cheaper) and query with Athena on-demand.
Savings: $200-400/month
4. Orphaned EBS Snapshots: Ghost Costs From Deleted Instances
When you terminate an EC2 instance, its EBS snapshots stay. Silently. At $0.05/GB/month.
The find script:
# Find snapshots with no matching volume
aws ec2 describe-snapshots --owner-ids self \
--query 'Snapshots[?!VolumeId].{ID:SnapshotId,Size:VolumeSize,Created:StartTime}' \
--output tableOne client: 2.3TB of orphaned snapshots. $115/month for dead data.
Savings: $50-230/month
5. Load Balancers for Internal Services: $16/Month Each for Nothing
Every ALB costs $16/month base + traffic charges. We found startups running 4-6 ALBs for services that only communicate internally.
The fix: Replace internal ALBs with:
Savings: $64-96/month
The 45-Minute Audit Process
You can run this yourself. Right now.
Step 1 (10 min): Export Cost Explorer data
aws ce get-cost-and-usage \
--time-period Start=$(date -d '90 days ago' +%Y-%m-%d),End=$(date +%Y-%m-%d) \
--granularity MONTHLY \
--metrics "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE \
--output json > cost-report.jsonStep 2 (15 min): Map utilization vs. provisioned
Step 3 (10 min): Find zombies
Step 4 (10 min): Calculate savings
Results Across 12 Audits
|--------------|-------------|-------------|-----------------|
Average savings: 43%. Zero performance impact. Zero downtime.
When Self-Hosting Makes More Sense
If your post-audit AWS bill is still above $2,000/month for a straightforward stack (web app + DB + cache + queue), self-hosting may save you another 80-90%.
We run 84 containers for $45/month on a single Proxmox node. Same stack that costs $2,400 on AWS.
That's a different conversation — but the audit comes first. Know your real spend before deciding your platform strategy.
Get Your Free Audit
We do free 15-minute cloud cost reviews. No pitch, no obligation. We screen-share, run the commands above against your account, and tell you exactly what you're wasting.
Book a slot: techsaas.cloud/contacttechsaas.cloud/contacthttps://techsaas.cloud/contact
Or run the audit yourself with our free PDF checklist that includes all the CLI commands above plus 12 more checks we run.
Need help with cloud & infrastructure?
TechSaaS provides expert consulting and managed services for cloud infrastructure, DevOps, and AI/ML operations.