Объектное хранилище S3 в Кибер Хранилище. Примеры использования
Введение
Кибер Хранилище — это универсальная программная система, которая разрабатывается по принципу аппаратной независимости и может быть развернута на стандартных серверных платформах архитектуры x86-64 без каких-либо ограничений по производителям оборудования, поколениям процессоров, типам и скоростным характеристикам накопителей (HDD, SSD, NVMe). Подобный подход обеспечивает максимальную гибкость при построении инфраструктуры хранения и позволяет эффективно использовать как новое, так и существующее оборудование, минимизируя совокупную стоимость владения (TCO).
Кибер Хранилище объединяет диски серверов в единый кластер хранения. На его базе можно создавать: объектные (S3), блочные (iSCSI), файловые (NFS) хранилища, а также специализированное хранилище резервных копий. Последнее интегрировано с Кибер Бэкапом и Кибер Бэкапом Облачным через проприетарный протокол BGW.
Основные отличия между аппаратными и программно-определяемыми системами хранения данных мы обсудили в статье «СХД или SDS: практическое руководство по выбору для ИТ-специалистов». Основным сценариям использования программно-определяемой СХД был посвящен обзор «Ключевые сценарии использования SDS».
Общее устройство
Объектное хранилище в экосистеме Кибер Хранилища реализовано как полноценный сервис с двухуровневой архитектурой. Уровень управления инфраструктурой — конфигурирование кластера, настройка политик репликации и восстановления, управление ёмкостью, мониторинг узлов и распределение данных — полностью осуществляется через единый административный интерфейс Кибер Хранилища. Это обеспечивает централизованный контроль над всей инфраструктурой хранения независимо от типа предоставляемых сервисов.
Для конечных потребителей данных — будь то автоматизированные процессы, прикладные приложения, утилиты командной строки (например, awscli, s3cmd) или клиентские программы с графическим интерфейсом — объектное хранилище предоставляется как стандартный совместимый S3-сервис. Доступ к данным и управление ими осуществляются исключительно через программный интерфейс AWS S3 API (включая поддержку основных операций: загрузка/выгрузка объектов, управление корзинами, политики доступа, версионирование). Такая реализация гарантирует максимальную совместимость с существующей экосистемой инструментов и приложений, не требуя их модификации для работы с платформой Кибер Хранилище. Визуализация данной архитектуры представлена на следующей диаграмме.

В данном обзоре мы познакомимся с основными операциями в объектном (S3) хранилище, развернутом на базе Кибер Хранилища. Для выполнения этих операций будем использовать интерфейс командной строки (CLI). Но сначала посмотрим на основные настройки инфраструктуры и сервиса средствами Кибер Хранилища.
Обзор стенда
Начнем с того, что подключимся к Кибер Хранилищу и посмотрим на основные настройки сервиса S3. Левая панель содержит четыре раздела: «Мониторинг», «Сервисы хранилища», «Инфраструктура» и «Настройки». К разделу «Мониторинг» мы вернемся позднее, когда у нас появятся какие-то операции с хранилищем, сейчас же зайдем в раздел «Сервисы хранилища». Здесь есть подраздел «Обзор» и другие подразделы, относящиеся к каждому типу хранилища — «Резервные копии», «Блочное хранилище», «S3» и «NFS». Нас интересует подраздел «S3».

На вкладке «Серверы» мы видим, что у нас уже есть сервер с именем и IP-адресом. Вкладка «Пользователи» отображает список пользователей, которым доступен наш сервис. Пользователей можно создавать, отключать, повторно подключать и удалять.
Пользователь у нас уже создан и для него сформированы 2 ключа — ID ключа доступа (Access Key ID) и Секретный ключ доступа (Secret Access Key). Эти ключи нам понадобятся для подключения к хранилищу.

На вкладке «Корзины» будут показаны корзины, созданные нами в S3-хранилище. Об этом — чуть ниже. Остальные вкладки пока пропустим и откроем «Настройки». Здесь нас интересует «DNS», где прописано доменное имя нашего сервиса.

Скопируем его и перейдем на вкладку «Протокол». Здесь мы указываем какой протокол — http, https или оба будет поддерживаться для подключения к нашему сервису S3. Мы будем использовать оба протокола, и для целей тестирования нам вполне подойдет самостоятельно сгенерированный сертификат.

В подразделе «Инфраструктура. Диски» мы можем посмотреть на каких дисках работает наше хранилище.

А в подразделе «Инфраструктура. Сети» убедиться в том, что внешний обмен данными с точкой доступа S3 включен.

Нам осталось только добавить в файл hosts запись, ассоциирующую IP-адрес сервиса с доменным именем.
127.0.0.2 s3-demo.local
Это следует сделать для той машины, с которой будет происходить доступ к корзине и/или объектам.
Теперь мы готовы использовать S3-хранилище. Для выполнения последующих операций будем использовать утилиту командной строки AWS CLI. Это позволит нам не только разобрать основные команды для управления S3-хранилищем, но и убедиться в том, что Кибер Хранилище полностью совместимо с программным интерфейсом AWS.
Подключение к сервису S3
После установки утилиты AWS CLI запустим ее из консоли, выполним команду aws configure. Это — первая и основная команда, которую запускают для работы с Amazon Web Services через терминал (командную строку).
Укажем значения для двух ключей доступа, которые мы обсудили, когда были в интерфейсе Кибер Хранилища на вкладке «Пользователи».
aws configure
AWS Access Key ID []: ХХХХХХХХХХХ
AWS Secret Access Key []: ХХХХХХХХХХХХХХХХХХХХХХХХХХ
Default region name []:
Default output format [json]:
Имя региона и формат сообщений оставим по умолчанию. Формат JSON удобен как для визуальной интерпретации результатов выполнения операций, так и для их программной обработки.
Создание корзины
AWS CLI поддерживает 2 типа команд — низкоуровневые команды с префиксом s3api, которые предоставляют прямой доступ к операциям на уровне S3 API (через S3 REST API) с гранулярным контролем операции и высокоуровневые команды с префиксом s3, которые являются упрощенным вариантом команд для выполнения типовых задач. Где это возможно, будем использовать оба варианта.
Первое, что нам необходимо сделать для использования хранилища — это создать в нашем хранилище корзину. Корзина (bucket) в S3 — это контейнер для хранения объектов (файлов). Это базовая единица организации данных в S3, аналогичная папке в файловой системе. Корзина хранит объекты — внутри нее размещаются файлы (документы, изображения, видео) и их метаданные. Вложенность имитируется через префиксы в именах ключей. Права доступа к данным настраиваются на уровне корзины через политики (bucket policies) и списки контроля доступа (ACL).
Выполним команду create-bucket и получим ответ в формате JSON (как и указали при подключении):
aws s3api create-bucket --bucket 'my-bucket' --endpoint-url http://s3-demo.local
{
"Location": "/my-bucket"
}
Обратите внимание на параметр endpoint-url — с его помощью мы указываем, к какому сервису S3 необходимо адресовать запрос. Если этот параметр опустить, AWS CLI будет «стучаться» на один из сервисов Amazon — в нашем случае это us-east-1 и, естественно, с указанными ключами доступа мы подключиться не сможем.
Чтобы получить список всех доступных корзин выполним команду list-buckets и получим следующий ответ от сервиса:
aws s3api list-buckets --endpoint-url http://s3-demo.local
{
"Buckets": [
{
"Name": "my-bucket",
"CreationDate": "2026-02-12T07:58:27+00:00"
}
],
"Owner": {
"DisplayName": "admin-s3",
"ID": "ab219c9e18a30013"
},
"Prefix": nul}
Видим название корзины, дату ее создания и владельца — того самого, чьи ключи мы указали при подключении к сервису.
Давайте посмотрим как выглядит корзина в интерфейсе Кибер Хранилища. Переходим на вкладку «Сервисы хранилища. S3. Корзины»

Загрузка файла
В сервисе S3 внутри корзин хранятся объекты (их еще называют BLOB — Binary Large Object и хотя этот термин пришел из СУБД, он часто используется как синоним объекта). Объект — это базовая единица хранения данных в сервисе объектного хранилища. Каждый объект состоит из трех ключевых компонентов:
- Данные (Data) — файл любого типа и размера (до 5 ТБ): документ, изображение, архив, видео и т.д.
- Ключ (Key) — уникальный идентификатор объекта в корзине (фактически — путь к файлу)
- Метаданные (Metadata) — дополнительная информация в формате «ключ-значение»: тип контента, размер, пользовательские теги и пр.
Обратите внимание на следующие отличия объектного хранилища от файловой системы:
- В хранилище нет иерархической файловой структуры («папки» — лишь визуальная абстракция через разделитель
/в ключе) - Объекты доступны напрямую по уникальному URL (после настройки прав)
- Объекты версионируются — можно хранить несколько версий одного объекта
- Для объектов поддерживаются политики жизненного цикла
Выполним s3-команду cp для загрузки документа:
aws s3 cp Documents/Leaflet_KI_2025.pdf s3://my-bucket/ --endpoint-url http://s3-demo.local
И получим подтверждение об успешной загрузке:
upload: Documents/Leaflet_KI_2025.pdf to s3://my-bucket/Leaflet_KI_2025.pdf
Теперь используем s3api-команду put-object:
aws s3api put-object --bucket 'my-bucket' --key 'document' --body 'Documents/Leaflet_KI_2025.pdf' --endpoint-url http://s3-demo.local
И также получим подтверждение об успешной загрузке:
{
"ETag": "\"3a00fbbf8ae3f0554dacaa1fd31a1d3f\""
}
ETag — уникальный идентификатор объекта в корзине
Теперь проверим проверим наличие файла в корзине выполнив команду s3 ls:
aws s3 ls s3://my-bucket --endpoint-url http://s3-demo.local
2026-02-13 13:11:04 16972303 Leaflet_KI_2025.pdf
2026-02-13 16:06:29 16972303 document
То же самое можно сделать и s3api-командой:
aws s3api list-objects-v2 --bucket 'my-bucket' --endpoint-url http://s3-demo.local
{
"Contents": [
{
"Key": "document",
"LastModified": "2026-02-13T13:06:29+00:00",
"ETag": "\"3a00fbbf8ae3f0554dacaa1fd31a1d3f\"",
"Size": 16972303,
"StorageClass": "STANDARD"
}
],
"RequestCharged": null,
"Prefix": ""
Просмотр файла
Можно загрузить файл и затем дать права доступа к нему (это — одна из тем следующей статьи), либо дать к нему публичный доступ прямо при загрузке — для этого необходимо выполнить s3-команду cp, указав в явном виде права с помощью параметра s3:
aws s3 cp Leaflet_KI_2025.pdf s3://my-bucket/ --acl public-read --endpoint-url http://s3-demo.local
Загруженный нами файл находится по следующему адресу:
http://s3-demo.local/my-bucket/Leaflet_KI_2025.pdf
После того как права настроены, мы можем открыть файл в браузере:

Скачивание файла
Для скачивания файла выполним s3-команду cp:
aws s3 cp s3://my-bucket/Leaflet_KI_2025.pdf Leaflet_KI_2025.pdf --endpoint-url http://s3-demo.local
И получим подтверждение об успешной загрузке:
download: s3://my-bucket/Leaflet_KI_2025.pdf to ./Leaflet_KI_2025.pdf
Также мы можем воспользоваться s3api-командой get-object:
aws s3api get-object --bucket 'my-bucket' --key 'document' Leaflet_KI_2025.pdf --endpoint-url http://s3-demo.local
{
"LastModified": "2026-02-13T13:06:29+00:00",
"ContentLength": 16972303,
"ETag": "\"3a00fbbf8ae3f0554dacaa1fd31a1d3f\"",
"Metadata": {},
"StorageClass": "STANDARD",
"TagCount": 0
}
Удаление файла
Удалим файл s3-командой rm:
aws s3 rm s3://my-bucket/Leaflet_KI_2025.pdf --endpoint-url http://s3-demo.local
Получим подтверждение:
delete: s3://my-bucket/Leaflet_KI_2025.pdf
и командой ls убедимся что корзина пуста.
Удаление корзины
Удалим нашу корзину s3-командой rb:
aws s3 rb s3://my-bucket/ --endpoint-url http://s3-demo.local
Получим подтверждение:
remove_bucket: my-bucket
И убедимся в отсутствии корзины через интерфейс Кибер Хранилища:

С помощью s3api команды корзина удаляется так:
aws s3api delete-bucket --bucket s3://my-bucket/ --endpoint-url http://s3-demo.local
Мы рассмотрели набор базовых операций с S3-хранилищем: создание корзины, загрузка и выгрузка файла, удаление файла и удаление корзины. В следующей части поговорим о правах доступа, версионировании и дугих возможностях.
Попробуйте сами
Вы можете самостоятельно познакомиться с возможностями Кибер Хранилища. У нас на сайте можно скачать пробную версию продукта, а также познакомиться с документацией.
Кибер Хранилище можно развернуть и посмотреть даже на ноутбуке, но для более серьезного знакомства лучше использовать серверные платформы. Знакомство с возможностями продукта можно начать, развернув его на одном сервере — в этом случае доменом отказа будет диск.