Egress fees
Providers charge for data leaving their network. Storing the file is cheap; letting the internet download it is where the bill comes from.
See it
What it is
Egress is the umbrella word, and the invoice hides three different things under it. Internet egress is data leaving the provider's network toward a user, metered per gigabyte: uploading in is usually free, serving out is where the bill grows. Internal data transfer is bytes moving between regions or between availability zones inside the same cloud, billed even though nothing left the building. NAT processing is a per-gigabyte charge on anything routed through a NAT gateway, stacked on top of whatever that traffic already costs.
On the big three, internet egress lands in the region of several cents per GB at small volumes, which sounds harmless until a 40MB video gets watched 50,000 times. Cloudflare R2 charges zero egress and Backblaze B2 gives a generous free allowance, which is the entire reason media libraries keep migrating there. VPS providers usually bundle a monthly transfer allowance into the instance price instead.
It bites hardest on video, big images, downloadable files, model weights, backup restores, and hotlinked assets other people embed on their own sites. The main lever is a CDN: on a cache hit the bytes come from the edge and your origin pays transfer once instead of once per viewer. The CDN then bills its own delivery, so this swaps an expensive per-GB rate for a cheaper one rather than making bandwidth free. After that it is the boring wins: compression, right-sized images, modern formats, and not shipping a 12MB hero PNG.
The surprise line items are the internal ones. Cross-region replication, cross-availability-zone chatter between an app and its database, and NAT gateway processing all bill without a single byte reaching a customer. Keep talkative services in the same zone, and set a billing alert, because nobody notices transfer costs until the invoice arrives a month after the traffic did.
Ask AI for it
Using '<BILLING_EXPORT>' (my provider's cost and usage export) together with this repository's infrastructure config, attribute transfer spend by service and by category: internet egress, cross-region transfer, cross-AZ transfer, and NAT gateway processing. Ask me for the export if it is not here rather than estimating monthly gigabytes out of thin air. Produce a ranked savings plan with an estimated monthly saving beside each item. Then implement only the changes this repository actually controls: a CDN in front of static and media routes with long TTLs on content-hashed files, Brotli or gzip on text responses, responsive AVIF or WebP images sized per device, and referrer-based hotlink blocking. Hand back the account-level moves (media to a zero-egress bucket, colocating app and database, VPC endpoints instead of NAT, billing alarms) as provider-specific commands with their tradeoffs, for me to approve, not as something you run.