intermediate

R2

S3-совместимое object storage на edge с учётом consistency, модели egress, signed URL и lifecycle.

R2 — S3-совместимое object storage на edge без платы за egress в сервисы Cloudflare — удобно для user uploads, статики и бэкапов через Workers или CDN. AWS SDK или R2 binding в Workers: buckets, keys, опциональный public access через custom domains.

					await env.MEDIA.put(`uploads/${userId}/${fileId}`, stream, {
  httpMetadata: { contentType: 'image/webp' },
});
const object = await env.MEDIA.get(key);
				

| Тема | Деталь | |------|--------| | Consistency | Read-after-write для новых keys; list eventual | | Access | Private buckets + signed URLs или Worker gate | | Lifecycle | Правила expiration и tiering | | Egress | Без CF egress; внешний egress тарифицируется |

Связывайте R2 с Workers для auth uploads вместо открытых public buckets.

На интервью: R2 vs S3 по cost model, presigned upload flows, ожидания consistency, раздача через CDN и миграция с S3.

Типовые ошибки: public buckets с предсказуемыми keys; нет проверки размера или типа файла; синхронный list больших prefix; сильная listing consistency для UI pagination.

Компромисс — экономичное edge-adjacent storage против меньшего набора инструментов, чем у S3, и стоимости внешнего egress.

Чеклист:

  • Аутентификация upload в Worker или API.
  • Lifecycle для temp и log blobs.
  • Public assets через CDN с cache headers.
  • Ранний тест restore и соглашений по именам keys.