Educational — Cloud egress & data-transfer cost guides. FinOps-lite estimators. Not a quote, broker, or savings guarantee. Launching soon where incomplete.
object-storage · Educational

Cloud egress: S3 direct vs CloudFront origin path

Public S3 Internet GETs and CloudFront-origin fills are different meters: direct downloads bill S3/Internet DT-out, while CF can shift client bytes to edge transfer and leave origin fill on misses. Map who pays, measure CHR, and keep S3 CRR off the origin-fill line before comparing $/GB — Unknown until verified. Decode CE labels and free-tier cliffs on both products.

Updated

Public S3 downloads and CloudFront-origin fills are different meters — map who pays before comparing $/GB.

Path matrix: S3 direct Internet vs CloudFront origin-fill cost layers (educational)
Path classS3 direct (client←S3)CloudFront + S3 originFinOps note
Client-facing billS3 Internet egress tiersCloudFront data transfer outEdge vs origin SKU names differ
Origin / storage billSame as client pathOrigin fill / S3→CF bytes may billTwo-bill risk on misses
Free-tier / free grantS3 free tier cliffsCF free tier + S3 free grant interactModel cliffs explicitly
Cache hit ratioN/A (always origin)CHR drives origin fill ≈ client×(1−CHR)Measure per path
Signed URL / privatePresigned S3 GETCF signed URLs + OAI/OPA patternsAuth changes cacheability

Provider source footnotes

  1. AWS S3 pricing — as-of Unknown until verified
  2. AWS CloudFront pricing — as-of Unknown until verified
  3. Amazon S3 + CloudFront developer guide — as-of

Dated starting points only — Unknown until verified means no invented $/GB. PipeToll does not scrape private consoles or guarantee figures.

Path-class vocabulary: path template, egress (DT-out), origin fill, cache hit ratio (CHR), free-tier cliff, Unknown until verified, and FinOps-lite. Path-first: client ← Internet ← S3 versus client ← CloudFront ← S3 origin. PipeToll refuses to crown a winner from a single blog $/GB. Titles lead with Cloud egress so readers are not hunting American pipe-toll brands. When bytes are bucket→bucket replication instead of CDN miss fill, open the S3 CRR spoke (glossary: CRR) — do not paste CRR into the origin-fill cell. Decode confusing CE labels on the Cost Explorer DT decoder.

Path templates to model

Common traps

Assuming “CDN = zero S3 egress” ignores origin fill. Comparing only CloudFront $/GB to S3 Internet $/GB without free-tier cliffs mis-ranks quiet months. Blending request SKUs into egress lines hides LIST/GET taxes. Treating S3 CRR as CloudFront origin fill conflates replication with CDN miss traffic — keep CRR on its own spoke. Pasting a CE “Data Transfer” rollup without path class is unsafe — use the CE decoder. No guaranteed savings from enabling CloudFront without measured CHR.

FinOps checklist

  1. Export client download GB and, if CF-enabled, cache hit ratio by path.
  2. Price direct S3 Internet path with Mode A (?mode=gb&path=s3-direct).
  3. Price CF path with edge GB + Mode C origin fill.
  4. Mark unverified rates Unknown until verified per methodology.
  5. Cross-read CDN origin fill, multi-CDN origin fill (multi-CDN), S3 vs R2, S3 CRR, and free-tier cliff.
  6. Map CE labels via the Cost Explorer decoder before pasting any DT-out cell.

FinOps-lite Unknown until verified

Worked example (educational): 8 TB client downloads, 75% CHR

Direct path: price 8,000 GB on S3 Internet egress tiers (Mode A). CloudFront path: edge bill for ~8,000 GB plus origin fill ≈ 2,000 GB × origin $/GB (Mode C). Free-tier cliffs on either product can flip totals — keep Unknown until dated. Not a savings guarantee for “just add CloudFront.”

Open calculator

Second educational stack (low-CHR twin): same 8,000 GB client downloads at 40% CHR → origin fill ≈ 4,800 GB. Re-run Mode C (?path=s3-cf) and compare to the 75% CHR case — CHR, not blog $/GB, usually dominates. If some of those bytes are actually S3 CRR (bucket→bucket), switch to ?path=s3-crr and the CRR spoke. Synthetic only — Unknown rates until dated; no savings guarantee.

Worked-estimate sensitivity (educational)

Hold the 8,000 GB (8 TB) client baseline and walk three CHR / path runs. Every unit rate stays Unknown until dated S3 / CloudFront cites — literacy arithmetic, not a quote.

  1. Run A — high CHR (0.75): direct path prices 8,000 GB on S3 Internet (Mode A). CF path: edge ~8,000 GB + origin fill ≈ 2,000 GB (Mode C). Open Mode C (?path=s3-cf) and Mode A (?path=s3-direct).
  2. Run B — low CHR (0.40): same 8,000 GB client → fill ≈ 4,800 GB. Re-run Mode C; do not keep the 75% CHR fill line. CHR, not blog $/GB, usually dominates.
  3. Run C — signed-URL / CRR twin: uncacheable presigned GETs behave like direct (CHR ~0). If some bytes are actually S3 CRR (bucket→bucket), switch to ?path=s3-crr and the CRR spoke — keep CRR off the origin-fill cell. Free-tier cliffs still apply on the Internet half — AWS free-tier cliff.
Sensitivity runs — Unknown rates (educational)
RunWhat changesMeters to keep visibleUnit rates
A8 TB client · CHR 0.75S3 Internet or CF edge · origin fill ≈ 2,000 GBUnknown
BSame client · CHR 0.40CF edge · origin fill ≈ 4,800 GBUnknown
CSigned-URL direct / CRR twinDirect-like egress or CRR (not origin fill) · free-tier cliffUnknown

Cross-read CDN origin fill, CloudFront vs Cloudflare CDN, multi-CDN origin fill, and methodology. Badge every unverified rate Unknown until verified. No savings guarantee from “just add CloudFront.”

FAQ on this path

Does CloudFront remove S3 egress?

It can shift who bills client bytes to CloudFront, but origin fill on cache misses may still bill S3 or CF origin fees. Model both meters.

When is S3 direct simpler?

Low-CHR or one-shot downloads where CDN edge fees add little; still watch S3 free-tier cliffs and request SKUs.

How should I estimate origin fill?

origin_GB ≈ client_GB × (1 − CHR) × inflation — see the CDN origin spoke and calculator Mode C.

Does CloudFront origin fill include S3 Cross-Region Replication?

No. Origin fill is CDN miss traffic toward the origin. S3 CRR is bucket→bucket inter-region replication — keep CRR off the CloudFront/origin-fill line.

Is origin fill the same as S3 Cross-Region Replication?

No. Origin fill is CDN miss traffic toward the origin (glossary). S3 CRR is bucket→bucket inter-region replication — keep CRR off the CloudFront/origin-fill line.

How do Cost Explorer labels confuse this path?

CE may roll “Data Transfer” without saying S3 Internet vs CloudFront edge vs origin fill. Decode labels on the CE decoder before Mode A/C.

Does a multi-CDN design change the math?

Yes — each CDN can have its own edge meter and origin-fill path. See multi-CDN origin fill and multi-CDN.

Trademarks: Amazon Web Services, AWS, Microsoft Azure, Google Cloud Platform, GCP, and Cloudflare are trademarks of their respective owners. PipeToll (Ameti One LLC) is not affiliated with, endorsed by, or sponsored by those companies. Educational comparisons may be outdated — verify current rates with each provider.