AWS Cost Optimization
EC2 Stopped Instance Costs Explained: EBS Storage and Elastic IP Pricing Breakdown
This blog explains EC2 stopped instance costs, revealing why charges continue through EBS storage and Elastic IPs. It highlights hidden cost leaks, real-world scenarios, and practical strategies to identify, manage, and eliminate unnecessary AWS spending effectively.
EC2 Stopped Instance Costs Explained: EBS Storage and Elastic IP Pricing Breakdown

If you’ve ever paused an EC2 instance thinking, “Great, I’ve stopped the cost too”, you’re not alone. This assumption is one of the most common (and costly) misunderstandings in AWS billing. In reality, EC2 stopped instance costs don’t disappear. They just shift. While compute charges stop immediately, other underlying resources like EBS storage and Elastic IPs continue to accrue charges silently. 

This blog breaks down exactly why that happens, what you’re still paying for, and how to avoid unnecessary cloud spend. Let’s unpack it in a way that actually sticks.  

Understanding What “Stopped” Means in EC2 

When an EC2 instance is moved into a stopped state, it creates an illusion of inactivity that often leads users to assume billing has also come to a halt. In reality, AWS only stops charging for the compute capacity, like the virtual CPU and memory resources that power the instance. The infrastructure backing the instance is released, but the configuration and associated resources remain intact within your account. This means the instance still exists logically, along with all its dependencies, such as storage volumes and networking components. 

The distinction between “stopped” and “deleted” is critical here. Stopping an instance is essentially a reversible action; AWS preserves the state of your environment so that you can restart it later without losing data or configuration. However, this persistence comes with a cost. Since AWS operates on a granular, pay-as-you-go pricing model, any provisioned resource that remains allocated, even if idle, continues to incur charges. Understanding this subtle but important difference is the first step toward avoiding unnecessary cloud expenses. 

The Hidden Cost #1: EBS Storage Charges Continue 

Why EBS Still Costs Money 

Amazon Elastic Block Store (EBS) serves as the persistent storage layer for EC2 instances, and its behavior is independent of the instance’s running state. When you stop an instance, AWS does not automatically delete its associated EBS volumes because doing so would risk permanent data loss. These volumes continue to exist exactly as they were, holding your operating system, application data, and configurations. 

From a billing perspective, AWS charges for EBS based on the amount of storage provisioned rather than actual usage. This means that even if your instance is completely inactive, the allocated storage space is still being reserved for you and is therefore billable. The logic is similar to renting a storage unit. You pay for the space regardless of whether you access it daily or leave it untouched for months. This design ensures data durability but also introduces a persistent cost component that many users overlook. 

How the Billing Works 

EBS pricing is structured around several dimensions, including the total gigabytes provisioned, the type of volume selected, and any additional performance configurations such as provisioned IOPS or throughput. Modern volume types like gp3 allow you to independently configure storage size and performance, which provides flexibility but can also increase costs if not managed carefully. 

What makes this particularly tricky is that billing does not scale down automatically when usage drops. If you provision a 200 GB volume but only use a fraction of it, you are still billed for the full capacity. Additionally, performance features such as high IOPS or throughput continue to incur charges even when the instance is stopped. Over time, especially in environments where instances are frequently paused but not cleaned up, these costs can accumulate significantly without drawing attention. 

The Real-World Impact 

In real-world cloud environments, especially in development and testing scenarios, it is common for teams to stop instances during off-hours to save on compute costs. However, the associated EBS volumes are often left untouched. As projects evolve, these volumes can become orphaned, no longer attached to any active workload but still fully billable. 

This leads to a gradual buildup of unused storage resources, often referred to as “cost leakage.” Organizations may end up paying for dozens or even hundreds of gigabytes of unused storage simply because there is no systematic process for identifying and removing redundant volumes. Over time, this silent accumulation can represent a substantial portion of the cloud bill, particularly in large-scale or multi-team environments. 

The Hidden Cost #2: Elastic IP Charges (Even When Idle) 

The Big Change: Public IPv4 Is No Longer Free 

One of the most impactful changes in AWS pricing in recent years has been the introduction of charges for public IPv4 addresses. Previously, Elastic IPs were free when attached to running instances, but AWS has shifted its pricing model to reflect the scarcity and rising cost of IPv4 addresses globally. Today, every public IPv4 address incurs a charge, regardless of whether it is actively in use. 

This change has significant implications for cost management. Many users are unaware that simply allocating an Elastic IP, even if it is not attached to any resource, results in ongoing charges. This makes Elastic IPs a subtle but important contributor to EC2 stopped instance costs, especially in environments where resources are frequently provisioned and decommissioned. 

What Happens When You Stop an Instance? 

When an EC2 instance is stopped, its default public IP address is released back into AWS’s pool. However, Elastic IPs behave differently. If you have explicitly associated an Elastic IP with your instance, it remains allocated to your account even after the instance is stopped. This ensures that you can retain the same IP address when you restart the instance, which is useful for applications that depend on static IPs. 

The downside is that this allocation comes at a cost. Since the Elastic IP is still reserved for your use, AWS continues to charge for it. This means that even though your compute resources are inactive, your networking resources are still generating expenses. In environments with multiple stopped instances, these charges can quickly add up, especially if Elastic IPs are not actively monitored or released when no longer needed. 

Why AWS Charges for This?

The decision to charge for Elastic IPs is rooted in the global shortage of IPv4 addresses. AWS, like other cloud providers, must manage a finite pool of these addresses while meeting growing demand. By introducing pricing for public IPv4 usage, AWS incentivizes customers to use these resources more efficiently and to adopt alternatives such as IPv6 or private networking architectures. 

From a broader perspective, this pricing model encourages better resource hygiene. It pushes organizations to evaluate whether they truly need static public IPs or whether they can rely on more scalable and cost-effective solutions like load balancers or DNS-based routing. While this shift may initially seem like an added cost, it ultimately promotes more sustainable and optimized cloud usage. 

The Hidden Trap 

The real challenge with Elastic IP pricing lies in its invisibility. Unlike compute costs, which are directly tied to active workloads, Elastic IP charges can persist quietly in the background. Teams may allocate IPs for temporary use and forget to release them, especially in dynamic environments where resources are frequently spun up and down. 

This creates a scenario where multiple idle IP addresses remain allocated across accounts, each contributing a small but continuous cost. Over time, these seemingly minor charges can accumulate into a noticeable expense. Without proper monitoring and governance, Elastic IPs can become one of the most overlooked sources of cloud cost inefficiency. 

Combined Cost Scenario: A Simple Breakdown 

When you consider EBS storage and Elastic IP charges together, the true impact of EC2 stopped instance costs becomes much clearer. A single stopped instance might not seem expensive at first glance, but the combination of persistent storage and networking costs creates a baseline expense that continues indefinitely. 

For example, an instance with a moderately sized EBS volume and an associated Elastic IP will continue to generate charges even when it is not performing any useful work. Multiply this scenario across multiple instances, environments, or teams, and the cumulative cost can become significant. This is particularly common in organizations with decentralized cloud usage, where individual teams manage their own resources without centralized oversight. 

Why AWS Doesn’t Automatically Remove These Resources 

AWS’s decision not to automatically delete resources when an instance is stopped is driven by a need to balance cost efficiency with data safety and operational flexibility. Automatically removing EBS volumes or releasing Elastic IPs could lead to unintended data loss or service disruptions, especially if users expect to restart their instances later. 

By preserving these resources, AWS ensures that users can resume their workloads seamlessly without needing to reconfigure storage or networking components. However, this design also places the responsibility of resource management on the user. It requires a proactive approach to identifying and cleaning up unused resources, rather than relying on the platform to do so automatically. 

The Difference Between Stop vs Terminate (Critical for Cost) 

The distinction between stopping and terminating an EC2 instance is one of the most important concepts in AWS cost management. Stopping an instance is a temporary action that halts compute charges but preserves all associated resources. Terminating an instance, on the other hand, is a permanent action that removes the instance and, depending on configuration, may also delete its associated storage. 

However, even termination is not a complete guarantee of cost elimination. If EBS volumes are configured to persist after termination, they will continue to incur charges. Similarly, Elastic IPs must be explicitly released to stop billing. This means that achieving true cost optimization requires not just terminating instances but also ensuring that all associated resources are properly cleaned up. 

Advanced Cost Leak Scenarios Most Teams Miss 

In complex cloud environments, cost leakage often occurs in less obvious ways. Beyond EBS volumes and Elastic IPs, resources such as snapshots, detached volumes, and artifacts from automated scaling processes can contribute to ongoing expenses. These resources are often created as part of normal operations, but are not always tracked or removed when they are no longer needed. 

For example, snapshots used for backups may accumulate over time, consuming storage and increasing costs. Detached volumes may remain in the account after instances are terminated, continuing to incur charges despite being unused. Similarly, auto-scaling environments may leave behind residual resources if not properly configured. These scenarios highlight the importance of comprehensive cost monitoring and governance in cloud environments. 

How to Optimize EC2 Stopped Instance Costs?

Optimizing EC2 stopped instance costs requires a combination of technical strategies and organizational practices. Automation plays a key role in identifying and cleaning up unused resources, while tagging and monitoring provide the visibility needed to make informed decisions. By implementing regular audits and leveraging AWS-native tools, organizations can detect inefficiencies and take corrective action before costs escalate. 

At the same time, adopting a more intentional approach to resource provisioning can help prevent unnecessary expenses from occurring in the first place. This includes evaluating the need for Elastic IPs, right-sizing storage volumes, and using snapshots as a cost-effective alternative to retaining full volumes. Ultimately, effective cost optimization is not a one-time effort but an ongoing process that requires continuous attention and refinement. 

 

See, Understand, Optimize -
All in One Place

Atler Pilot decodes your cloud spend story by bringing monitoring, automation, and intelligent insights together for faster and better cloud operations.