Beta

Объектное хранилище S3

S3-совместимое хранилище для бэкапов, медиа и статики. Сейчас в статусе Beta — часть возможностей ещё дорабатывается.

Возможности хранилища

S3-совместимый API

Тот же протокол, что у Amazon S3: работают aws-cli, s3cmd, rclone, MinIO Client и любые SDK — boto3, aws-sdk-js, minio-go. В коде меняется только адрес эндпоинта и ключи, остальная логика загрузки и раздачи файлов остаётся как была.

Оплата за объём

Считается реально занятое место и трафик, а не размер купленного диска. Для проекта, у которого нагрузка растёт неравномерно, это дешевле фиксированного тарифа: вы не оплачиваете пустое место «на вырост».

Ключи доступа выдаются по запросу

Access key и secret key лежат в отдельном секрете и показываются в панели по требованию, а не хранятся в репозитории. Скомпрометированный ключ отзывается пересозданием секрета, без правок кода приложения.

Данные в России

Бакеты живут на серверах в РФ. Для проектов, которые хранят пользовательские файлы — документы, сканы, аватарки — это то же требование 152-ФЗ, что и для баз данных, только про файлы про него часто забывают.

Бэкапы приложений и баз

Хранилище — типовое место для дампов Postgres и архивов сборок. Резервные копии баз выгружаются в бакет и скачиваются по временной ссылке, отдельный файловый сервер под это поднимать не нужно.

Раздача статики и медиа

Картинки, видео и загруженные пользователями файлы отдаются напрямую из хранилища, не занимая диск и память самого приложения. Приложение остаётся stateless, и его можно перезапускать и масштабировать без риска потерять файлы.

Как начать хранить файлы в S3

Четыре шага до первого объекта в бакете.

01

Создайте бакет

Имя, проект и режим доступа: публичный для статики или приватный для документов. Бакет разворачивается на серверах в РФ.

02

Получите ключи

Access key и secret key показываются в панели по запросу — они лежат в отдельном секрете подключения, а не в репозитории. В приложение попадают переменными окружения.

03

Подставьте эндпоинт в клиент

В boto3, aws-sdk-js, minio-go, rclone или aws-cli меняется только адрес эндпоинта и ключи. Остальной код загрузки и раздачи файлов остаётся как был: протокол тот же, что у Amazon S3.

04

Отдавайте файлы напрямую

Публичные объекты доступны по прямой ссылке, приватные — по временной подписанной. Приложение перестаёт держать файлы на своём диске и остаётся stateless: его можно перезапускать и масштабировать без риска потерять загрузки.

Что обычно кладут в хранилище

Четыре типовых сценария, с которых начинают почти все проекты.

Загрузки пользователей

Аватарки, документы, сканы, вложения. Локальный диск контейнера стирается при каждой сборке, поэтому единственное надёжное место для пользовательских файлов — объектное хранилище.

Бэкапы баз данных

Дампы управляемого PostgreSQL уезжают в бакет и скачиваются по временной ссылке. Хранение копий отдельно от самой базы — правило, которое спасает при потере инстанса.

Статика и медиа

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

Артефакты сборок и отчёты

Архивы релизов, экспорты и выгрузки для аналитики. Оплата идёт за реально занятое место, поэтому редко используемые архивы не тянут за собой фиксированный тариф диска.

Что учесть до переезда файлов

Хранилище в статусе Beta — вот честный список ограничений.

Beta означает Beta

Создание бакетов и работа по S3-протоколу уже работают, часть возможностей дорабатывается. Для бэкапов, статики и пользовательских загрузок пригодно, для единственной копии критичных данных — пока нет.

CDN пока не встроен

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

Версионирования объектов нет

Перезапись объекта заменяет его. Если нужна история версий файла, храните её ключами с датой или отдельными бакетами — восстановить перезаписанный объект платформа не сможет.

Ключи дают доступ ко всему бакету

Гранулярные политики уровня Amazon IAM пока не поддерживаются. Разграничивать доступ проще отдельными бакетами под разные задачи: публичная статика, приватные документы, бэкапы.

Трафик считается

Оплата идёт за занятое место и трафик. Раздача тяжёлого видео напрямую пользователям — рабочий сценарий, но её стоит посчитать заранее, а не обнаружить в счёте.

Вопросы об объектном хранилище

В статусе Beta. Создание S3-совместимых бакетов работает, часть возможностей ещё дорабатывается. Не закладывайте его в критичные сценарии, пока хранилище не вышло из беты — для бэкапов и статики оно уже пригодно, для единственной копии важных данных пока нет.

Поднимите backend из GitHub сегодня

Подключение репозитория занимает минуту. Платите только за то, что реально потребляете.

Создать аккаунт