Quick Tip: How to Cut AWS Bills by 40% in One Weekend (5 Practical Steps)
Problem: Cloud bills are eating your startup's runway
Starting a business is hard enough. Watching your AWS bill eat into your runway is worse.
I worked with a company that was spending $12,000/month on infrastructure and couldn't explain why. After a 3-hour audit, we cut their AWS bill by 40% with zero downtime.
Here are the 5 steps I used — you can do them this weekend:
1. Find the invisible costs with AWS Cost Explorer
Go to Cost Explorer → create a custom date range (last 30 days).
Look for:
- Cost by Service (what's consuming the most?)
- Usage by Instance Type (are you paying for expensive instances?)
- Free Tier Expiration Dates (you're paying for what you should get free)
Quick fix: If you see "Reserved Instances" with 0% utilization, turn them off. You're wasting money.
2. Kill the zombie EC2 instances
# Find running instances older than 7 days
aws ec2 describe-instances --query 'Reservations[].Instances[?LaunchTime<`7d ago`].InstanceId' --output text
3 quick ways to identify zombies:
- Launch Time filter in EC2 console (older than 3 days = likely dead)
- Tag all instances with "Environment" = "production/staging/dev"
- CPU Utilization check: anything under 5% for 48+ hours = kill it
Rule: If you haven't touched it in 7 days, turn it off. If you need it, you'll notice.
3. Optimize storage (EBS volumes are sneakier than you think)
Check your EBS costs:
aws ec2 describe-volumes --query 'Volumes[?Attached==`true` && UsagePrice>0].{VolumeId:VolumeId,Type:VolumeType,Usage:UsagePrice}' --output table
3 optimization moves:
- Stop in-use volumes that aren't accessed (S3 already saves your data)
- Snapshot policy: Auto-snapshot daily, keep 7 days (cheaper than keeping volumes attached 24/7)
- Volume types: If you have IOPS < 3,000, switch from Provisioned IOPS (I3) to General Purpose (GP3) — up to 63% cheaper
4. Enable Auto Scaling (downtime doesn't cost you money)
Most companies set a fixed number of instances, then panic when traffic spikes.
Fix: Set minimum/maximum instances based on historical traffic patterns.
Example (Node.js API serving 10K req/min):
- 3 instances minimum (baseline)
- 10 instances maximum (peak)
- Auto Scaling rules: scale out when CPU > 70%, scale in when CPU < 30%
Result: You pay for what you need, not for idle capacity.
5. Enable AWS Budgets and set alerts
Create a budget:
- Go to AWS Billing → Budgets → Create Budget
- Set your monthly limit (e.g., $3,000 for a $12K bill)
- Add an alert: if you spend 80% of the budget, get an email
Golden rule: Never wait for a bill you can't afford. Budgets give you 2 weeks' runway to adjust.
Total savings: $4,800/month (40%)
If you're spending $12K/month on infrastructure, this weekend fix = $4,800/month in runway.
That's one less time you need to raise capital.
Tools I recommend
| Goal | Tool |
|---|---|
| Auto-savings rules | AWS Trusted Advisor |
| Cost monitoring | CloudWatch Cost Explorer + CloudZero |
| Enforce budgets | AWS Budgets (set alerts) |
| Power usage | Cloud Custodian (for bulk tag updates) |
| Negotiating | AWS Discounts Manager (reserved instances) |
Quick checklist for this weekend:
- [ ] Run Cost Explorer (last 30 days)
- [ ] Identify zombie EC2 instances (turn off 3-5)
- [ ] Review EBS volumes (stop unused ones)
- [ ] Enable Auto Scaling if you're manually scaling
- [ ] Set up AWS Budgets alert at 80%
Time spent: 3-5 hours
Money saved: $1,500 - $5,000/month (depends on your scale)
Want to turn this into a reusable playbook? I've built a complete AWS cost audit checklist — grab it from my profile.
P.S. The startup I worked with also reduced their bill by another 20% after we enabled **Reserved Instances* for workloads that run 24/7. Let me know if you want that step too.*
follow @hive80lab on Dev.to for more ops automation playbooks.
I also keep a free copy of the first-30-minutes incident runbook (what to check, log, and escalate when an unattended agent breaks) here: https://hive80lab.gumroad.com/l/first-30-minutes
Top comments (0)