Cloud Egress Costs Explained — Why Downloading Your Own Data Is So Expensive

What Egress Costs Are and Why They Exist

Cloud egress costs have gotten complicated with all the vague pricing noise flying around. The one-sentence version: you pay when data leaves your cloud provider’s network. But that sentence didn’t stop me from nearly falling out of my chair the first time I saw my AWS bill.

Here’s the part nobody warns you about clearly enough. Uploading data to AWS, Azure, Google Cloud, or OCI? Free. Your application running inside their network, chewing through that data? Cheap—or at least predictable. Downloading your own data back out? That costs real money. Per gigabyte. Every single month.

As someone who spent three years as a cloud architect, I learned everything there is to know about egress costs the hard way. We’d optimized compute. We’d optimized storage. We never once sat down and asked: “What happens when we need to move this data somewhere else?” Don’t make my mistake.

But what is an egress cost, exactly? In essence, it’s a fee for outbound data leaving the cloud provider’s network. But it’s much more than that—it’s also the mechanism that makes switching providers genuinely painful. Cloud providers absorb enormous costs maintaining global network infrastructure. Ocean cables. ISP peering agreements. Redundancy layers. When you pull data out, you’re consuming that bandwidth. It costs them real money, and they pass it along.

The lock-in angle is real too. Once your data lives in AWS, moving it to Azure gets expensive fast. They price egress high because they can—leaving hurts, and they know it.

Downloads to your local machine. Cross-provider transfers. Region-to-region replication. API calls returning fat datasets. All of it counts. All of it has a price tag attached.

Egress Pricing Comparison — AWS vs Azure vs GCP vs OCI

Probably should have opened with this section, honestly. The numbers matter, and they’re not even close to equal.

AWS charges $0.09 per GB for egress to the internet after the first 1 GB free each month—standard rate out of US regions. Seems small. It isn’t.

A mid-sized SaaS company backing up 2 TB of production data monthly is looking at 2,048 GB. Subtract the free 1 GB. Multiply 2,047 by $0.09. That’s $184.23 per month—just for one backup job. Run five backup jobs across different services and you’re clearing $900 monthly without blinking. Annualized: $10,800. For backups.

Azure charges $0.087 per GB outbound—slightly cheaper than AWS but tracking closely enough that the math is nearly identical. Google Cloud lands around $0.12 per GB depending on destination, which is actually a bit higher than both. All three are operating from the same basic playbook here.

Then there’s Oracle Cloud Infrastructure.

OCI includes 10 TB of free egress every month. Not “free for the first 12 months.” Not “free for non-commercial accounts.” Actual free egress baked into standard pricing, available to anyone. After 10 TB, they charge $0.0085 per GB—roughly one-tenth of AWS pricing.

That same 2 TB backup scenario on OCI costs nothing. Ten backup jobs cost nothing. Scale it up to 100 TB monthly and you’d pay roughly $76,500 on AWS. On OCI, the first 10 TB is free and the remaining 90 TB runs about $765. That’s not a rounding error—that’s a completely different financial reality.

Here’s a comparison table with monthly costs for common scenarios:

Data Volume AWS Azure GCP OCI
5 GB/month $0.36 $0.35 $0.48 $0
500 GB/month $44.91 $43.50 $59.88 $0
2 TB/month $184.23 $178.60 $245.76 $0
25 TB/month $2,252.87 $2,184.00 $2,995.20 $127.75
100 TB/month $8,999.91 $8,703.60 $11,999.20 $765.75

These numbers assume US region egress to the internet. Egress between regions within the same provider costs extra on top of all of this. Cross-provider transfers cost even more. The bill stacks fast.

Five Ways to Reduce Your Egress Bill

Use a Content Delivery Network strategically

CloudFront, Azure CDN, and Cloud CDN cache your data at edge locations around the world. When a user requests something, they pull it from the nearest edge server—not your origin bucket sitting in us-east-1. Egress flows from your storage to the edge once, then cached requests cost nothing additional.

This only works for cacheable content—static assets, media files, config documents. It won’t touch unique user records or live streams. But for anything that gets requested repeatedly, CDN might be the best option, as egress reduction requires serving the same bytes to many people. That is because a single origin transfer gets amortized across thousands of downstream requests.

CloudFront charges around $0.085 per GB for origin shield and edge requests in the US, with regional variation. You’re still paying for that first egress hit to the edge, but one terabyte served through CloudFront consistently undercuts one terabyte downloaded directly from origin.

Implement VPC peering and private endpoints

Data moving within a provider’s private network doesn’t trigger egress charges. AWS PrivateLink, Azure Private Link, Google Cloud’s Private Service Connection—all of them work this way. Traffic stays internal. No egress bill.

Running workloads across multiple AWS accounts? Set up VPC peering. Same principle applies to Azure virtual networks and Google’s Shared VPC setup. You’re essentially building private tunnels between your environments—some infrastructure work upfront, but the ongoing savings are substantial.

First, you should map out which of your services actually talk to each other across network boundaries—at least if you haven’t done a proper architecture audit recently. The answer is usually surprising.

Compress data before transfer

Brotli compression cuts JSON payloads by 60-80%. Gzip handles it less aggressively—30-40% reduction for text-heavy workloads—but it’s universally supported and still meaningful. You’re paying per gigabyte. Smaller files, smaller bills. The math is direct.

I ran into this during a customer database migration. We exported 500 GB of uncompressed CSV files—old habit, honestly—and at standard AWS rates that would have run $45. After Brotli compression the files landed at 120 GB. Saved $32 on a single transfer. Not life-changing, until you’re doing it monthly across a dozen datasets.

The CPU overhead for compression is real but negligible compared to egress costs. Modern hardware compresses fast enough that latency barely registers.

Choose your region intentionally

Egress rates are region-specific—US regions are cheaper than EU, EU is cheaper than Asia-Pacific. Storing data near your actual users matters for billing, not just latency.

If your user base sits primarily in Europe, eu-west-1 or equivalent is the right home for that data. Egress happens from a cheaper region and travels shorter distances. Moving backup data from ap-southeast-1 to us-east-1 costs money. Keeping it within the same region or replicating to a nearby one costs less. That’s what makes region selection so underrated among infrastructure teams—the billing benefit compounds quietly over months.

Cache aggressively at the application layer

Redis, Memcached, DynamoDB DAX—pick your caching layer and tune it. If 80% of requests hit the cache instead of hitting S3 directly, your egress drops by roughly 80%. The math is that clean.

This does require application-level changes. You’re inserting a caching layer between users and storage, which means cache invalidation logic, TTL decisions, memory sizing. But at scale the ROI is obvious—a production database fielding 10 million daily requests cuts egress by 8 million requests with a well-tuned cache sitting in front of it.

OCI and Cloudflare — The Egress-Friendly Alternatives

OCI’s 10 TB monthly free egress is genuinely different from what the other providers offer. Not a trial. Not a promotional tier. Actual free egress included in standard pricing, no asterisks required.

For workloads staying under 10 TB monthly, OCI egress costs nothing. Workloads hitting 50 TB? About $340 on OCI. The same workload on AWS runs roughly $4,400. That difference—$4,060 per month—funds real engineering headcount. That’s what makes OCI endearing to us infrastructure people who actually watch the billing dashboard.

The honest caveat: OCI doesn’t dominate compute or storage pricing the way AWS does. Instance pricing is competitive but not dramatically cheaper. The egress story is the standout. If your cost profile is dominated by data movement—backup operations, analytics pipelines, data warehousing at scale—OCI wins the comparison convincingly.

Cloudflare R2 takes an entirely different approach. Zero egress fees. You pay $15 per month per bucket, then $0.015 per GB stored and $0.15 per million API requests. No egress charge at any volume. Cloudflare built R2 specifically to undercut the major providers on this exact pain point—you store files, you serve them globally, and the outbound traffic just doesn’t appear on your bill.

Marcus Chen

Marcus Chen

Author & Expert

Robert Chen specializes in military network security and identity management. He writes about PKI certificates, CAC reader troubleshooting, and DoD enterprise tools based on hands-on experience supporting military IT infrastructure.

73 Articles
View All Posts

Stay in the loop

Get the latest multicloud hosting updates delivered to your inbox.