English for Cloudflare R2
Learn the English vocabulary for discussing Cloudflare R2 object storage: buckets, egress costs, presigned URLs, and S3 compatibility.
The main reason teams evaluate R2 at all is a single vocabulary term — egress — and being able to discuss it precisely, alongside the rest of R2’s object storage model, keeps a cost or architecture conversation grounded in specifics instead of vague cost complaints.
Key Vocabulary
Bucket — a top-level container for objects in R2, similar to an S3 bucket, that defines a namespace and access boundary for the files stored inside it. “We’re not storing everything in one bucket — user uploads and generated thumbnails are in separate buckets, so we can apply different retention and access rules to each.”
Object — an individual file stored in a bucket, along with its metadata, referenced by a unique key within that bucket rather than a traditional file-system path. “The upload succeeded, but the object’s key doesn’t match what the frontend is requesting — check whether we’re prefixing keys differently between the upload and retrieval code paths.”
Egress — the cost, or lack of cost, associated with data leaving the storage provider’s network when it’s downloaded or served, the primary differentiator R2 offers by not charging for it, unlike most S3-compatible providers. “Switching this bucket from S3 to R2 won’t change our storage costs much, but it eliminates egress entirely — for a bucket this size serving this much traffic, that’s the actual cost driver we’re solving for.”
Presigned URL — a temporary URL generated with an embedded signature that grants time-limited access to a specific object, without requiring the requester to have credentials of their own. “Don’t make that bucket public — generate a presigned URL for the user’s specific file instead, so access expires automatically and isn’t broader than what that one request actually needs.”
S3 compatibility — R2’s support for the same API used by Amazon S3, meaning existing S3 clients and tooling can generally work against R2 with only endpoint and credential changes, not a full rewrite. “Migrating this service to R2 wasn’t a rewrite — because of S3 compatibility, we just pointed the existing S3 client at R2’s endpoint and swapped credentials, and the upload and download code didn’t need to change.”
Common Phrases
- “Which bucket does this object actually live in?”
- “Is egress the reason we’re evaluating R2, or is it primarily about storage cost?”
- “Should this be a presigned URL, or does the object need to be public?”
- “Does our existing S3 tooling work against R2 as-is, given the compatibility?”
- “What’s the expiration window on this presigned URL?”
Example Sentences
Justifying a migration in a cost review: “This bucket is our biggest egress cost line item because it serves video files directly to end users. Moving it to R2 doesn’t reduce the storage bill much, but it removes egress charges entirely, which is the majority of what we’re paying for this bucket today.”
Explaining an access-control decision: “We generate a presigned URL scoped to the specific object and a five-minute expiration, rather than making the bucket public — that way, even if the URL leaks, the exposure window and the exposed object are both limited.”
Describing a migration’s scope: “Because R2 has S3 compatibility, this migration is mostly a configuration change — new endpoint, new credentials — not a rewrite of our upload and download logic, which is why it’s a smaller project than it initially sounded.”
Professional Tips
- Lead cost discussions about object storage with egress, not just storage price per gigabyte — for traffic-heavy buckets, egress is often the larger and more variable cost, and R2’s pitch is specifically about eliminating it.
- Default to a presigned URL for any object that isn’t meant to be permanently public — it keeps access scoped and time-limited instead of relying on manually revoking access later.
- Say bucket and object precisely, not “folder” and “file” — object storage doesn’t have a real directory hierarchy, and the distinction matters when discussing access rules or performance.
- Mention S3 compatibility explicitly when scoping a migration estimate — it’s the reason an R2 migration can often be a configuration change rather than a full rewrite of storage logic.
Practice Exercise
- Explain what egress means and why it’s often the deciding factor in an R2 migration.
- Describe when a presigned URL is a better choice than making a bucket public.
- Write a sentence explaining why S3 compatibility can reduce migration effort.