While reviewing real-world cloud cost audits this week, the same infrastructure leak kept surfacing across multiple engineering teams: unattached EBS volumes and idle resources quietly inflating the monthly bill.
Where the Waste Hides
- The Silent Accumulation: As Tim O'Brien recently highlighted, fifty abandoned 100 GB unattached EBS volumes cost roughly $500/month ($6,000/year). Clearing out forgotten storage isn't just a one-off cleanup—it requires continuous ownership tracking because unattached volumes persist indefinitely unless removed.
-
Orphaned Post-Termination Storage: Aman Maheshwari pointed out that in environments running hundreds of EC2 instances, attached EBS volumes often survive instance termination (if
DeleteOnTerminationwas unset) and continue billing unnoticed. - The Extended Support Trap: Antonio Augusto Maguelniski shared a case where a client's AWS bill doubled without any new deployments—their RDS costs surged from $30 to $330/month simply because two PostgreSQL 12 instances slipped out of standard support into AWS Extended Support.
Auditing Unattached Volumes with Python & Boto3
Instead of manually clicking through region tabs in the AWS Console, you can query for detached volumes in available state across your infrastructure with a simple Boto3 inspection script:
import boto3
def audit_unattached_ebs(region='us-east-1'):
ec2 = boto3.client('ec2', region_name=region)
# Query volumes that are not attached to any running instance
response = ec2.describe_volumes(
Filters=[{'Name': 'status', 'Values': ['available']}]
)
orphaned_volumes = response.get('Volumes', [])
print(f"[{region}] Found {len(orphaned_volumes)} unattached EBS volume(s):")
total_wasted_gb = 0
for vol in orphaned_volumes:
vol_id = vol['VolumeId']
size = vol['Size']
vol_type = vol['VolumeType']
total_wasted_gb += size
print(f" - {vol_id} | {size} GiB ({vol_type}) | Created: {vol['CreateTime'].strftime('%Y-%m-%d')}")
print(f"Total unattached storage: {total_wasted_gb} GiB")
if __name__ == '__main__':
audit_unattached_ebs('us-east-1')
Continuous FinOps Automation
Manually deleting disks risks wiping data that still needs an owner review, while leaving them alone guarantees continuous waste. Automated governance requires regular multi-account audits and programmatic reporting before executing snapshots or deletions.
- 👉 Grab the free open-source CLI on GitHub: aws-finops-auditor-lite
- 👉 Need multi-account AWS Organization (
sts:AssumeRole) scanning and automated CI/CD schedules? Get the Enterprise AWS FinOps Auditor ($99 one-time)
Top comments (0)