Cloudflare R2 или AWS S3: стоимость хранения и трафика
Практика3 минРедакция Innovialabs
Коротко
Главное отличие — R2 не берёт плату за исходящий трафик, а S3 берёт за каждый гигабайт, отданный в интернет. Поэтому R2 выгоднее для файлов, которые часто скачивают пользователи, а S3 — для данных, которые обрабатываются внутри AWS или уходят в дешёвый архив.
Короткий ответ
- Cloudflare R2 — если файлы много раздаются в интернет: медиа, загрузки пользователей, дистрибутивы, публичные датасеты. Исходящий трафик бесплатен, вы платите за хранение и операции.
- AWS S3 — если данные обрабатываются сервисами AWS (EC2, Lambda, Athena), нужны архивные классы хранения или глубокая интеграция с IAM и событиями AWS.
Оба сервиса — объектные хранилища с S3-совместимым API, поэтому код и инструменты в основном одни и те же.
Из чего складывается цена
| Статья расходов | AWS S3 | Cloudflare 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.
- Минимальный срок хранения и плата за извлечение у «холодных» классов в обоих сервисах.