Объектное хранилище – облачное решение для хранения данных, совместимое с S3 (Simple Storage Service) и предназначенное для работы с большими объемами неструктурированных данных, представленных в качестве “объектов”. Они содержат в себе набор метаданных, включая его уникальный идентификатор, дату создания, тип файла, автора и другие данные. Объектами при этом могут быть любые файлы – например, видео, изображения, документы, pdf и другие.
Объектное хранилище S3 хорошо подойдет для следующих задач:
- Создание собственной системы доставки контента (CDN) для хранения статического контента сайта и медиафайлов
- Длительное хранение резервных копий и архивов
- Обмен данными между микросервисами
- Хранение логов и отчетов
Объектное хранилище основано на Ceph и совместимо с S3. Поэтому на вопрос, как использовать хранилище S3, ответ прост – использовать его можно для большого количества приложений, заточенных под AWS S3.
Технические ограничения
- Максимальное количество бакетов – 100, может быть увеличено по запросу в техническую поддержку
- Максимальный размер имени бакета – 50 символов (a-z, 0-9, -)
- Максимальное количество объектов в контейнере – не ограничено
- Максимальный размер объекта – 50 ТБ
- Максимальный размер имени объекта – 1024 символов UTF-8
- Максимальный размер данных для загрузки за один запрос – 5 ГБ
- Максимальное количество сегментов при сегментированной загрузке – 10000
- Максимальное количество заголовков метаданных для объекта – 90
- Максимальный размер имени заголовка – 128 символа UTF-8
- Максимальное количество символов в значении заголовка – 1024 символов UTF-8
- Объем хранилища – не ограничено
- Максимальное количество HTTP-запросов к S3 API для аккаунта – 2000 запросов в секунду
- Максимальное количество HTTP-запросов к бакету (GET, HEAD, OPTIONS) – 2000 запросов в секунду
- Функции, направленные на взаимодействие с бакетами (например, их создание и удаление) доступны только из панели управления и не могут быть использованы в сторонних клиентах (
aws create-bucket …
в aws-cli,s3.create_bucket()
в SDK и т.д.)
Создание бакета
Для создания бакета перейдите в раздел “Облако” панели управления и нажмите “Создать” в меню в левой части экрана. В выпадающем меню выберите “Объектное хранилище”.

Выберите подходящий вам тариф, после чего задайте имя бакета. Название хранилища должно содержать только латинские символы, цифры и знак -
. При этом символ -
не может быть в начале или конце названия или повторяться два раза подряд.

Также при создании вы можете настроить политики доступа. Публичная политика делает содержимое хранилища доступным на чтение по протоколу HTTPS без авторизации.

После завершения конфигурации нажмите “Создать хранилище”. Созданный бакет отобразится в списке виртуальных серверов.
Информация об объектном хранилище
При выборе созданного бакета из списка облачных серверов откроется страница с информацией об объектном хранилище.

В разделе “Реквизиты доступа” содержатся:
- URL – используется для подключения.
- Имя бакета – уникальное имя бакета, генерируемое на основе названия, указанного при создании. Используется для доступа к бакету.
- Ключи доступа, необходимые для безопасного доступа к объектному хранилищу. Для просмотра ключей доступа нажмите на иконку
.
Access key – это имя пользователя, а Secret key – это его секретный пароль. - Публичный URL бакета – он будет использоваться при предоставлении ссылок на файлы. Может быть заменен на собственный домен 3 уровня.
Доступно 2 варианта публичного URL: path style и virtual hosted style.
На данный момент поддерживаются две модели публичного URL для доступа к содержимому бакета:
- Path-style — модель, при которой название бакета указывается в части пути до объекта в URI (URI path), например:
https://s3.ru1.storage.beget.cloud/3f1192784f4f-agreeable-gustofer/testfile.txt
- Virtual-hosted style — модель, при которой название бакета включается в адрес хоста (hostname), например:
https://3f1192784f4f-agreeable-gustofer.s3.ru1.storage.beget.cloud/testfile.txt
- Свой поддомен – ваш поддомен, который вы можете подключить к бакету для доступа к его содержимому по поддомену.
При нажатии на название объектного хранилища открывается окно, позволяющее изменить описание бакета в списке облачных сервисов.

В разделе “Настройки” доступно управление параметрами объектного хранилища.
Управление файлами открывает файловый менеджер в панели управления, позволяющий взаимодействовать с объектами в выбранном хранилище.
Статистика
Для перехода в этот раздел в меню управления сервером нажмите на блок "Статистика".
Здесь можно найти следующие данные о бакете объектного хранилища:
- Расход входящего и исходящего трафика

Отображается суммарный объем данных, которые были загружены в бакет или запрошены из него клиентом.
- Количество запросов

Количество успешных запросов к бакету, разделенных по методам HTTP.
- Скорость трафика

Скорость передачи входящего и исходящего трафика.
- Квота

Статистика, показывающая динамику изменения объема хранимых в бакете данных.
По умолчанию для графика расхода трафика отображается статистика за месяц, для остальных графиков – за час. Вы можете выбрать желаемый период отображения в правом верхнем углу каждого графика.
Настройка бакета
В разделе настройки можно изменить следующие опции:
- Сгенерировать новые ключи доступа к хранилищу
- Изменить настройки CORS
- Добавить уникальный поддомен для обращения к файлам в хранилище
- Настроить политики доступа
- Удалить бакет
Ключи
Ключи нужны для безопасного доступа к вашим ресурсам в облаке. Access key – это идентификатор пользователя, а Secret key – это его секретный пароль. Если используемые вами ключи доступа оказались скомпрометированы, вы можете создать новые ключи, нажав на соответствующую кнопку в настройках бакета.

Ключи будут случайно сгенерированы и доступны для просмотра на странице хранилища, а также в настройках бакета.
Настройки CORS
CORS дает возможность хранилищу определить, какие внешние ресурсы и каким образом могут отправлять запросы к содержимому хранилища. Для настройки CORS нажмите “Добавить” в соответствующем поле.

В открывшемся окне вы можете задать:
- Origin – домен, для которого будет разрешен доступ к хранилищу. Необходимо указывать протокол и домен. Примеры корректных origin:
http://site.ru
https://example.site.ru
- Разрешенные HTTP-методы для взаимодействия с хранилищем. Доступны следующие опции:
- GET – получение объекта из хранилища
- PUT – обновление метаданных объекта
- DELETE – удаление объекта
- POST – загрузка объекта в хранилище
- HEAD – получение метаданных объекта
- Разрешенные заголовки – можно указать, какие HTTP-заголовки разрешены при отправке запроса со стороны клиента на сторону сервера.
Время кэширования CORS – определяет, как долго браузер будет кэшировать результат preflight-запроса OPTIONS.
Настройка политики CORS может потребоваться, когда часть ресурсов сайта запрашивается со стороннего ресурса – например, из объектного хранилища.
CORS применяется при запросах к сторонним ресурсам при использовании:
- функций
fetch()
иXMLHttpRequest
в скриптах - веб-шрифтов в атрибуте
@font-face
в CSS - текстур WebGL
- фреймов с изображениями и видео, добавленными в канвас с помощью
drawImage()
Для корректного доступа к контенту бакета необходимо разрешить доступ для домена ресурса, на котором размещается сайт. Например, если сайт https://example.com
запрашивает файл шрифта из бакета cdn.example.com
, необходимо указать https://example.com
в поле Origin.
Выставление разрешенных HTTP-методов позволяет ограничить разрешенные методы при запросах с указанного ресурса к бакету. Для примера с получением шрифтов из бакета достаточно будет указать метод GET.
В случае если для ваших задач требуется передавать дополнительные заголовки, их необходимо указать в поле “разрешенные заголовки”. Для каждого дополнительного заголовка должно быть указано соответствующее значение в настройках бакета. В ответе отправляются только запрошенные в запросе заголовки.
Во избежание лишних preflight-запросов OPTIONS при обращении к ресурсам в бакете можно задать время кэширования для них. Время необходимо указывать в секундах. Например, чтобы при каждом обращении к шрифту не выполнялся лишний preflight-запрос, можно указать кэширование этих запросов браузером. Укажем ему кэшировать данные запросы в течение суток – для этого зададим директиве значение 86400 (60 секунд * 60 минут * 24 часа).
Добавление поддомена

Вы можете добавить собственный поддомен для вашего бакета для удобного доступа к файлам в облачном хранилище S3. Для добавления поддомена необходимо выполнить следующие действия:
- Если основной домен делегирован NS-серверам Бегета, достаточно просто создать нужный вам поддомен в разделе “Домены и поддомены”, после чего выбрать его в выпадающем списке и сохранить настройки.
- Если основной домен делегирован сторонним NS-серверам, есть несколько вариантов:
- Задать CNAME-запись на стороне ваших NS-серверов, указав URL из раздела “Реквизиты доступа” в значении. После чего добавить поддомен в разделе “Домены и поддомены”, выбрать его в выпадающем списке в настройках бакета и сохранить настройки.
- Делегировать поддомен нашим NS-серверам, указав для поддомена NS-записи:
ns1.beget.com
ns2.beget.com
ns1.beget.pro
ns2.beget.pro
После чего добавить поддомен в разделе “Домены и поддомены”, выбрать его в выпадающем списке в настройках бакета и сохранить настройки.
В зависимости от ваших задач, использование поддомена может быть более удобно по сравнению с использованием bucket url – например, если вы используете объектное хранилище для хранения статического контента, удобнее будет указать адрес для статики в формате cdn.example.com
вместо bucket-id.s3.ru1.storage.beget.cloud
.
При использовании собственного домена не требуется указывать ID бакета в пути до файла, как при использовании path style – например, загрузив в корень бакета файл sample.js
и привязав cdn.example.com
в качестве поддомена, вместо https://s3.ru1.storage.beget.cloud/bucket-id/sample.js
файл будет доступен по ссылке https://cdn.example.com/sample.js
.
Политики доступа
В разделе настройки политики доступа есть возможность включения/отключения публичной политики. Включение публичной политики позволит получать доступ (скачивать) ко всем файлам в бакете по HTTPS без дополнительной авторизации при наличии ссылки на бакет и пути до файла. Для включения переведите переключатель в положение “Включено”.

Для отключения нажмите на переключатель повторно, переведя его в неактивное положение.

Управление файлами
Встроенный файловый менеджер позволяет удобно загружать файлы в облачное хранилище и управлять ими, в том числе помещать их в различные папки для их организации, переименовывать, настраивать их метаданные и создавать ссылки для скачивания.
Загрузка файла
Для загрузки файла в хранилище нажмите на кнопку “Загрузить файл”. В открывшемся диалоговом окне выберите нужный вам файл и дождитесь завершения загрузки.
Добавление папки
Для добавления папки нажмите кнопку “Добавить папку”. В появившемся окне задайте ее имя и подтвердите, нажав “Добавить”.

Управление папками
Для управления созданной папкой нажмите на кнопку меню () справа от названия директории. Доступны следующие действия:
Переименовать папку – при нажатии откроется диалоговое окно. Для переименования в появившемся окне введите новое имя директории и нажмите “Переименовать” для подтверждения.

Удалить папку – для удаления подтвердите удаление в появившемся окне. Обратите внимание, что вместе с удаляемой директорией будут также удалены все вложенные в нее файлы и папки.

Управление файлами
При взаимодействии с файлами действия:
- При нажатии на кнопку
происходит загрузка файла на ваше устройство.
- При нажатии на кнопку
откроется меню работы с файлом, в нем доступны следующие опции:
Переименовать файл – при нажатии откроется диалог переименования файла, для выполнения операции введите новое имя файла и подтвердите действие, нажав “Переименовать”.

Настроить метаданные – при нажатии откроется окно настройки заголовков, передаваемых клиенту при запросе файла.

- Content-Type – позволяет задать нужный MIME-тип файла для его корректной обработки клиентом.
- Cache-Control – позволяет выставить рекомендованное время кэширования файла клиентом.
- Content-Encoding – позволяет явно задать тип сжатия контента при передаче клиенту для его корректной обработки, доступные опции:
gzip
,zstd
. - Content-Disposition – указывает, как должен быть обработан файл клиентом, возможные значения:
inline
– стандартное значение, обозначает, что содержимое может быть внутри страницы либо в качестве веб-страницы;attachment
– сообщает, что данный файл должен быть загружен, в большинстве браузеров открывает диалог “Сохранить как”;attachment; filename="filename.format"
– аналогично предыдущей опции, но подставляет указанное значение в качестве имени файла;
Настройка метаданных может быть полезна, например, при предоставлении ссылки на скачивание файла – указав нужные заголовки, можно указать браузеру сразу скачивать файл вместо открытия его в браузере. Предположим, вы размещаете ссылку на скачивание примера кода html-страницы и хотите, чтобы он сразу скачивался вместо того, чтобы открываться как новая страница в браузере. В таком случае задайте заголовок Content-Disposition: attachment
.
Также метаданные могут быть полезны для задания заголовков кэширования при использовании объектного хранилища для отдачи статического контента сайта. Например, чтобы рекомендовать браузеру кэшировать файл на 60 дней, укажите соответствующее значение, сконвертировав количество дней в секунды:
60 дней * 24 часа * 60 минут * 60 секунд = 5184000.
Скачать по ссылке – позволяет сгенерировать ссылку на скачивание файла.

Выберите продолжительность работы ссылки в выпадающем меню (максимальное значение – 7 дней), после чего нажмите на ссылку – она будет скопирована в буфер обмена вашего устройства.
Удалить файл – выполняет соответствующее действие, для подтверждения нажмите “Удалить” в диалоговом окне.

Создание S3-хранилища доступно прямо из панели управления.
Желаем удачи с хранением данных!
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.