How to Cut Your AWS Bill Without Breaking Anything
Most growing businesses are overpaying for AWS by 20–40%. The good news is that the biggest savings usually come from a handful of straightforward changes — and none of them require touching your production application code.
Start with visibility
Before you can optimise anything, you need to understand what you're actually spending. AWS Cost Explorer is free and gives you a breakdown by service, region, and tag. Enable it if you haven't already, and spend an hour understanding where your money is going.
The most common finding: a small number of services account for the majority of spend. EC2, RDS, and data transfer are usually the top three. That's where to focus first.
Right-size your EC2 instances
The most common source of waste is oversized instances. When engineers provision infrastructure, they tend to size up to be safe — and then never revisit it. A t3.xlarge running at 8% CPU utilisation is a t3.small with a t3.xlarge price tag.
AWS Compute Optimizer analyses your actual utilisation and recommends right-sized alternatives. It's free to use and typically identifies 20–30% savings on EC2 alone. Run it, review the recommendations, and resize instances during a low-traffic window.
Use Savings Plans or Reserved Instances for stable workloads
On-demand pricing is the most expensive way to run AWS. If you have workloads that run consistently — a production web server, a database, a background processing queue — you should be using Savings Plans or Reserved Instances.
Savings Plans offer 1- or 3-year commitments in exchange for up to 66% off on-demand rates. You don't need to specify instance types upfront, which makes them flexible. For most businesses, a 1-year Compute Savings Plan covering 60–70% of baseline spend is a sensible starting point.
Audit your RDS instances
Databases are often the second-largest line item and the most overlooked. Common issues:
Multi-AZ in non-production environments. Multi-AZ doubles your RDS cost and is designed for production resilience. Dev and staging environments don't need it.
Oversized instance classes. Same problem as EC2 — engineers size up and never revisit. Check actual CPU and memory utilisation in CloudWatch.
Snapshots retained indefinitely. Automated snapshots are cheap, but manual snapshots taken for one-off purposes and never deleted accumulate quietly. Audit your snapshot inventory.
Eliminate idle and forgotten resources
Every AWS account accumulates waste over time: stopped EC2 instances still paying for attached EBS volumes, unused Elastic IPs (charged when not attached), old load balancers with no targets, snapshots from instances that no longer exist.
A systematic sweep of your account looking for unattached resources typically finds several hundred dollars a month in waste in accounts that have been running for a year or more.
Review data transfer costs
Data transfer is one of the most confusing parts of the AWS bill and often a source of unexpected spend. Key things to check:
- Traffic leaving AWS to the internet is charged; traffic between services in the same region is usually free or cheap - Traffic between availability zones within a region is charged — if your services are chatty across AZs, this adds up - NAT Gateway charges both per-hour and per-GB processed — high-volume workloads should consider alternatives like VPC endpoints for AWS services
The 30-day approach
Week 1: Enable Cost Explorer, run Compute Optimizer, identify top 3 cost drivers. Week 2: Right-size EC2 and RDS instances based on recommendations. Week 3: Purchase Savings Plans for stable workloads, clean up idle resources. Week 4: Review data transfer, set up billing alerts, document what you changed.
Most businesses that go through this process systematically find 20–40% savings. The work takes a few days of focused effort, not months — and the savings compound every month afterwards.
Want to talk through what this means for your business?
Get in touch