All Articles
|Samuel Udoh

How to Reduce Your AWS Bill by 30% This Week

A practical checklist of the 15 silent AWS cost killers hiding in your account right now. Most take less than 10 minutes to fix.

awscost-optimizationcloud

Your AWS bill is too high. We can say that without seeing it because almost every AWS bill is too high.

We've audited dozens of AWS accounts at this point. Startups, mid-size SaaS companies, agencies that accidentally left three environments running. The pattern is always the same: the average company wastes 30-35% of their cloud spend. For a startup paying $6,500/month, that's $2,000/month lighting itself on fire. $24,000 a year. Gone.

Here are the 15 cost killers we find hiding in nearly every account. Most take less than 10 minutes to fix.

The Big Three (Check These First)

1. Idle EC2 Instances

Open your EC2 dashboard. Sort by CPU utilization over the past 2 weeks. Any instance averaging below 5% CPU is probably doing nothing useful.

We find this in every single audit. Dev environments left running over weekends. Staging servers nobody's touched in months. That "temporary" instance from last year's proof of concept that somehow became permanent. One client had eleven idle instances. Eleven.

Fix: Stop or terminate idle instances. Use AWS Instance Scheduler to auto-stop dev/staging instances outside business hours. Typical savings: 15-25% of your EC2 bill.

2. Unattached EBS Volumes

When you terminate an EC2 instance, its EBS volumes don't always go with it. They just sit there, quietly billing you.

Go to EC2 > Volumes and filter by "available" status. Those volumes are attached to nothing. They're ghost costs.

Fix: Snapshot anything you might need, then delete the rest. Typical savings: $65-$400/month depending on volume sizes.

3. Oversized RDS Instances

This one drives us nuts. Someone provisioned a db.r5.2xlarge for production at launch, expecting massive traffic. Six months later, traffic is 10% of what they planned for. The database is sitting there twiddling its thumbs.

Check your RDS CPU and memory utilization. If you're consistently below 30% CPU, you can almost certainly downsize. Our Solutions Architect certified team knows this well — right-sizing databases is one of the highest-ROI moves you can make.

Fix: Downsize to the next tier down. A db.r5.xlarge costs half of a db.r5.2xlarge. Same performance for your actual workload. Typical savings: 40-60% of your RDS bill.

The Sneaky Storage Costs

4. Old RDS Snapshots

AWS keeps automated RDS snapshots based on your retention period. But manual snapshots? Those live forever. And they're not free.

We had a client last year with 47 manual snapshots from a database they'd already deleted. Just sitting there, billing away.

Fix: Delete manual snapshots older than 90 days unless you have a compliance reason to keep them. Typical savings: $25-$130/month.

5. Uncompressed S3 Data

If you're storing logs, JSON files, or CSV data in S3 without compression, you're paying 3-5x more than you need to. We see this constantly with teams that pipe application logs straight into S3.

Fix: Enable gzip compression on uploads. Set up S3 Lifecycle rules to move old data to S3 Glacier after 90 days and delete after a year. Typical savings: 60-80% on storage costs.

6. S3 Versioning Without Lifecycle Rules

S3 versioning is great for data protection. But without lifecycle rules, every old version of every file lives forever. Your bucket looks like 50GB. It's actually 400GB because of all the old versions piling up underneath.

Fix: Add a lifecycle rule to expire non-current versions after 30 days. Typical savings: 20-40% of your S3 bill.

We'll find every wasted dollar in your AWS account. Free audit →

The Networking Money Pits

7. NAT Gateway Data Processing Charges

NAT Gateways charge $0.045 per GB of data processed. Sounds tiny. It's not. If your private subnets push any real volume of traffic to the internet, this adds up alarmingly fast.

Fix: Use VPC endpoints for AWS services (S3, DynamoDB, etc.). This routes traffic privately instead of through the NAT Gateway. Typical savings: $130-$650/month.

8. Cross-Region Data Transfer

Every byte that moves between AWS regions costs money. If you're replicating data across regions "just in case," stop and ask yourself: do we actually need this?

Nine times out of ten, the answer is no.

Fix: Consolidate to a single region if possible. Use CloudFront for content delivery instead of multi-region architectures. Typical savings: varies wildly but often $250+/month.

9. Elastic IPs Not Attached to Instances

Elastic IPs are free when attached to a running instance. When they're not attached, AWS charges you. The dollar amount is small, but we always flag these because they're a symptom. Where there's one piece of forgotten infrastructure, there are usually ten more.

Fix: Release any unattached Elastic IPs. Takes 30 seconds. Typical savings: $5-$20/month (it's the principle).

The Compute Optimizations

10. No Reserved Instances or Savings Plans

If you're running production workloads on On-Demand pricing, you're overpaying. Full stop. You're paying retail for something you could get at a 30-60% discount.

This is the single biggest lever most companies ignore. We get it — commitment feels scary. But if your production environment has been running for six months, it's going to run for another twelve.

Fix: Buy a 1-year Savings Plan for your baseline compute. No Upfront commitment is fine — you still save 20-30%. Typical savings: 30-40% of your compute bill.

11. Lambda Functions with Too Much Memory

Lambda pricing is based on memory AND duration. More memory means faster execution but higher per-millisecond cost. Most functions are over-provisioned because someone set 1024MB "just to be safe" and never revisited it.

Fix: Use AWS Lambda Power Tuning to find the optimal memory setting. We've seen functions drop from 512MB to 128MB with zero performance impact. Typical savings: 20-40% of your Lambda bill.

12. Running Fargate When EC2 Would Be Cheaper

Fargate is convenient. We like Fargate. But for stable, predictable workloads, EC2 with autoscaling is often 30-50% cheaper. Convenience has a price, and you should know what that price is before you agree to pay it.

Fix: Evaluate whether your containers have predictable resource needs. If so, consider switching to EC2-backed ECS. Typical savings: 30-50% of your container compute bill.

The Quick Wins

13. CloudWatch Log Retention

By default, CloudWatch Logs never expire. Every log line your application has ever generated is still there. Every debug statement. Every health check. All of it, costing you money, forever.

Fix: Set retention periods. 14 days for dev, 30 days for staging, 90 days for production. Export to S3 if you need long-term storage. Typical savings: $65-$260/month.

14. Unused Load Balancers

Old Application Load Balancers from projects that no longer exist. They cost a minimum of $22/month each, even with zero traffic. We found four of these in one account last month. That's $88/month for literally nothing.

Fix: Delete any ALB with zero healthy targets or zero requests. Typical savings: $22-$130/month.

15. No Cost Allocation Tags

This isn't a direct savings, but honestly? It's the most important item on this list. If you can't see where the money goes, you can't control it. Holding AWS Security Specialty and Solutions Architect certifications across our team has taught us a lot of things, but the biggest lesson was this: visibility comes before optimization. Always.

Fix: Tag every resource with at least: Environment (dev/staging/prod), Team, and Project. Enable Cost Allocation Tags in your billing console. Then set up a weekly cost report.

The 30-Minute Action Plan

You don't need to tackle all 15 today. Start here:

  1. Right now (5 minutes): Check for idle EC2 instances and unattached EBS volumes.
  2. Today (15 minutes): Set CloudWatch Log retention and delete unused snapshots.
  3. This week (30 minutes): Evaluate Reserved Instances or Savings Plans for production workloads.

Those three steps alone will typically cut your bill by 15-30%. We've seen it happen over and over.


Look, we know this list is long. And we know you've got a product to build instead of spelunking through the AWS billing console. That's exactly why we do this.

We've delivered 40%+ cost reductions for multiple clients — not by doing anything exotic, but by systematically finding every single one of these issues and fixing them. It usually takes us a couple of hours to audit an account and put together a plan.

Get your free AWS cost audit → We'll tell you exactly where your money is going and how to stop the bleeding.

We audit startup infrastructure for free.

Our team will look at your AWS setup, your CI/CD, your security posture, and tell you exactly what to fix first. No charge, no obligation.

Book My Free Audit

Want us to look at your infrastructure?

Our team will audit your AWS setup. Security gaps, wasted spend, broken pipelines. You get a report you can act on immediately. No charge.

No credit card. No sales call. No commitment.