Cut Egress Costs by Serving From Zero-Egress Object Storage
A migration tutorial for moving data to zero-egress object storage to eliminate per gigabyte egress fees, with planning and cutover steps.
Egress fees are the line item that quietly inflates many cloud bills. Storing data is cheap. Serving it out, especially to the public internet, is where traditional object stores charge per gigabyte, and a popular dataset or media library can run up real money. Zero-egress object storage flips this model: you pay for storage and operations, but reads out are free or far cheaper. This tutorial covers when migrating to zero-egress storage pays off and how to do the move safely.
Where egress costs come from
Egress is the cost of data leaving a provider's network. Reading an object back to the same region is usually cheap or free, but serving it to the public internet, to another region, or to another cloud typically incurs a per gigabyte charge. For a site that serves model weights, datasets, images, or video at scale, these charges can dwarf the cost of storing the data in the first place.
Zero-egress storage providers absorb or waive that transfer fee. The deal is that storage and request operations are priced normally, but the bytes you serve out do not carry the usual egress tax. For read heavy workloads, that single difference can cut a storage bill substantially.
Decide whether migration is worth it
Migration has a cost in effort and risk, so confirm the savings justify it. Pull your last few bills and look at the ratio of egress charges to storage charges.
| Egress as share of bill | Migration verdict |
|---|---|
| Small, storage dominates | Probably not worth the effort |
| Roughly equal to storage | Worth modeling carefully |
| Large, egress dominates | Strong candidate to migrate |
Also weigh non cost factors. Check that the zero-egress provider offers the API compatibility, region, and durability your application needs, and confirm where your consumers sit so you are not trading one transfer cost for added latency.
Plan the migration
A storage migration is mostly about avoiding downtime and data loss. Plan it as a phased cutover rather than a single risky switch.
- Inventory what you store, how big it is, and how it is accessed.
- Provision the new zero-egress bucket in a region close to your consumers.
- Copy data across, ideally with a tool that verifies checksums.
- Run a dual write or dual read period so both stores stay in sync.
- Repoint your application to the new bucket once data is verified.
- Monitor, then retire the old bucket after a safe waiting period.
The initial copy itself may incur egress from the old provider, since you are reading all that data out. Budget for that one time cost, because it is usually small compared to the ongoing savings.
Sync the data safely
Use a transfer tool that supports the S3 compatible API both stores almost certainly speak. Run an initial bulk copy, then a second incremental pass to catch anything that changed during the first copy. Verify integrity by comparing object counts and checksums rather than assuming the copy was perfect. For large datasets, run the transfer from an instance in the same region as one of the buckets to keep the copy fast.
- Do an initial full sync of all objects.
- Run an incremental sync to catch changes made during the first pass.
- Verify object counts and checksums match before cutover.
- Keep the old bucket read only during final sync to prevent drift.
Repoint applications and CDNs
With data verified, update your application configuration to read from the new bucket. The cleanest approach is to drive the endpoint and bucket name from environment variables so the switch is a config change, not a code change. If you front your storage with a content delivery network, update its origin to the new bucket. Many zero-egress stores pair naturally with a CDN, which further reduces both cost and latency for end users.
Roll the change out gradually if you can. Shift a fraction of traffic, confirm objects load correctly and latency looks healthy, then move the rest. This staged cutover means any misconfiguration affects a small slice of traffic, not everything at once.
Verify savings and retire the old store
After cutover, watch your bills for a full cycle. Confirm that egress charges on the old provider fall to near zero and that the new provider's charges match your model. Once you are confident nothing still reads from the old bucket, and you have kept it for a safe grace period as a fallback, delete it to stop paying for duplicated storage.
Understand the limits of zero egress
Zero egress is a powerful lever, but it is not a universal free lunch, and pretending otherwise leads to disappointment. Providers price these tiers to win on transfer cost while recovering revenue elsewhere, typically through storage rates, request operation charges, or feature differences. Read the pricing carefully so you know where the money moves.
- Storage per gigabyte may differ from your current provider, up or down.
- Request operations, the per call charges for reads and writes, can add up for chatty workloads.
- Minimum storage durations or retrieval rules may apply to colder tiers.
- Region coverage may be narrower, which matters if your users are spread worldwide.
The verdict still favors zero egress for read heavy, transfer dominated workloads. Just model the full bill, not only the egress line, so the migration delivers the savings you expect rather than shifting cost into a column you did not check.
Pair storage with a CDN for the biggest win
For public facing content, the most effective architecture combines zero egress storage with a content delivery network in front of it. The CDN caches objects close to users, so most requests are served from the edge cache and never touch the origin bucket at all. That reduces origin reads, lowers latency, and shrinks transfer cost further.
When a zero egress origin feeds a CDN, the two reinforce each other: the CDN absorbs the bulk of read traffic, and the rare cache miss reads from an origin that does not charge punishing egress. For media libraries, model weights, and other frequently served assets, this pairing often produces the lowest total cost of any setup, which is why it is worth designing in from the start rather than bolting on later.
Conclusion
Zero-egress object storage directly targets the transfer fees that bloat read heavy cloud bills. Confirm that egress is a meaningful share of your spend, plan a phased migration with verified syncs, drive the endpoint from configuration, and cut traffic over gradually before retiring the old bucket. Done carefully, the move trades a small one time copy cost for ongoing savings every time you serve a byte.