The problem
AWS now bills public IPv4 addresses more explicitly, so an allocated Elastic IP with no live association becomes a direct idle networking cost. These addresses often linger after migrations, environment teardown, or planned cutovers that never finish.
Why it happens
- Teams pre-allocate public IPs for migrations or cutovers and never return them.
- Environment teardown detaches addresses without a follow-up networking cleanup pass.
- Public IP ownership is often weaker than instance or load balancer ownership review.
What this means for cost
Estimated monthly
$4 to $24/mo
Estimated annual
$48 to $288/yr
This waste pattern often shows up as $4 to $24/mo in recurring monthly cost, or roughly $48 to $288/yr if it sits untouched for a year.
How to detect unused Elastic IP cost
The strongest signal is an allocated Elastic IP with no current association and no clear near-term cutover or migration plan.
List all allocated Elastic IPs and identify those with no association:
aws ec2 describe-addresses \
--query 'Addresses[].{AllocationId:AllocationId,PublicIp:PublicIp,AssociationId:AssociationId,InstanceId:InstanceId,NetworkInterfaceId:NetworkInterfaceId,Tags:Tags}'
Any record without an AssociationId, InstanceId, or NetworkInterfaceId is a candidate for release.
Check tags and infrastructure history before acting. Some teams intentionally reserve addresses ahead of DNS cutovers, allowlist changes, or migration events, but in many accounts they are simply leftovers from prior changes.
What this detector actually checks
Cloud Waste Hunter keeps this detector deliberately narrow:
- the Elastic IP allocation exists
- no active association markers are present
- the finding is about billed-but-unattached public IPv4 inventory, not broader network utilization
That boundary matters. This page is not about low-traffic NAT gateways or idle load balancers. It is about reserved public IPs whose technical attachment state already says they are detached.
How to fix unused Elastic IP cost
Release addresses that have no planned near-term use:
aws ec2 release-address --allocation-id eipalloc-0123456789abcdef0
If you need to retain the address for a migration, tag it clearly with an owner and expiry date so it does not become permanent background cost.
A practical review flow is:
- Confirm no DNS, firewall allowlist, or migration runbook still depends on the address.
- Release the address if no live dependency remains.
- If retention is intentional, document owner and expiry so the review is time-bounded.
Caveats and overlap boundaries
Some unassociated Elastic IPs are deliberate short-term holds. The detector does not try to infer that intent from tags, change history, or cutover schedules. It surfaces the billable networking state and expects an operator to decide whether the reservation is still justified.
If the same teardown also left detached block storage behind, continue into Unattached EBS Volumes. That is the storage-side version of the same incomplete-cleanup story.
How Cloud Waste Hunter helps
Cloud Waste Hunter surfaces unassociated public IP allocations as simple, fast cleanup wins that can be bundled into broader stale-environment review. For the broader networking cleanup workflow, continue into the AWS Idle and Underused Resources guide.
FAQ
Are unused Elastic IPs high-impact waste?
Individually they are usually small, but they are low-friction cleanup items and often show up in clusters across old environments.
Does a tag or name prevent a finding?
No. The detector records tags as context, but it still flags any allocated address with no active association. Operators review tags after the fact to decide whether temporary retention is intentional.