AWS Cost Optimization Strategies That Actually Work in 2026
Most companies overspend on AWS by 30-40%. Here are the proven strategies we use at SoftStackers to cut cloud bills without sacrificing performance or reliability.
If your AWS bill keeps climbing and you are not sure why, you are not alone. We audit dozens of AWS accounts every quarter at SoftStackers, and the pattern is remarkably consistent: most organizations overspend by 30 to 40 percent without realizing it.
The good news is that the fixes are usually straightforward once you know where to look.
Start With Visibility
You cannot optimize what you cannot measure. Before touching a single resource, get your cost data in order.
- Enable Cost Explorer with hourly granularity and tag-based filtering
- Implement a tagging strategy -- every resource needs at minimum
Environment,Team, andProjecttags - Set up AWS Budgets with alerts at 80% and 100% thresholds for each team
We have seen companies save 15% just by identifying orphaned resources that nobody knew existed. Visibility is step one.
Right-Size Your Compute
Over-provisioned EC2 instances are the single biggest source of waste we encounter. Here is our process:
- Pull CloudWatch metrics for CPU, memory, and network over the last 30 days
- Identify instances running below 20% average utilization -- these are candidates for downsizing
- Use AWS Compute Optimizer recommendations as a starting point, but validate against peak usage patterns
- Test in staging first before making production changes
# Quick check: find instances with low CPU utilization
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0abc123def456 \
--start-time 2026-01-10T00:00:00Z \
--end-time 2026-02-10T00:00:00Z \
--period 86400 \
--statistics Average
To put the waste in real terms: an m5.2xlarge in us-east-1 runs about $0.384/hour on-demand,
or roughly $280/month if it never sleeps. Twenty of them sitting at 10% CPU is about $5,600/month
for capacity you are not using — call it $67,000 a year. Right-sizing that fleet to m5.large at
$0.096/hour takes the same line item to roughly $1,400/month. That is arithmetic on public list
prices, not a promise about your bill, but it is the shape of the problem in almost every account
we open.
A common mistake is right-sizing based on average utilization alone. Always check the P99 before downsizing -- an instance that averages 10% CPU but spikes to 85% during batch jobs needs a different approach than one that sits flat at 10%.
Move Cold Data Off Standard Storage
S3 Standard is $0.023 per GB-month in us-east-1. Glacier Deep Archive is $0.00099 — about 23x cheaper. For 50 TB of logs and backups nobody has opened in a year, that is roughly $1,150/month versus about $50. The catch is retrieval: Deep Archive takes up to 12 hours and charges per request, so it is right for compliance copies and wrong for anything on a restore path you actually exercise.
Switching gp2 volumes to gp3 is the other easy one — same or better performance, about 20% cheaper per GB, and you can change the type in place with no downtime.
Use Savings Plans and Reserved Instances
On-demand pricing is the most expensive way to run AWS. For predictable workloads:
- Compute Savings Plans — up to 66% off on-demand, and they follow you across instance family, size, OS, and region
- EC2 Instance Savings Plans — up to 72% off, but you commit to a family in a region
- Reserved Instances — up to 72% on a 3-year all-upfront term; still the right call for RDS and ElastiCache, which rarely move
- Spot — up to 90% off for anything that tolerates a two-minute interruption notice: batch, CI, rendering, most ETL
Those percentages are AWS's own published ceilings, not estimates. The gap between 0% and 66% is a purchasing decision, not an engineering one, which is why it is usually the fastest money on the table.
Our recommendation: Start with a 1-year Compute Savings Plan covering 60-70% of your steady-state usage. Layer on Reserved Instances for RDS and ElastiCache. Leave the remaining capacity on-demand for burst and experimentation.
Optimize Storage Costs
S3 costs sneak up on organizations because individual objects are cheap but volume adds up fast.
- Implement S3 Lifecycle Policies to transition objects to Infrequent Access after 30 days and Glacier after 90
- Enable S3 Intelligent-Tiering for buckets with unpredictable access patterns
- Audit EBS volumes -- unattached volumes and oversized gp2 volumes are common waste
- Migrate gp2 to gp3 -- it is cheaper and faster with no downtime required
# Find unattached EBS volumes
import boto3
ec2 = boto3.client("ec2")
volumes = ec2.describe_volumes(
Filters=[{"Name": "status", "Values": ["available"]}]
)
for vol in volumes["Volumes"]:
size_gb = vol["Size"]
monthly_cost = size_gb * 0.08 # gp2 pricing
print(f"{vol['VolumeId']}: {size_gb}GB = ~${monthly_cost:.2f}/mo wasted")
Containerize and Go Serverless Where It Makes Sense
Not every workload belongs in a container or Lambda function, but many do:
- Batch processing is a natural fit for Lambda or Fargate Spot
- APIs with variable traffic benefit from auto-scaling ECS services or Lambda behind API Gateway
- Scheduled jobs running on dedicated EC2 instances can almost always move to EventBridge plus Lambda
The key is matching the compute model to the workload pattern. A steady-state API serving 1,000 requests per second is cheaper on EC2. A webhook handler that fires 50 times a day is dramatically cheaper on Lambda.
Build a Culture of Cost Awareness
Technical optimizations only stick when the team cares about cost:
- Include cost metrics in sprint reviews alongside performance and reliability
- Give teams visibility into their own spend with per-team dashboards
- Celebrate cost wins the same way you celebrate feature launches
- Make cost a design consideration in architecture reviews
At SoftStackers, we help teams build this muscle through ongoing AWS management partnerships. The companies that sustain their savings long-term are the ones that treat cost as a first-class engineering concern, not a quarterly fire drill.
Need help reducing your AWS bill? Get in touch for a free cost optimization assessment. Our average customer saves over 30% within the first 90 days.