Object storage looks dirt cheap on the headline number — cents per gigabyte per month. Then the bill arrives and it's three times what you expected. The gap is almost always egress.
The four levers
- Capacity: what you store, per GB per month. This is the number everyone advertises.
- Egress: data leaving the provider to the internet. Often the largest line on a real bill.
- Requests: PUT/GET/LIST operations, billed per thousand or per million.
- Retrieval: for cold/archive tiers, a fee to read data back — cheap to store, pricey to fetch.
Why egress dominates
If you're serving images, video, or downloads to users, every view pulls bytes out of the bucket. A 1 TB media library that's stored once but served thousands of times costs far more in egress than in capacity. Storage pricing that ignores egress is telling you half the story.
Storing data is cheap. Serving it is the bill. Size your plan around how often the bytes leave, not just how many you keep.
Prepaid capacity vs metered
Metered pricing is honest but unpredictable — you can't forecast a bill that depends on a traffic spike. Prepaid capacity packs trade some theoretical flexibility for a number you can actually budget against: you buy the gigabytes and a generous egress allowance for a year, and you're done.
Sizing in practice
- Backups / archives: capacity matters, egress rarely does — size to your data plus growth.
- Static assets / media: egress matters most — pick a pack whose allowance covers your traffic.
- Mixed app storage: leave headroom; running out mid-term is more disruptive than a little waste.
S3-compatible packs keep your tooling unchanged — point your existing SDK at the bucket — so the only decision left is the size, not a migration.