DEV Community

Steve Rastall
Steve Rastall

Posted on

How to Cut Your AWS Bill Yourself

One thing I’ve noticed working with teams running infrastructure on AWS is that most high cloud bills are not caused by complicated architecture. They usually come from a few small things that have been left running quietly in the background for months.

When someone says their AWS bill is too high, the first thing I suggest is not changing the application or rewriting anything. Instead, spend an hour just looking around the account. You will often find things that simply don’t need to be there.

A common one is oversized EC2 instances. During development people tend to choose a bigger instance just to make sure everything works smoothly. The problem is those instances often stay that way long after the system goes live. When you check CloudWatch you sometimes see machines running at ten or fifteen percent CPU. That means you are paying for far more capacity than you actually use. In many cases you can resize the instance and the application will behave exactly the same.

Another thing that builds up surprisingly quickly is unused EBS volumes. These appear when instances are deleted but their storage remains behind. It happens a lot in test environments or when people are experimenting with infrastructure. The volumes sit there doing nothing but still generating charges every month.

NAT gateways are another one worth checking. They look harmless when you set them up but they can quietly become expensive, especially if multiple environments each have their own. The base cost plus the data processing fees can add up faster than people expect.

Old load balancers also tend to accumulate. A team might create one for a temporary test environment or an old deployment and then forget about it. Months later it is still running and quietly charging a few pounds a day.

Data transfer can sometimes be the biggest surprise. If services are talking across regions, or if a lot of traffic is flowing through NAT gateways, the costs can creep up without anyone noticing. Looking through the Cost Explorer for data transfer usage types often reveals things that were never intended.

Snapshots are another area that slowly grows over time. Backup policies create them automatically and unless someone cleans them up they just continue to accumulate. Many teams have hundreds of snapshots sitting there from instances that no longer even exist.

Something that works well for development environments is simply turning them off overnight. If a dev environment runs twenty-four hours a day but people only use it during working hours, you are paying for a lot of idle time. Scheduling instances to stop in the evening and start again in the morning can cut development infrastructure costs dramatically.

In most cases reducing an AWS bill doesn’t require a redesign of the system. It usually comes down to operational housekeeping. Removing unused resources, resizing things that are too large, and periodically reviewing what is actually running can make a big difference surprisingly quickly.

Cloud infrastructure is powerful, but it’s also very easy to forget what you created last month. Taking the time to look through your account every now and then is often the simplest way to keep costs under control.

Top comments (0)