What is EC2-Other on your AWS bill (and how to tame it)
You open your AWS bill, expecting to see the usual EC2 instance charges and there it is - a line item called “EC2-Other” that’s somehow 25% of your total EC2 spend. No explanation, no breakdown, just… “Other.”
EC2-Other is one of the most confusing line items on an AWS bill and it’s often one of the biggest. We’ve seen it account for 15-30% of total EC2 spend across the accounts we work with. Once you understand what’s inside it, there are some quick wins to bring it down.
What Exactly is EC2-Other?
In AWS Cost Explorer, EC2 charges are split into several categories: EC2-Instances (compute hours for running instances), EC2-ELB (Elastic Load Balancers in some views) and EC2-Other.
EC2-Other is the catch-all for everything associated with EC2 that isn’t the instance itself - data transfer fees, storage volumes, NAT Gateways, Elastic IPs and more, all lumped together under one unhelpful name.
You can’t tell at a glance what’s driving the cost. To break it down, open Cost Explorer, filter by Service = “Amazon Elastic Compute Cloud - Compute”, then group by Usage Type. That’ll show you exactly which sub-categories are eating your budget.
The Five Categories Inside EC2-Other
Here’s what’s actually in there.
1. Data Transfer Costs
Data transfer is often the single biggest component of EC2-Other. Every time data moves between your instances, regions, or out to the internet, AWS meters it.
| Transfer Type | Cost |
|---|---|
| Same AZ (private IP) | Free |
| Cross-AZ (same region) | ~$0.01/GB each way |
| Cross-region | ~$0.02/GB |
| To internet (first 10 TB/mo) | ~$0.09/GB |
| To internet (next 40 TB/mo) | ~$0.085/GB |
| Inbound from internet | Free |
These numbers look small individually, but a chatty microservices architecture spread across availability zones racks up cross-AZ transfer costs without anyone noticing. A service doing 1TB/day of cross-AZ traffic costs roughly $600/month in data transfer alone.
One thing to keep in mind: data transfer within the same AZ using private IPs is free. If you have services that talk to each other constantly, co-locating them in the same AZ (or using AZ-aware routing) can wipe out a chunk of your EC2-Other bill.
2. EBS (Elastic Block Store) Volumes
EBS volumes are the persistent storage disks attached to your EC2 instances. You’re charged for provisioned capacity (not what you actually use), IOPS, throughput and snapshots.
| Volume Type | Cost (us-east-1) | Baseline IOPS | Notes |
|---|---|---|---|
| gp2 | $0.10/GB/month | 3 IOPS/GB (burst to 3,000) | Legacy default in many tools |
| gp3 | $0.08/GB/month | 3,000 IOPS included | 20% cheaper, better baseline |
| io1 | $0.125/GB/month + $0.065/IOPS | Up to 64,000 | High-performance workloads |
| st1 | $0.045/GB/month | N/A (throughput-optimized) | Big data, log processing |
If you’re still running gp2 volumes, switching to gp3 is almost always a free win. You get 20% lower cost, better baseline performance (3,000 IOPS included vs gp2’s burstable model) and it’s a live migration with no downtime.
Another common source of EBS waste: orphaned volumes and forgotten snapshots. When you terminate an instance, its EBS volumes don’t always get deleted. These orphaned volumes sit there costing you money indefinitely. Snapshots accumulate too - at $0.05/GB/month, a few terabytes of old snapshots can quietly cost hundreds per month.
3. NAT Gateway Charges
NAT Gateways are often the surprise cost in EC2-Other. They let instances in private subnets reach the internet (for pulling packages, calling APIs, etc.) and they charge you twice:
- Hourly charge: $0.045/hour per gateway (~$32/month)
- Data processing: $0.045 per GB processed
If you’re running a typical multi-AZ setup with 3 NAT Gateways, the baseline cost is roughly $97/month before a single byte flows through them. Add 500GB/month of data processing and you’re looking at ~$120/month - for what’s essentially a networking component.
VPC endpoints are the fix here. Gateway endpoints for S3 and DynamoDB are free to create and route traffic directly, bypassing the NAT Gateway entirely. Interface endpoints for services like ECR, CloudWatch and Secrets Manager cost $0.01/GB (plus a small hourly per-AZ fee), still much cheaper than the $0.045/GB through NAT. If your instances pull container images from ECR or ship logs to CloudWatch, VPC endpoints can cut your NAT Gateway data charges by half or more.
4. Elastic IP Addresses
Elastic IPs are static public IPv4 addresses. Since February 2024, AWS charges $0.005/hour (~$3.65/month) for all public IPv4 addresses - whether they’re attached to a running instance, idle, or unattached. This applies to Elastic IPs and auto-assigned public IPs alike.
This is a charge that catches people off guard - especially if all your compute is in public subnets!
In practice, it’s idle EIPs that nobody remembers allocating. A quick audit often turns up 5-10 of them:
# Find all unattached Elastic IPs
aws ec2 describe-addresses \
--query 'Addresses[?AssociationId==null]' \
--output table
5. Load Balancer Costs
Load balancers sometimes show up under EC2-Other depending on how you slice your Cost Explorer view. Each load balancer carries a base hourly charge plus usage fees:
- ALB (Application): ~$16.20/month base + LCU charges (connections, bandwidth, rule evaluations)
- NLB (Network): ~$16.20/month base + NLCU charges
- CLB (Classic): ~$16.20/month base + data processed
What we usually find: load balancers left behind from old deployments, or a 1:1 mapping of one ALB per service when path-based routing could consolidate them. One ALB with 10 target groups costs a fraction of 10 separate ALBs.
How to Find What’s Driving Your EC2-Other Costs
To break down your EC2-Other spend:
- Open AWS Cost Explorer
- Set the filter: Service = “Amazon Elastic Compute Cloud - Compute”
- Group by: Usage Type
- Look at the top usage types - they’ll have names like:
USE1-DataTransfer-Regional-Bytes- cross-AZ data transferUSE1-EBS:VolumeUsage.gp2- gp2 volume storageUSE1-NatGateway-Bytes- NAT Gateway data processingUSE1-ElasticIP:IdleAddress- idle Elastic IPs
The usage type names are cryptic, but the prefix tells you the region (USE1 = us-east-1, EUW1 = eu-west-1) and the rest describes the charge. Once you know the pattern, they’re straightforward to read.
For teams that need deeper granularity, the AWS Cost and Usage Report (CUR) gives you line-item detail that you can query with Athena or export to your analytics tooling.
Quick Wins to Reduce EC2-Other Costs
Roughly ordered by impact:
-
Migrate gp2 volumes to gp3 - 20% savings, better performance, zero downtime. There’s almost no reason to stay on gp2.
-
Add VPC endpoints for S3 and DynamoDB - Free to create, immediately reduces NAT Gateway data processing charges.
-
Release unused Elastic IPs - Run the audit command above, release anything you don’t need.
-
Delete orphaned EBS volumes and old snapshots - Find volumes in
availablestate (meaning detached from any instance):# Find detached EBS volumes aws ec2 describe-volumes \ --filters Name=status,Values=available \ --query 'Volumes[*].{ID:VolumeId,Size:Size,Type:VolumeType}' \ --output table -
Consolidate load balancers - Use path-based or host-based routing on ALBs instead of running one per service.
-
Review cross-AZ data transfer - If services are chatty across AZs, consider co-locating them or using AZ-aware routing.
-
Audit NAT Gateway traffic - Use VPC Flow Logs to identify what’s going through your NAT Gateways. You’ll often find services that could use VPC endpoints instead.
Keeping EC2-Other Under Control Long-Term
One-time cleanups are great, but EC2-Other costs creep back up if you’re not watching:
- Set up AWS Budgets alerts specifically for EC2-Other so you catch spikes early
- Review EC2-Other monthly as part of your regular cost review cadence
- Tag your resources so you can attribute EC2-Other charges to specific teams or projects
- Enforce standards in IaC - default to gp3 for EBS volumes, always create VPC endpoints for S3/DynamoDB and clean up EIPs in your teardown scripts
- Enable Cost Anomaly Detection to get automatic alerts when something unusual happens
Automate the Audit
You don’t have to run through all of this by hand. ZapStack scans your AWS accounts daily and flags EC2-Other waste automatically - orphaned volumes, NAT Gateway costs, idle EIPs - before they pile up into a surprise bill. Connect your account and see what you’re spending in under 5 minutes.