Guides
How to Reduce Your AWS Bill: A Practical DevOps Checklist
By Ravindra Bagale, DevOps trainer · LinkedIn · Published: · Last updated:
Set a billing alarm, tag resources, delete orphans (EBS, snapshots, idle LBs), watch NAT, right-size, and review Cost Explorer monthly.
Friends, the bill is a DevOps signal — idle resources talk. Chala mitrano — alarm first, delete orphans second, right-size third.
मित्रांनो, bill ही DevOps signal. Chala mitrano — आधी alarm, मग orphans, मग right-size.
मित्रों, bill एक DevOps signal है। Chala mitrano — पहले alarm, फिर orphans, फिर right-size।
Quick answer
Hold this vertical picture:
- Create billing alarm.
- Enforce tags.
- List stopped EC2 and available EBS.
- Check ALB/NAT/snapshots.
- Right-size; S3 lifecycle; monthly review.
Language: English · मराठी · हिंदी
AWS bill checklist
Why a checklist
Cloud bills drift without ritual.
Why: Hero cleanups return next month.
What: Alarm → orphans → right-size → review.
How: Finance agrees thresholds.
Example 1: Billing alarm
Type this:
printf '%s\n' 'aws cloudwatch put-metric-alarm --alarm-name billing-100-usd --metric-name EstimatedCharges --namespace AWS/Billing --statistic Maximum --period 21600 --evaluation-periods 1 --threshold 100 --comparison-operator GreaterThanThreshold --dimensions Name=Currency,Value=USD --contact-groups ...'
You will see:
aws cloudwatch put-metric-alarm --alarm-name billing-100-usd --metric-name EstimatedCharges --namespace AWS/Billing --statistic Maximum --period 21600 --evaluation-periods 1 --threshold 100 --comparison-operator GreaterThanThreshold --dimensions Name=Currency,Value=USD --contact-groups ...
What it means: us-east-1 billing metric — set an INR-aware threshold your team agrees.
Example 7: Tag for cost
Type this:
printf '%s\n' 'Environment=dev, Owner=payments, Project=checkout'
You will see:
Environment=dev, Owner=payments, Project=checkout
What it means: Without tags Cost Explorer is a fog.
Example 10: Budget in INR talk
Type this:
printf '%s\n' 'Agree a monthly budget with finance; alarm at 50 percent and 80 percent'
You will see:
Agree a monthly budget with finance; alarm at 50 percent and 80 percent
What it means: Startups in Bengaluru do this weekly in stand-up.
Concept 1: Find idle storage and compute
Stopped is not free.
Why: EBS and snaps outlive instances.
What: describe-instances/volumes/snapshots.
How: Delete with a ticket when sure.
Example 2: Find stopped vs unused
Type this:
printf '%s\n' 'aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --query "Reservations[].Instances[].InstanceId"'
You will see:
aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --query "Reservations[].Instances[].InstanceId"
What it means: Stopped instances still cost for EBS volumes.
Example 3: Unattached EBS
Type this:
printf '%s\n' 'aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[].VolumeId"'
You will see:
aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[].VolumeId"
What it means: available = not attached — common orphan bill.
Example 4: Old snapshots
Type this:
printf '%s\n' 'aws ec2 describe-snapshots --owner-ids self --query "Snapshots[?StartTime<=\`2024-01-01\`].SnapshotId"'
You will see:
aws ec2 describe-snapshots --owner-ids self --query "Snapshots[?StartTime<=\`2024-01-01\`].SnapshotId"
What it means: Keep restore points you need; delete ancient labs.
Concept 2: Network quiet costs
ALB and NAT bill while idle.
Why: Zero-traffic ALB still charges.
What: List LBs; share/remove NAT.
How: gp3 migrations help.
Example 5: Idle load balancers
Type this:
printf '%s\n' 'aws elbv2 describe-load-balancers --query "LoadBalancers[].LoadBalancerArn"'
You will see:
aws elbv2 describe-load-balancers --query "LoadBalancers[].LoadBalancerArn"
What it means: ALB/NLB cost daily even with zero traffic — Flipkart labs forget this.
Example 6: Right-size hint
Type this:
printf '%s\n' 'If CPU < 10 percent for two weeks, try a smaller instance type in next maintenance'
You will see:
If CPU < 10 percent for two weeks, try a smaller instance type in next maintenance
What it means: Right-size beats buying bigger "just in case".
Example 11: gp3 vs gp2
Type this:
printf '%s\n' 'Prefer gp3 volumes when migrating — often cheaper for same baseline'
You will see:
Prefer gp3 volumes when migrating — often cheaper for same baseline
What it means: Easy win during Terraform refactors.
Cost Explorer needs dimensions.
Why: Untagged spend cannot be owned.
What: Environment/Owner tags; Monday review.
How: S3 lifecycle for cold logs.
Example 8: S3 lifecycle
Type this:
printf '%s\n' 'Move rare logs to Glacier Instant Retrieval or Deep Archive after N days'
You will see:
Move rare logs to Glacier Instant Retrieval or Deep Archive after N days
What it means: Hot S3 for forever logs burns INR.
Example 9: NAT gateway watch
Type this:
printf '%s\n' 'NAT Gateway hourly + data processing — share or remove unused NATs in idle VPCs'
You will see:
NAT Gateway hourly + data processing — share or remove unused NATs in idle VPCs
What it means: Quiet killer on small AWS accounts.
Example 12: Monthly review ritual
Type this:
printf '%s\n' 'Calendar: first Monday — Cost Explorer by service + kill orphans checklist'
You will see:
Calendar: first Monday — Cost Explorer by service + kill orphans checklist
What it means: Ritual beats one heroic cleanup.
Bill checklist card
1 CloudWatch billing alarm 2 Tags everywhere 3 Stopped EC2 + unattached EBS + old snaps 4 Idle ALB/NAT 5 Right-size + gp3 6 S3 lifecycle 7 Monthly Cost Explorer
Suppose: Alarm never fires
Billing metric is in us-east-1; confirm region and SNS email.
Suppose: Dev costs = prod
Missing Environment tags or shared NAT.
Ravindra Bagale's Tip
At startups and Infosys shared labs, the surprise bill is usually NAT + forgotten ALB + unattached EBS. Reviewers ask for a monthly checklist.
Startups आणि Infosys labs मध्ये surprise = NAT + ALB + unattached EBS. Reviewers monthly checklist विचारतात.
Startups और Infosys labs में surprise = NAT + ALB + unattached EBS। Reviewers monthly checklist पूछते हैं।
Check yourself (quiz)
Q1. First control?
Billing alarm
Q2. Stopped EC2 still costs?
Yes — EBS volumes
Q3. available volume?
Unattached EBS orphan
Q4. Quiet killers?
NAT and idle ALB
Q5. Why tags?
Cost ownership filters
Q6. Ritual?
Monthly Cost Explorer review
Reading tracking
Mark this guide when you finish. Your browser remembers it on this device.
alarm → orphans → right-size → review.
Did you understand? Let us try it once more.
Frequently asked questions
Is stopped free?
Instance hours stop; EBS continues.
Where is billing metric?
us-east-1.
Savings Plans?
Later optimization after orphans die.
Spot instances?
Great for fault-tolerant labs/jobs.
Who owns the bill?
Tagged Owner + finance partner.
Terraform link?
Destroy unused stacks; tag defaults in modules.