On this page
The short version
- Most wasted cloud money comes from things nobody is using: servers left on, oversized machines, old storage and forgotten extras.
- Start by seeing where the money goes. Tag everything, and switch on budgets and anomaly alerts. It takes an afternoon.
- Fix the quick, low-risk leaks first, then commit to discounts like Savings Plans only for what is left.
- Make someone own the bill and look at it every month, or it will creep back.
First, find where the money goes
You cannot fix what you cannot see. Before changing anything, spend an afternoon getting visibility. AWS gives you most of what you need at no extra cost.
- Open Cost ExplorerGroup last month's costs by service, then by usage type. Two or three lines usually make up most of the bill.
- Tag everythingAdd tags like project, environment and owner to your resources, then turn them on as cost allocation tags. Now you can see what each product or client really costs.
- Set budgets and alertsCreate a monthly budget with an email alert at 80% and 100%, and switch on Cost Anomaly Detection so unusual spikes reach you in days, not at the end of the month.
The 10 leaks we find most often
1. Servers that run all night for nobody
Development, testing and staging machines often run 24 hours a day, seven days a week, while people only use them during office hours. Schedule them to stop in the evening and at weekends. That alone removes well over half of their running hours.
2. Machines that are bigger than they need to be
Instances are often sized for a launch-day guess and never revisited. If a server's CPU and memory sit mostly idle, move it down a size. AWS Compute Optimizer suggests right-sizing based on your actual usage.
3. Paying full price for work that never stops
On-demand pricing is the most expensive way to run something that is always on. For steady workloads, Savings Plans can cut compute costs by up to 72% in exchange for a one or three year commitment. For work that can be interrupted, such as batch jobs, Spot capacity can be up to 90% cheaper.
4. Forgotten leftovers
Every account collects them: disks still attached to nothing, snapshots from projects that ended long ago, load balancers with no traffic and IP addresses nobody uses. Since February 2024, AWS also charges for every public IPv4 address, so a handful of forgotten ones now shows up on the bill.
5. Old storage settings
Many volumes still use the older gp2 type. The newer gp3 type costs up to 20% less per gigabyte and lets you set performance separately, and you can switch without downtime.
6. Files that never move to cheaper storage
Old backups, logs and uploads often sit in the most expensive S3 storage class forever. Add lifecycle rules that move them to cheaper classes as they age, or use S3 Intelligent-Tiering when you cannot predict how often files are read.
7. The NAT Gateway surprise
Private servers that reach the internet through a NAT Gateway pay for every gigabyte that passes through it, and that includes traffic to S3 and DynamoDB in the same region. Add VPC gateway endpoints for those two services. They cost nothing and take that traffic off the meter.
8. Data moving around more than it needs to
Data leaving AWS for the internet costs money, and so does data moving between availability zones. Serve images and downloads through a CDN such as CloudFront, keep chatty services in the same zone where it is safe to do so, and watch for services copying the same data back and forth.
9. Logs kept forever
New CloudWatch log groups are set to never expire by default. Months of debug logs nobody reads add up quietly. Set a retention period on every log group, for example 30 days for routine logs, and archive only what you are required to keep.
10. Older machine types
Newer instance generations usually give more performance for the same money. For many workloads, AWS's own Graviton processors offer up to 40% better price performance than comparable x86 instances. Test your application on them when you next upgrade.
A one-week clean-up
Most teams can plug the biggest leaks in a single focused week without touching anything risky in production.
- MondayTurn on budgets, anomaly alerts and cost allocation tags. List the top ten cost lines.
- TuesdayDelete unattached volumes, old snapshots, idle load balancers and unused IP addresses (after checking with their owners).
- WednesdaySchedule non-production servers to stop outside working hours. Set retention on every log group.
- ThursdayRight-size the obviously oversized instances. Move gp2 volumes to gp3. Add S3 lifecycle rules and gateway endpoints.
- FridayCompare the new daily run rate with last week, then decide how much steady usage is safe to cover with Savings Plans.
Keep it from creeping back
A clean-up feels great for a month. Without a few habits, the bill drifts back up. The teams that stay lean do three simple things:
- Someone owns the bill. One named person reviews it every month and follows up on anything unusual.
- Cost is part of building. New resources must be tagged, and the expected monthly cost is mentioned when a new service is planned.
- Waste is cleaned up on a schedule. A monthly check for idle and unattached resources catches leftovers before they pile up.
Thinking about adding AI to your workflows next? Read this first, so you know where it saves money and where it does not.
Related guideLet AI do the boring bitsFive back-office tasks AI can take over today, three it should not do alone, and how to try it safely.Questions people ask
Why did my AWS bill suddenly go up?
The usual culprits are something left running after a test, a new feature that moves a lot of data between services or out to the internet, logs that keep growing, or a free tier or credit that ran out. Cost Explorer, grouped by service and then by usage type, normally shows which line jumped.
What is the quickest way to cut an AWS bill?
Switch off what is not being used. Stopping non-production servers outside working hours and deleting unattached volumes, old snapshots and idle load balancers are low-risk changes that often pay off within the month.
Should I buy Savings Plans or Reserved Instances?
For most teams, Compute Savings Plans are the simpler choice because they apply across instance types, sizes and regions. Only commit to the amount you are confident you will use every hour, after you have removed waste and right-sized.
What is FinOps?
FinOps is the habit of treating cloud spend as a shared responsibility: engineers can see what their choices cost, finance gets predictable bills, and someone reviews spending regularly instead of once a year.
Will moving to another cloud provider make it cheaper?
Rarely on its own. The same leaks follow you to any provider. Fixing how resources are sized, scheduled and cleaned up usually saves more, with far less risk than a migration.
Want this to happen automatically?
We are building a cloud cost optimiser for growing teams in India: it finds these leaks for you and shows what each fix will save. Join the waitlist to try it first.
Join the waitlistSources
- AWS Savings Plans
- Amazon EC2 Spot Instances
- Amazon EBS volume types (gp3)
- New charge for public IPv4 addresses
- AWS Graviton processors
- AWS Cost Anomaly Detection
Prices and discounts change, and every account is different. Test changes in a non-production environment first, and check current AWS pricing for your region.


