AWS S3 Cost: Why Egress Fees Eat Your Storage Budget
AWS S3 storage is cheap — egress is what wrecks the bill. A real €268k/year breakdown, plus the S3-compatible alternatives that need zero code changes.
A German B2B SaaS team came to us last quarter — an analytics platform, around 40 people — after their AWS bill quietly crossed €22,000 a month. Nothing had changed on their side. They hadn't onboarded a wave of new customers, hadn't added a new product, hadn't even stored much more data. They were sitting on about 15 TB. The bill had just... grown.
When we broke it down with them, the storage they were actually worried about — the 15 TB — cost €345 a month. The other €22,000 was almost entirely one line item: egress.
That's the trap nobody warns you about when you pick S3. Storage on AWS is genuinely cheap. Moving your own data is not.
Where the money actually goes
Here's the breakdown for that 15 TB workload, transferring 200 TB per month (typical once you factor in restores, cross-region replication, CDN origin pulls and customer data exports):
Storage: 15 TB × €0.023 /GB-month = €345
Egress: 200 TB × €0.09 /GB = €18,000
API requests: 10M × €0.0004 = €4,000
---
MONTHLY: €22,345
YEARLY: €268,140
A quick honesty note, because a sharp engineer will ask: AWS egress is tiered. The €0.09/GB above is the first-tier rate; past 150 TB you pay closer to €0.05/GB, so the true blended bill at 200 TB is somewhat lower than a flat calculation suggests. But "somewhat lower" still lands well into six figures a year — and almost none of it is storage. You are not paying to keep your data. You are paying to touch it.
By year three, a bill like this compounds past €370,000. No new workloads. AWS simply found more occasions to meter you.

Why egress is the real trap (and it isn't greed)
It's tempting to frame this as AWS being greedy. It isn't, really. The problem is more subtle and more dangerous: the cost is unpredictable.
You can forecast storage. 15 TB is 15 TB; you know what it costs. You can roughly forecast API requests. But egress scales with behaviour — how often your application reads, restores, replicates, serves, or exports data. And behaviour grows in ways your finance team never modelled. A new analytics feature that re-reads historical data. A compliance requirement that adds cross-region replication. A customer who exports their dataset every night. Each one is reasonable on its own. Together, they turn a flat storage line into a variable cost that creeps up every quarter.
The second problem is structural. Egress is the meter that makes leaving expensive. The more data you store, the more it costs to move it out — which is exactly the moment you'd want to migrate. The pricing model quietly raises the cost of the exit the longer you stay.
The part that should bother you more than the bill
Set the money aside for a second. The deeper issue is that your data lives on US infrastructure, under US jurisdiction, and you don't control the building, the region, or the way out.
You tell your customers "we're GDPR-compliant" because AWS tells you that. But you don't run the data center. You don't choose the hardware. You don't own the exit path. You're renting compliance instead of holding it — and for a European company serving European customers, that's a strategic dependency, not just a line on an invoice.
None of these problems is fatal on its own. Together, they compound — the same way the bill does.
The fix doesn't require rewriting anything
Here's the part most teams don't realise: the thing that's expensive about S3 is the bill, not the API. And the API is a standard. Plenty of storage systems speak it natively, which means you can move off AWS without rewriting a single line of application code. Your s3:// calls keep working; only the endpoint and the invoice change.
There are two sensible paths, depending on your scale:
- For S3-style workloads under ~1 PB — backups, logs, object storage, the classic "we just need a bucket" use case — managed RustFS is the lightweight option. It's the open-source successor to MinIO, S3-compatible, and a drop-in binary replacement. The same 15 TB workload that costs €268,000/year on S3 runs about €5,500/year managed, with no egress metering at all.
- For enterprise-grade storage at petabyte scale — block, file and object on one platform — managed Ceph is the production-proven choice. It's been running in large deployments for over a decade and gives you the same S3 API with far more headroom.
Both run in our Frankfurt data center, both speak S3, and both end the egress meter — you pay for capacity and operations, not for the privilege of reading your own data.
And ownership here is real, not rhetorical: your data stays portable, you always own the exit — and if you want maximum control, you can even bring your own hardware into our data center.
If you want the longer version of the RustFS argument specifically, we wrote it up here: RustFS vs S3 in the EU.
When staying on S3 is genuinely the right call
We're an infrastructure operator, not an ideology. There are real cases where S3 is the correct answer and migrating would be a waste of your time:
- You store less than ~5 TB and move little of it. The egress trap only bites at scale; below it, the difference is noise.
- You're deeply wired into the AWS ecosystem — Lambda, Glue, Athena, SageMaker — and the integration value outweighs the storage bill.
- You genuinely value "set and forget" over cost, and the bill isn't large enough to justify any operational change.
- Your compliance requirements don't demand an EU data location.
If that's you, stay. The math only flips when egress becomes a meaningful share of your bill — which, for data-heavy teams, it usually does.
Frequently Asked Questions
How much does AWS S3 cost per GB? S3 Standard storage is roughly €0.023/GB per month in the Frankfurt region. The cost that surprises people is data transfer out (egress), which starts around €0.09/GB and is tiered down at volume. Storage is cheap; moving data is where the bill grows.
How much does it cost to store 1 TB on S3? Storage alone for 1 TB is about €23/month. But that number is misleading on its own — for most workloads the larger cost is egress and API requests, which depend on how often you read and move the data, not just how much you keep.
What is S3 egress and why is it so expensive? Egress is data transferred out of AWS to the internet. It's expensive because it scales with your application's behaviour (reads, restores, replication, exports) rather than with how much you store — so it's hard to forecast and tends to creep up over time.
How do I reduce S3 egress costs? Short-term: cache aggressively, keep transfers in-region, and audit what's actually pulling data out. Structurally: move to S3-compatible storage that doesn't meter egress at all. Because the S3 API is a standard, you can switch the endpoint without rewriting your application.
Is there a cheaper S3-compatible alternative? Yes. Managed RustFS for sub-petabyte workloads and managed Ceph for enterprise scale both speak the S3 API and price on capacity, not on data transfer. For a 15 TB workload, that's roughly €5,500/year versus €268,000 on S3.
Tired of paying to read your own data?
Talk to an engineer — 30 minutes, no sales pitch. Send us your AWS bill and we'll run the real numbers for your workload, and tell you honestly whether moving is worth it.
Have questions about this topic?
Our experts are happy to advise you on your individual strategy.
Schedule a consultation