You know that feeling when you check the AWS bill and mutter, "Wait, why is it $600 this month?"
Welcome to cloud waste: the graveyard of dev/test instances, unattached EBS volumes, and Elastic IPs floating around like lost luggage. I built this at AlphaPoint where we had multiple AWS accounts and environments spinning up and down for blockchain trading experiments. Cloud waste was real. At one point, we were paying monthly for resources we did not even know existed.
One Monday, I found an EC2 instance labeled alpha-lambda-test-final3 that had been running untouched for 19 days. It was not even mine.
The Fix: A Serverless Snitch
I built a Lambda-based detector that:
- 🔍Scans all AWS regions
- 🚩Flags unused EC2s, unattached EBS volumes, and idle Elastic IPs
- 🧹Offers optional cleanup: you can delete from the report itself
- 💰Calculates real-time cost impact so you instantly know how much you will save
- 📧Emails a report and saves a JSON audit log to S3
GitHub: github.com/chinmaya-chhatre/aws-unused-resource-detector
Elastic IPs are only free if they are attached. Otherwise they are quietly draining your budget.
What Changed
- 💸Cut our AWS bill by roughly 15% in the first week
- 🧹Became the unofficial cloud janitor
- 📊Finance started sending thank-you memes. Not even kidding.
Cost control should not feel like wizardry. A 100-line Lambda script can save you thousands. No one wants to explain a surprise AWS bill to leadership.
Tradeoffs I Made
- ⚖️Audit vs action: manual deletion to avoid unintended removals, safety over speed
- 📈Started small with EC2, EBS, and Elastic IPs, then expanded once it proved useful
- 💱General pricing estimates instead of real-time billing APIs: good enough for predictions
What I Would Add Next
- 🔍Add idle Lambda and RDS detection
- 💬Slack alerts for "Why is this EC2 still running?"
- 🧹Auto-clean toggle with approval flow
More from the Tech Blog