Idle EC2 instances
An instance sitting at near-zero CPU for weeks costs exactly what a fully loaded one costs.
What this problem is
EC2 bills for time powered on, not for work performed. An instance at 1% CPU costs what the same instance costs at 90%. Which means every idle instance is total waste: there is no partial usage being partially billed.
Idle instances are rarely created by mistake. Almost always they were created for a real reason — a staging environment, a pilot, a migration, the replica of a service since retired — and simply never shut down when the reason went away. Because they still answer pings and look healthy in the console, nothing signals that they are surplus.
What separates an idle instance from a lightly used one is consistency: low CPU sustained over weeks, without spikes, alongside near-zero network traffic. A bursty workload has a low average but real peaks; an idle one is flat.
How we detect it
We list running instances with DescribeInstances and read, for each, the CPU utilization and network traffic metrics CloudWatch already collects, via GetMetricStatistics, across a multi-week window.
- Idle EC2 instances
What it costs
Cost depends on type and region: a t3.medium runs about $30 a month on demand, an m5.large about $70, an r5.xlarge about $185 (us-east-1, Linux, 730 hours).
Public AWS list prices, us-east-1, subject to change. The figure in your report is computed against your resources in your regions.
How it appears in the report
An illustrative example, with invented resources and figures. In the report each finding carries the real resource, its region, and the fix command where a safe one exists.
Does your account have this?
The scan is read-only and shows you what it found before you pay for anything.
Run a free scan