Перейти к содержанию
Innovialabs

Cloudflare R2 или AWS S3: стоимость хранения и трафика

Практика3 мин

Коротко

Главное отличие — R2 не берёт плату за исходящий трафик, а S3 берёт за каждый гигабайт, отданный в интернет. Поэтому R2 выгоднее для файлов, которые часто скачивают пользователи, а S3 — для данных, которые обрабатываются внутри AWS или уходят в дешёвый архив.

Короткий ответ

  • Cloudflare R2 — если файлы много раздаются в интернет: медиа, загрузки пользователей, дистрибутивы, публичные датасеты. Исходящий трафик бесплатен, вы платите за хранение и операции.
  • AWS S3 — если данные обрабатываются сервисами AWS (EC2, Lambda, Athena), нужны архивные классы хранения или глубокая интеграция с IAM и событиями AWS.

Оба сервиса — объектные хранилища с S3-совместимым API, поэтому код и инструменты в основном одни и те же.

Из чего складывается цена

Статья расходовAWS S3Cloudflare R2
ХранениеЗа ГБ в месяц, цена зависит от класса храненияЗа ГБ в месяц, классы Standard и Infrequent Access
Запись и листингОплачиваются как PUT/COPY/POST/LISTОперации класса A
ЧтениеОплачиваются как GET и др.Операции класса B
Исходящий трафик в интернетОплачивается за каждый ГБНе оплачивается
Трафик между регионамиОплачиваетсяОтдельной платы за трафик нет
Извлечение из «холодных» классовОплачиваетсяОплачивается для Infrequent Access
Бесплатный уровеньЕстьЕсть, ежемесячный

Точные ставки зависят от региона и периодически меняются — сверяйте их на страницах тарифов.

Почему egress решает всё

Плата за исходящий трафик (egress) незаметна на старте и быстро растёт с популярностью. Простой расчёт: файл на 100 МБ, скачанный 10 000 раз, — это около 1 ТБ исходящего трафика.

  • В S3 вы оплатите каждый гигабайт этого терабайта плюс 10 000 GET-запросов.
  • В R2 вы оплатите только 10 000 операций чтения.

Чем больше отношение «скачано / хранится», тем выгоднее R2. Если же данные лежат годами и почти не читаются, egress не играет роли, и решают цена хранения и архивные классы, где у S3 выбор шире.

Нюанс AWS: трафик из S3 в CloudFront не тарифицируется, поэтому связка S3 + CloudFront снижает расходы. Но вы платите за трафик уже CloudFront.

Совместимость API

R2 реализует S3 API, и большинство SDK и утилит (AWS SDK, AWS CLI, rclone) работают после смены адреса и ключей:

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const r2 = new S3Client({
  region: "auto",
  endpoint: `https://${process.env.R2_ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: process.env.R2_ACCESS_KEY_ID,
    secretAccessKey: process.env.R2_SECRET_ACCESS_KEY,
  },
});

await r2.send(new PutObjectCommand({ Bucket: "media", Key: "a.jpg", Body: file }));

Различия всё же есть: права в R2 задаются API-токенами, а не политиками IAM, а часть возможностей S3 отсутствует или устроена иначе. Перед переездом проверьте по документации Cloudflare каждую операцию, которую использует ваш код.

Производительность

  • S3 вы размещаете в конкретном регионе. Минимальная задержка — для сервисов в том же регионе AWS.
  • R2 выбирает размещение автоматически (можно задать подсказку локации). Публичные файлы удобно раздавать через свой домен, тогда работает кэш Cloudflare.

Для пользователей решает не столько хранилище, сколько CDN перед ним и расстояние до вашего бэкенда.

Какие задачи выигрывают от каждого

R2:

  • изображения, видео и файлы, загружаемые пользователями и показываемые на сайте;
  • раздача приложений, обновлений, датасетов;
  • мультиоблачная архитектура, где данные читают серверы у разных провайдеров;
  • сайты, уже работающие через Cloudflare.

S3:

  • данные, которые обрабатываются внутри AWS: аналитика, ETL, машинное обучение;
  • долгосрочные архивы и резервные копии, которые почти не читаются;
  • проекты, где нужны события S3, тонкие политики IAM и требования комплаенса.

Их можно сочетать: хранить оригиналы и архив в S3, а публичные копии раздавать из R2.

Скрытые расходы

  • Много мелких объектов — в обоих сервисах счёт за операции может превысить счёт за хранение.
  • NAT Gateway в AWS — если серверы в приватной подсети ходят в S3 через NAT, трафик тарифицируется. Используйте VPC gateway endpoint для S3.
  • Минимальный срок хранения и плата за извлечение у «холодных» классов в обоих сервисах.

Частые вопросы

Нет. Если данные редко уходят в интернет и обрабатываются внутри AWS, разница в цене небольшая, а для архивов S3 с классами Glacier может быть дешевле.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.