Real method to reduce your AWS bill using right-sizing, autoscaling, and Reserved Instance strategy. No code changes required.
Problem
Our AWS bill jumped 60% in three months. Engineering team had no idea why. Finance was asking questions. Classic story.
Cause
Three root causes after a two-day audit:
- Over-provisioned EC2: t3.2xlarge instances running at 8% CPU average
- No autoscaling: instances running 24/7 including nights and weekends
- Data transfer waste: logs being shipped cross-region unnecessarily
The Fix
Step 1: Right-size your EC2 instances
Use AWS Cost Explorer's right-sizing recommendations:
# Find instances with low CPU utilization
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-xxxxxxxxx \
--start-time 2026-03-01T00:00:00Z \
--end-time 2026-04-01T00:00:00Z \
--period 86400 \
--statistics Average
If p99 CPU is below 20%, you're overprovisioned. We moved from t3.2xlarge to t3.large — same workload, half the cost.
Step 2: Enable autoscaling for non-prod environments
{
"AutoScalingGroupName": "staging-asg",
"ScheduledActions": [
{
"ScheduledActionName": "scale-down-nights",
"Recurrence": "0 20 * * MON-FRI",
"DesiredCapacity": 0,
"MinSize": 0
},
{
"ScheduledActionName": "scale-up-mornings",
"Recurrence": "0 8 * * MON-FRI",
"DesiredCapacity": 2,
"MinSize": 1
}
]
}
Staging environments running nights and weekends is pure waste.
Step 3: Switch to Reserved Instances for baseline load
For workloads running 24/7, Reserved Instances save 40–60% vs On-Demand:
| Type | Discount | Commitment |
|---|---|---|
| On-Demand | 0% | None |
| 1-yr No Upfront | 35% | 1 year |
| 1-yr All Upfront | 40% | 1 year |
| 3-yr All Upfront | 60% | 3 years |
Start with 1-year No Upfront for flexibility.
Step 4: Fix cross-region data transfer
# Find where your data transfer costs are coming from
aws ce get-cost-and-usage \
--time-period Start=2026-03-01,End=2026-04-01 \
--granularity MONTHLY \
--filter '{"Dimensions":{"Key":"SERVICE","Values":["EC2 - Other"]}}' \
--group-by Type=DIMENSION,Key=USAGE_TYPE
We found 3TB/month of logs being shipped from us-east-1 to eu-west-1. Moving the logging stack to the same region saved $180/month alone.
Result
| Category | Monthly Before | Monthly After |
|---|---|---|
| EC2 compute | $4,200 | $2,100 |
| Data transfer | $380 | $60 |
| Non-prod environments | $900 | $350 |
| Total | $5,480 | $2,510 |
54% reduction. No application changes.
The real lesson: cloud costs aren't a finance problem, they're an engineering hygiene problem. One audit per quarter prevents the 3 AM "why is the bill $40k this month?" conversation.
Dealing with a similar problem?
I offer production DevOps consulting. Let's fix it together.
Hire Me →