// Engineering Log
Протоколы передачи файлов: Часть 5 — S3 и объектное хранение
Опубликовано 22.09.2026
S3 (Simple Storage Service) — сервис объектного хранения Amazon, запущенный в 2006 году. Его программный интерфейс со временем стал отраслевым стандартом: сегодня «S3» чаще означает не конкретный сервис Amazon, а протокол, который поддерживают десятки хранилищ, облачных и собственных. Программы для резервного копирования, CMS, системы сбора журналов и аналитические платформы умеют работать с S3 «из коробки», поэтому объектное хранилище стало удобным общим знаменателем для хранения больших объёмов данных.
Объекты вместо файлов
Классическая файловая система — это дерево каталогов, в котором файл можно открыть, дописать или изменить с середины. Объектное хранилище устроено проще:
- корзина (bucket) — контейнер верхнего уровня, в котором лежат объекты;
- объект — данные целиком плюс метаданные (тип, дата, произвольные пользовательские поля);
- ключ — имя объекта внутри корзины, например
backups/2026/09/db.sql.gz.
Каталогов в S3 на самом деле нет: backups/2026/09/ — лишь часть имени. Интерфейсы показывают «папки», группируя ключи по разделителю /. Объект нельзя изменить частично — его перезаписывают целиком. Большие файлы загружают по частям (multipart upload), и хранилище склеивает их на своей стороне.
Как выглядит обмен по HTTP
Каждая операция — обычный HTTP-запрос:
PUT /bucket/key— загрузить объект;GET /bucket/key— получить объект;DELETE /bucket/key— удалить;GET /bucket?list-type=2&prefix=backups/— получить список объектов (операция ListObjectsV2, до 1000 ключей за запрос, дальше — по токену продолжения).
Отдельного метода «LIST» в протоколе нет: список — это GET к корзине с параметрами.
Каждый запрос подписывается. Клиент получает пару ключей — идентификатор (access key) и секрет (secret key) — и по алгоритму Signature Version 4 вычисляет подпись от метода, пути, заголовков и времени запроса. Секрет по сети не передаётся, а перехваченный запрос нельзя повторить через некоторое время. Вручную подпись никто не считает: это делают SDK, aws cli, rclone и другие клиенты.
Работа с S3-совместимым хранилищем
Большинство клиентов умеют работать не только с Amazon, но и с любым совместимым хранилищем — достаточно указать адрес сервиса (endpoint).
С помощью aws cli:
export AWS_ACCESS_KEY_ID=ваш-ключ
export AWS_SECRET_ACCESS_KEY=ваш-секрет
aws --endpoint-url https://s3.example.ru s3 cp db.sql.gz s3://backups/2026/09/db.sql.gz
aws --endpoint-url https://s3.example.ru s3 ls s3://backups/2026/09/С помощью rclone, который удобен для синхронизации каталогов:
rclone config create s3backup s3 provider=Other \
access_key_id=ваш-ключ secret_access_key=ваш-секрет \
endpoint=https://s3.example.ru
rclone sync /var/backups s3backup:backups/server1 --dry-runФлаг --dry-run показывает, что будет сделано, ничего не меняя. Убедившись в результате, запустите команду без него.
Где взять S3 в России
Amazon S3 и Google Cloud Storage российским компаниям недоступны: оплата картами российских банков не проходит, а Google Cloud с 2022 года не принимает новых клиентов из России. Совместимые хранилища предлагают российские облака — Yandex Object Storage, VK Cloud, Selectel. Их тарифы, класс хранения и порядок оплаты разобраны в части о резервном копировании в облако: «Резервное копирование: Часть 3 — Облачные хранилища для малого бизнеса». Для хранения персональных данных российское облако удобно и с точки зрения 152-ФЗ.
Своё S3-хранилище
Долгое время стандартным выбором для собственного S3 был MinIO. В 2025–2026 годах ситуация изменилась: репозиторий бесплатной редакции MinIO переведён в архив 25 апреля 2026 года, в нём прямо указано, что проект больше не поддерживается, а готовые сборки не выпускаются — только исходный код под AGPLv3. Разработчики предлагают коммерческие продукты AIStor. Уже работающие установки продолжают функционировать, но исправлений безопасности для них не будет, и новые проекты разумнее строить на другом решении.
Открытые альтернативы:
- Garage — лёгкое распределённое хранилище (лицензия AGPLv3), рассчитанное на небольшие кластеры из разнородных машин в разных площадках; для узла достаточно 1 ГБ памяти.
- SeaweedFS — распределённая файловая система с S3-шлюзом (лицензия Apache 2.0); поддерживает версионирование, блокировку объектов и правила жизненного цикла.
Перед выбором проверьте, какие операции S3 нужны вашим программам: полная совместимость есть не у всех хранилищ, особенно в части политик доступа и блокировки объектов.
Когда S3 подходит, а когда нет
S3 хорош для резервных копий, архивов, медиафайлов сайта, журналов и данных для аналитики — всего, что записывается целиком и читается по ключу. Он плохо подходит для задач, где файл постоянно меняется небольшими порциями: базы данных, рабочие документы с совместным редактированием, каталоги с множеством мелких файлов, которые приложение ожидает видеть как обычную файловую систему. Для таких задач лучше подходят SMB, NFS или WebDAV.
Типичные ошибки
- Публичная корзина. Корзина с открытым чтением — частая причина утечек. Доступ по умолчанию должен быть закрыт, а публичные файлы лучше отдавать через отдельную корзину или CDN.
- Один ключ на всё. Ключ с полными правами, прописанный на всех серверах, при утечке открывает всё хранилище. Заводите отдельные ключи с минимальными правами для каждой задачи.
- Копии без защиты от удаления. Если сервер с ключами скомпрометирован, злоумышленник удалит и резервные копии. Включайте версионирование или блокировку объектов (Object Lock), если хранилище их поддерживает.
- Бесконечный рост. Без правил жизненного цикла старые версии и незавершённые многочастные загрузки копятся и увеличивают счёт.
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related