AWS EC2 Costs Explained: What You're Actually Billed For

10 min read

Amnic

Amnic

Breaking Bill

AWS

Breaking Bill: EC2 Costs Beyond Instance Pricing

Table of Contents

No headings found on page

Your AWS EC2 cost is not just the instance price. A running instance pulls charges from five separate areas: compute hours, EBS storage, data transfer, networking and IP add-ons and monitoring. 

For many workloads, the instance itself is only 50 to 70% of the total and ancillary charges add another 40 to 50% on top of compute stopping an instance does not make it free, because storage, snapshots and idle IPs keep billing.

Here is where an EC2 bill comes from at a glance:

Cost area

What it covers

Where it shows in Cost Explorer

Compute

Instance-hours

EC2-Instances

Storage

EBS volumes, snapshots

EC2-EBS

Data transfer

Egress, cross-AZ, inter-region

EC2-Other

Networking

NAT, Elastic IP, load balancers

EC2-Other

Monitoring

CloudWatch, logs

CloudWatch

This guide breaks down each line. For how to choose between On-Demand, Savings Plans, Reserved and Spot, see our dedicated AWS EC2 pricing guide. This page is about what lands on the bill once you are running.

How EC2 charges actually work

AWS splits EC2 spend across three Cost Explorer line items (EC2-Instances, EC2-EBS and EC2-Other) and the instance line is usually only about half of the total.

The single biggest reason EC2 bills surprise people is that the cost is spread across line items that do not sit together in the console.

The three line items: EC2-Instances, EC2-EBS and EC2-Other

  • EC2-Instances: the compute hours for your running instances.

  • EC2-EBS: the block storage volumes and their snapshots.

  • EC2-Other: the catch-all that bundles data transfer, NAT gateways, Elastic IPs and provisioned IOPS. It is the line item people understand least.

Why the instance price is only part of the bill

For a transfer-heavy or storage-heavy workload, compute can fall well below half the total. The rest hides in EC2-Other and EC2-EBS, which is why reading only the instance rate gives a number that is often 40 to 50% too low.

Per-second vs per-hour billing

In short: Linux instances bill per second with a 60 second minimum; Windows, RHEL and SLES bill per hour and round up to the next full hour.

That rounding matters at scale. A fleet of short-lived Windows jobs that each run 5 minutes is billed a full hour each, while the same jobs on Linux are billed 5 minutes each (go-cloud EC2 instance costs).

Compute charges: the part you expect

In short: You pay for every hour (or second) an instance is in the running state, regardless of how much CPU it actually uses.

Compute is the one charge most teams plan for. Two things to know:

  • You are billed for the running state, not for utilization. An instance at 5% CPU costs the same as one at 95%.

  • Which pricing model you commit to (On-Demand, Savings Plans, Reserved, or Spot) sets the per-hour rate. That decision is covered in the EC2 pricing guide; this page assumes you are already running.

Storage costs: EBS, snapshots and forgotten volumes

EBS volumes and snapshots bill independently of compute, so a stopped instance with a 200GB volume still costs about $16 per month doing nothing.

Storage is the most common hidden cost because volumes outlive the instances that created them.

EBS volume types and rates

Volume type

Use

Approx rate

gp3 (SSD)

General purpose

$0.08 per GB-month, with 3,000 IOPS and 125 MB/s included

io2 (SSD)

High-IOPS databases

Higher per-GB, plus provisioned IOPS

st1 (HDD)

Throughput workloads

Lower per-GB

sc1 (HDD)

Cold archive

Lowest per-GB

Rates from Cloud Burn's EBS pricing analysis. A full storage walkthrough lives in our guide to AWS storage costs.

Provisioned IOPS and throughput

On io1, io2 and gp3 volumes, IOPS and throughput above the free baseline are billed separately from capacity. A database volume can cost more in provisioned IOPS than in storage.

EBS snapshots

Snapshots cost about $0.05 per GB-month. They are incremental, but they accumulate: a daily backup policy with no expiry quietly grows the EC2-EBS line every month.

Orphaned and idle volumes

Real example: Launch an instance with a 200GB gp3 root volume, stop it after an hour of testing and forget it for a month. You pay roughly $0.08 for compute and about $16 for the volume sitting idle. Multiply that across a team and orphaned volumes become a real line item. Find them with wasted-resource detection.

Data transfer: the bill nobody predicts

In short: Moving data out of EC2 is charged per GB and even traffic between Availability Zones in the same region is not free.

Data transfer is the classic source of a bill that doubles without a single new instance.

Transfer type

Approx rate

Outbound to internet

$0.09 to $0.15 per GB, tiered down at volume

Cross-AZ (same region)

$0.01 per GB, each direction

Inter-region

~$0.02 per GB

NAT Gateway

$0.045 per hour + $0.045 per GB processed

Public IPv4 address

$0.005 per hour, per address

Rates from DoiT's EC2 FinOps guide.

Cross-AZ traffic adds up fast

Real example: A multi-AZ app moving 1 TB per day between zones pays $0.01 per GB each way. That is roughly $20 per day, or about $600 per month, purely for traffic inside one region. See the mechanics in ingress vs egress.

NAT gateways are double-charged

A NAT gateway bills both an hourly rate and a per-GB processing rate. A gateway running all month with 1 TB through it costs about $32.85 in hours plus $46 in processing. Our data transfer cost guide covers how to cut this.

NAT gateway cost:
A NAT gateway bills both an hourly rate and a per-GB processing rate. A gateway running all month with 1 TB through it costs about $32.85 in hours plus $46 in processing, based on the $0.045 per hour and $0.045 per GB rates that apply in many AWS regions. Exact rates vary by region, so check your own. Our data transfer cost guide covers how to cut this.

Networking and IP add-ons

Elastic IPs, load balancers and VPC endpoints bill on their own meters, separate from the instances they serve.

  • Elastic IP: an idle or unattached Elastic IP costs $0.005 per hour, about $3.65 per month for an address doing nothing.

  • Load balancers: ALBs and NLBs charge an hourly rate plus capacity units, billed under their own line item, not EC2.

  • VPC endpoints and PrivateLink: charged per hour and per GB of data processed.

Monitoring, management and licensing

Observability and OS licensing are real EC2 costs that sit outside the instance rate.

  • CloudWatch: detailed monitoring, custom metrics and log ingestion are billed beyond the free basic metrics. High-cardinality custom metrics are a common surprise. See what CloudWatch is.

  • OS licensing: Windows, RHEL and SLES instances carry a licensing premium over Linux. Bring Your Own License can remove it for eligible software.

  • Marketplace AMIs: some AMIs add a per-hour software charge on top of the instance rate.

Idle, stopped and forgotten resources

Stopping an instance halts compute charges only. EBS volumes, snapshots and Elastic IPs keep billing until you delete them.

This is the most-asked EC2 billing question and the answer surprises people. On AWS re:Post, the recurring thread "I'm being charged with no active EC2 instances" is almost always explained by storage and IPs left behind.

What keeps billing when you stop an instance

Resource

Charge after stop?

Compute (instance-hours)

No

Attached EBS volumes

Yes

EBS snapshots

Yes

Allocated Elastic IP

Yes (if unattached)

Zombie resources to sweep

  • Unattached EBS volumes left after instance termination

  • Snapshots with no retention policy

  • Elastic IPs not attached to a running instance

  • Over-provisioned instances running at low utilization

Pairing cleanup with the right AWS cost optimization tools turns this from a quarterly scramble into a standing process and helps you mitigate cloud cost surges before they hit the bill.

A real m5.large bill, itemized

In short: For a transfer-heavy m5.large workload, the instance is only about 37% of the monthly bill. The rest is storage, transfer and networking.

This is a realistic monthly breakdown for one always-on m5.large in us-east-1 with moderate traffic (cost basis from CostGoat's EC2 calculator):

Line item

Monthly cost

Compute (m5.large, 730 hrs On-Demand)

~$70.08

EBS root volume (gp3, 100 GB)

~$8.00

EBS snapshots (100 GB)

~$5.00

Data egress (500 GB to internet)

~$45.00

Cross-AZ transfer (200 GB each way)

~$4.00

NAT Gateway (730 hrs + 300 GB)

~$46.35

Elastic IP and public IPv4

~$7.30

CloudWatch monitoring and logs

~$10.00

Total

~$195.73

Compute is $70 of a roughly $196 bill. The lesson teams repeat: optimizing only the instance rate leaves most of the bill untouched.

The same math for any EC2 server

In short: The cheaper the server, the more storage, transfer and networking dominate the bill. On a GPU server, compute swamps everything else.

The line-item method above applies to every EC2 server; only the compute share changes. Holding the same storage, transfer and networking profile (~$126 per month) constant, here is the all-in monthly cost for three common servers. The per-hour base rates behind the compute column are covered in the pricing guide:

EC2 server (us-east-1)

Compute/month

Add-ons

All-in monthly

Compute share

t3.medium

~$30

~$126

~$156

~19%

m5.large

~$70

~$126

~$196

~36%

g4dn.xlarge (GPU)

~$384

~$126

~$510

~75%

The takeaway shifts with the server. On a small t3.medium, the add-ons are 80% of the bill, so cleanup and data-transfer cuts matter most. On a g4dn.xlarge GPU server, compute is 75% of the bill, so the lever moves to commitment discounts on the instance itself.

Regional and zonal cost variance

The same instance costs different amounts in different regions and traffic between zones is its own charge.

  • Region choice: an m5.large in São Paulo can cost noticeably more than the same instance in N. Virginia. Picking a region for latency without checking price is a quiet markup.

  • Multi-AZ trap: spreading an app across Availability Zones improves resilience but turns internal traffic into billable cross-AZ transfer.

How to bring your EC2 costs down

Most EC2 savings come from visibility, rightsizing, smarter networking and clearing idle resources, in that order.

Get full-stack visibility and allocation

You cannot cut what you cannot see. Tag every resource so costs map to teams and services; start with AWS tagging.

Rightsize and schedule

  • Downsize instances running consistently below 40% CPU.

  • Stop non-production instances overnight and on weekends.

Cut cross-AZ and egress traffic

  • Keep chatty services in the same AZ.

  • Use VPC endpoints to avoid NAT for AWS-bound traffic.

Sweep idle and forgotten resources

  • Delete unattached volumes and aged snapshots.

  • Release Elastic IPs you are not using.

  • Surface the rest with hidden cloud cost analysis.

How Amnic untangles your EC2 bill

In short: Amnic maps every EC2 line item, including EC2-Other, to the team that owns it, then flags waste and anomalies automatically.

Amnic gives engineering and FinOps teams a unified view across compute, storage, transfer and networking, so EC2-Other stops being a black box. Its cost analyzer breaks the bill down by resource and team, anomaly detection alerts on sudden spikes before month-end and rightsizing recommendations flag the over-provisioned instances and orphaned volumes draining budget. 

One Amnic customer, LambdaTest, used this approach to achieve a 30% reduction in NAT and CloudWatch costs.

Your EC2 cost-cleanup checklist

  • Read all three line items: EC2-Instances, EC2-EBS and EC2-Other.

  • Delete unattached EBS volumes.

  • Set retention on EBS snapshots.

  • Release idle Elastic IPs.

  • Audit cross-AZ and egress traffic.

  • Replace NAT with VPC endpoints where possible.

  • Rightsize instances under 40% CPU.

  • Schedule non-production shutdowns.

  • Tag every resource for cost allocation.

FAQ

Why is my EC2 bill higher than expected? 

Because the instance rate is only part of it. EBS storage, snapshots, data transfer, NAT gateways and Elastic IPs add 40 to 50% on top of compute, mostly under the EC2-Other line item.

What is EC2-Other in my AWS bill? 

EC2-Other is the Cost Explorer line item that bundles data transfer, NAT gateway charges, Elastic IPs and provisioned IOPS. It is separate from your instance and storage lines.

Do stopped EC2 instances cost money? 

Yes. Stopping halts compute charges but attached EBS volumes, snapshots and unattached Elastic IPs keep billing until you delete them.

What is the minimum EC2 billing time? 

Linux instances bill per second with a 60-second minimum. Windows, RHEL and SLES bill per hour, rounded up to the next full hour.

How much does EC2 data transfer cost? 

Outbound to the internet runs $0.09 to $0.15 per GB, cross-AZ traffic is $0.01 per GB each direction and inter-region transfer is about $0.02 per GB.

How much does it cost to run a t3.medium per month? 

A t3.medium runs about $30 per month in compute, but the all-in cost with storage, transfer and monitoring is closer to $150 to $160, since add-ons dominate the bill on small servers.

Does deleting an instance stop all charges? 

No. Terminating an instance can leave behind EBS volumes, snapshots and Elastic IPs that continue to bill until you remove them.

FinOps OS powered by context-aware AI agents.

Start with a 30-day no-cost trial.

Read-only.

No credit card.

No commitment.

Want to assess how your FinOps journey can scale?

Benchmark maturity, close governance gaps, and drive ROI in under 20 minutes

Can your engineering context keep up with the speed of AI?

Start with a 14-day Runtime Accountability Audit. Read-only access. No commitment.

No credit card · No migration · No agents

STAY AHEAD

Can your engineering context keep up with the speed of AI?

Start with a 14-day Runtime Accountability Audit. Read-only access. No commitment.

No credit card · No migration · No agents

STAY AHEAD

Can your engineering context keep up with the speed of AI?

Start with a 14-day Runtime Accountability Audit. Read-only access. No commitment.

No credit card · No migration · No agents

STAY AHEAD