AWS Cost Troubleshooting · Startup Guide

Why Is My AWS Bill So High? The 7 Most Common Causes for Startups

Your AWS bill jumped and you don't know why. Here are the 7 most common causes we find in startup accounts - and how to fix each one fast.

30–40% typical overspend
Most issues fixable in days
No Reserved Instances required
01

Over-provisioned EC2 instances

Saves $400–2,000/month

The most common finding in every audit. Instances are sized for peak load at launch and never revisited. CloudWatch shows 5–15% average CPU utilization, but the team is afraid to downsize in case something breaks.

The fix

Analyze 2 weeks of CPU, memory, network, and EBS I/O metrics. Downsize to the next smaller instance family, or migrate to Graviton (20–40% cheaper). Memory metrics require CloudWatch Agent - most startups don't have it installed.

EC2 rightsizing guide
02

NAT Gateway data processing charges

Saves $800–3,000/month

NAT Gateway charges $0.045/GB for all data processed - on top of the hourly rate. Traffic from EC2 instances to S3 or DynamoDB goes through NAT Gateway by default, racking up charges that look like 'data transfer' on the bill.

The fix

Create a Gateway VPC Endpoint for S3 and DynamoDB. Traffic routes through AWS's private network, bypassing NAT Gateway entirely. Cost: free. Implementation: 15-minute Terraform change.

How to reduce NAT Gateway costs by 70–80%
03

Unattached EBS volumes and old snapshots

Saves $100–500/month

Every time an EC2 instance is terminated, the EBS volume is often left behind unless `DeleteOnTermination` is set. Snapshots accumulate from automated backups with no lifecycle policy. This is invisible until Cost Explorer is filtered by EBS.

The fix

Run `aws ec2 describe-volumes --filters Name=status,Values=available` to find unattached volumes. Audit snapshots older than 30 days. Migrate gp2 volumes to gp3 for 20% savings with no performance impact.

EBS cost optimization guide
04

No Savings Plans or Reserved Instances

Saves $1,000–8,000/month

On-Demand pricing is 30–66% more expensive than 1-year Savings Plans. Startups avoid commitments because they worry about locking in the wrong instance type - but Compute Savings Plans are fully flexible across instance families, regions, and OS.

The fix

Calculate your steady-state baseline from 3 months of Cost Explorer data. Buy a Compute Savings Plan for ~70% of your baseline compute spend. Do this only after rightsizing - never commit to waste.

Savings Plans vs Reserved Instances guide
05

Idle load balancers

Saves $50–200/month

Application Load Balancers cost $16–30/month each in baseline charges, regardless of traffic. Staging environments, test deployments, and decommissioned services often have ALBs still running with zero or near-zero traffic.

The fix

List all load balancers and check `RequestCount` in CloudWatch for the past 30 days. Delete any with fewer than 100 requests/day that aren't attached to active services.

06

Over-provisioned RDS instances

Saves $300–1,500/month

RDS is consistently the second-biggest AWS line item. Instances are sized conservatively at launch and grow with the team's anxiety about database performance - not with actual utilization. Multi-AZ deployments double the cost.

The fix

Check RDS `CPUUtilization`, `DatabaseConnections`, and `FreeStorageSpace` over 2 weeks. Downsize instances with consistent sub-30% CPU. Consider Aurora Serverless v2 for variable workloads.

How to reduce RDS costs
07

Forgotten dev and staging environments

Saves $200–2,000/month

Dev and staging environments are created for a sprint and never torn down. They run 24/7 at full production size. A single forgotten staging environment with an RDS db.r5.xlarge and a few EC2 instances can cost $800+/month.

The fix

Tag all resources with `Environment: dev/staging/prod`. Set up AWS Cost Explorer tag-based filtering. Create a scheduled Lambda to stop non-production resources outside business hours using Instance Scheduler.

The Right Order to Fix These

Sequence matters. Committing to Reserved Instances before rightsizing locks in waste.

1

Rightsize first

Delete waste. Downsize over-provisioned instances. Fix NAT Gateway. These require no commitment and save money immediately.

2

Architect better

Add VPC endpoints, move dev/staging to scheduled start/stop, clean up unattached EBS and snapshots.

3

Then commit

Once you know your true baseline, buy Savings Plans and Reserved Instances. Every dollar committed should be to resources you'll actually use.

Fixed-price · Risk-free · 3× ROI guarantee

Want these fixed without doing it yourself?

Book a free 30-minute call. I'll tell you which of these 7 issues are most likely affecting your specific AWS setup - before you commit to anything.

Book a Free 30-Min Call →

30-minute free discovery call · No commitment