Файлы — картинки, документы, бэкапы, статику сайта — в облаке не держат на диске виртуальной машины. Для этого есть объектное хранилище: отдельный сервис, который хранит сколько угодно файлов, доступен по сети и не требует своего сервера. В Yandex Cloud это Object Storage. Разберём основы; более общий разбор модели, применимый к любому S3-совместимому хранилищу, — в разделе Object storage (S3).
Бакет, объект, ключ
В объектном хранилище нет привычных папок и файлов. Модель проще и другая:
- Бакет (bucket) — контейнер верхнего уровня, куда складывают объекты. Имя бакета уникально.
- Объект — сам файл вместе с метаданными.
- Ключ (key) — строка-идентификатор объекта внутри бакета, например
images/2026/logo.png. Слэши в ключе выглядят как папки, но это просто часть имени: настоящей иерархии каталогов нет, пространство плоское.
Доступ — только через HTTP API, не как к диску: объект читается и пишется целиком, нет операций «дописать в середину». Именно поэтому объектное хранилище масштабируется до огромных объёмов.
S3-совместимый API
Ключевое удобство: Object Storage совместим с Amazon S3 по API. Это значит, что подходят те же библиотеки, инструменты и подходы, что и для AWS S3, — нужно лишь указать адрес хранилища Yandex Cloud (storage.yandexcloud.net). Разработчику, знакомому с S3, переучиваться не нужно; как это подключить из кода — в статье про интеграцию со Spring Boot.
Классы хранения
Одни данные читают постоянно, другие лежат годами «на всякий случай». Держать всё одинаково — переплачивать. Поэтому у объектов есть класс хранения:
- Стандартный — для данных, которые часто читают: дороже за хранение, дёшево и быстро читать.
- Холодный — для редкого доступа: дешевле хранить, но дороже и чуть дольше читать.
- Ледяной — для архива, к которому почти не обращаются: копейки за хранение, но доступ медленный и с доплатой.
Логика простая: горячие данные — в стандартном классе, холодные (логи годовой давности, старые бэкапы) — в дешёвых. Делать это вручную необязательно: настраиваются lifecycle-правила, которые сами переносят объекты в холодные классы по возрасту и удаляют совсем старые.
Версионирование и доступ
Версионирование — если включить, при перезаписи или удалении объекта старая версия сохраняется. Это спасает от случайного затирания и от «объект удалили по ошибке». Плата — за хранение всех версий, поэтому в паре с ним настраивают lifecycle-правило, чистящее старые версии.
Доступ к бакету бывает приватным (по умолчанию — только по правам IAM или ключам доступа) и публичным (объекты открыты по прямой ссылке — так раздают статику сайта). Для того чтобы дать временную ссылку на приватный объект (например, «скачать отчёт в течение часа»), используют presigned URL — подписанную ссылку с ограниченным сроком жизни, без раздачи прав.
Из чего складывается стоимость
Счёт за Object Storage складывается из трёх частей:
- хранение — за гигабайты в месяц (зависит от класса: ледяной в разы дешевле стандартного);
- запросы — за количество операций чтения/записи;
- исходящий трафик — за данные, отдаваемые наружу.
Самая коварная статья — исходящий трафик: на раздаче популярной статики он растёт незаметно. Здесь помогает CDN (сеть доставки контента) перед хранилищем — она кэширует файлы ближе к пользователю и снижает и задержку, и трафик из хранилища.
Где это применяется
Object Storage — стандартное место для всего файлового: пользовательские загрузки, картинки и видео, статика фронтенда, резервные копии, экспорты и логи. Приложение обычно не отдаёт файлы через себя, а кладёт их в бакет и раздаёт ссылками — это разгружает сервис.
Типичные ошибки новичков:
- держат файлы на диске виртуальной машины — теряют их при пересоздании машины и не могут масштабировать;
- раздают всё через приложение вместо прямых ссылок или CDN — грузят сервис и переплачивают за трафик;
- делают бакет публичным целиком по ошибке — открывают наружу приватные данные;
- не настраивают lifecycle — платят за стандартный класс даже за холодный архив.
Что учить дальше: общая модель S3 глубже — в разделе Object storage (S3); как читать и писать объекты из кода — в интеграции со Spring Boot; дешёвые классы и трафик — часть оптимизации затрат.