Unassociated Elastic IPs
AWS charges for the Elastic IP you reserved and are not using — and for the one attached to a stopped instance.
What this problem is
An Elastic IP is a public IPv4 address reserved for your account. Its billing logic runs opposite to intuition: for years the address was free while associated with a running instance, and charged while idle. The point is to discourage hoarding IPv4 addresses, which are scarce.
That produces two situations that show up on the invoice. The first is an address allocated and never associated with anything — left over from a test, a migration, a resource that was removed. The second is less obvious: an address associated with an instance that is stopped. The association exists, but the instance is not running, and the address is billed all the same.
Taken one at a time this is the smallest line in almost any report. But Elastic IPs are cheap to allocate and easy to forget, so they tend to appear by the dozen — and since 2024, with every public IPv4 address carrying a charge, the total has grown.
How we detect it
We list the account's addresses with DescribeAddresses, which reports whether each is associated and with which instance. We cross that with instance state from DescribeInstances to isolate addresses pinned to stopped instances.
- Unattached Elastic IPs
- Elastic IPs bound to stopped instances
What it costs
An idle Elastic IP runs about $0.005 per hour, roughly $3.60 per address per month (us-east-1). Since February 2024 AWS charges for every public IPv4 address, including those in use.
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