О сервисе
VK Object Storage — это объектное хранилище данных, основанное на протоколе S3. Оно подходит для хранения данных большого объема, к которым нечасто обращаются. Работать с VK Object Storage можно в личном кабинете VK Cloud, с помощью интерфейса командной строки AWS CLI, а также ряда других инструментов.
VK Object Storage отличает:
- низкая стоимость хранения данных в сравнении с другими типами хранилищ в VK Cloud;
- высокая масштабируемость и доступность;
- простота интеграции с приложениями.
Данные в VK Object Storage хранятся в бакетах в виде независимых объектов и их метаданных.
Бакет — это контейнер для хранения объектов. В бакет может быть загружено любое количество объектов. Общий объем объектов в бакете также неограничен. Пользователь, создавший бакет, получает полные права доступа к бакету и объектам в нем и может делиться этими правами с другими.
У каждого бакета есть имя, которое используется для доступа к объектам внутри него. Имя должно удовлетворять определенным требованиям. После создания бакета изменить его имя нельзя.
В проекте можно создать несколько бакетов, но нельзя вложить один бакет в другой. Внутри каждого бакета можно построить иерархию директорий. Для этого к именам объектов нужно добавить префиксы, которые VK Object Storage интерпретирует как имена директорий.
Бакет можно использовать для хостинга статических сайтов, привязав к нему свой домен, а также в сервисе CDN в качестве источника.
В VK Object Storage поддерживаются:
- автоматическое удаление объектов из бакета по заданным правилам;
- настройка уведомлений о событиях в бакете;
- синхронизация содержимого бакета и локальной директории;
- кросс-доменные запросы ресурсов в бакете по технологии CORS.
Имя бакета должно:
-
быть уникальным для всего сервиса VK Object Storage.
-
содержать от 4 до 63 символов.
-
начинаться и заканчиваться буквой или цифрой.
-
состоять только из строчных латинских букв, цифр и символов:
.,-.Для лучшей совместимости рекомендуется избегать использования точек (
.) в именах бакетов. Если включить точки в имя сегмента, вы не сможете использовать адресацию в стиле виртуального хоста через HTTPS, если не выполните собственную проверку сертификата. Это связано с тем, что сертификаты безопасности, используемые для виртуального хостинга бакетов, не работают для бакетов с точками в их именах.Это ограничение не влияет на сегменты, используемые для статического хостинга веб-сайтов, поскольку статический хостинг веб-сайтов доступен только через HTTP.
Имя бакета не должно:
-
совпадать с именем других бакетов сервиса VK Object Storage.
-
начинаться с префикса
xn--. -
заканчиваться суффиксом
-ol-s3илиs3alias. -
начинаться или заканчиваться символами
-и.. -
содержать подряд две точки
.., дефис и точку-., точку и дефис.-.Примеры:
my..bucket,my-.bucket,my.-bucket. -
иметь формат IP-адреса или схожий с ним, например
192.168.5.4.
Имя бакета содержится в URL-адресах находящихся в нем объектов, поэтому не используйте в имени конфиденциальную информацию. Она будет отображаться в ссылке на объект, если вы предоставите публичный доступ к нему.
Объект — это файл, загруженный в хранилище, и его метаданные. Файл может быть любого формата, например: медиафайл, резервная копия, массив данных BigData.
Объекты в VK Object Storage хранятся в бакетах. В зависимости от размера файла используется стандартная или составная загрузка объекта в бакет.
При загрузке объекта ему назначаются:
- ключ объекта — специальный идентификатор, по которому осуществляется доступ к объекту;
- метаданные, описывающие свойства объекта;
- уровень доступа;
- класс хранения.
Наряду с операциями загрузки, скачивания, копирования и удаления объектов в VK Object Storage поддерживаются:
- изменение уровня доступа для объекта;
- предоставление доступа к объекту по подписанной ссылке;
- временная и постоянная блокировка объекта от удаления или перезаписи.
Ключ объекта — это комбинация имени объекта и префиксов к имени. Префиксы отделяются друг от друга и от имени объекта разделителем /. Префиксы необязательны, но позволяют организовывать структуру хранения объектов для более удобной их идентификации.
Модель данных VK Object Storage представляет собой плоскую структуру: вы создаете бакет, в котором хранятся объекты. Нет иерархии вложенных бакетов. Однако если в ключе указаны префиксы к имени объекта, VK Object Storage будет использовать их как имена директорий в бакете. Например, для объекта с ключом photos/myphoto1.jpg префиксом будет photos/. Если будет загружен новый объект с ключом photos/myphoto2.jpg, то они будут объединены общим префиксом photos/. Для удобства пользователя в файловых менеджерах и личном кабинете VK Cloud объекты photos/myphoto1.jpg и photos/myphoto2.jpg будут отображаться как файлы myphoto1.jpg и myphoto2.jpg в директории photos/.
При выборе имени объекта и префиксов рекомендуется следовать приведенным ниже правилам.
Ключ объекта состоит из символов Юникод. Длина ключа в кодировке UTF-8 — не более 1024 байт.
В ключе объекта вы можете использовать любой символ Юникод. Однако некоторые символы могут вызвать проблемы с рядом приложений и веб-протоколов. Чтобы избежать проблем, следуйте рекомендациям:
-
В ключе объекта рекомендуется использовать только латинские буквы, цифры и спецсимволы
/,!,-,_,.,*,',(,). Символ/отделяет друг от друга префиксы и имя объекта. -
Ключ объекта не должен:
- заканчиваться косой чертой
/; - содержать две точки подряд:
..; - состоять только из одной точки:
.; - состоять только из пробела или содержать ведущие или завершающие пробелы.
- заканчиваться косой чертой
-
В ключе объекта не рекомендуется использовать приведенные ниже символы. Некоторые из них нуждаются в кодировании при их использовании в URL-адресах, а некоторые являются непечатаемыми и могут не обрабатываться вашим браузером. Чтобы обеспечить корректную адресацию объекта с такими символами в ключе, требуется дополнительная обработка ключа объекта в коде.
Нежелательные символы:
- спецсимволы
$,&,@,=,;,:,+,\,%,,,?,#; - символы с ASCII-кодами
00h–1Fh(десятичные коды0–31); - символ
DELс ASCII-кодом7Fh(десятичный код127); - пробел, так как в некоторых случаях могут быть потеряны значимые последовательности пробелов, особенно при наличии нескольких пробелов;
- все невидимые символы Юникод.
- спецсимволы
У каждого объекта VK Object Storage есть метаданные. Это пары ключ/значение, описывающие свойства объекта. Различают метаданные, присваиваемые сервисом (например, класс хранения или дата создания), и пользовательские метаданные. Некоторые сервисные метаданные доступны пользователю для управления, в частности класс хранения объекта.
Вы можете установить метаданные объекта во время его загрузки. После загрузки напрямую изменить метаданные объекта нельзя. Единственный способ сделать это — скопировать объект. При копировании нужно указать ключ объекта одновременно в качестве источника и цели и задать для копии новые метаданные. Таким способом вы можете изменить:
- пользовательские метаданные,
- системные метаданные, управляемые пользователем, например класс хранения.
Метаданные, управляемые сервисом, при этом будут сброшены. Например, будет сброшена дата создания объекта.
Параметр | Лимит | Комментарий | Жесткий |
|---|---|---|---|
Количество аккаунтов | 25 шт. | ||
Количество бакетов | 100 шт. | ||
Количество объектов в бакете | не ограничено | ||
Размер одного файла | 32 ГБ для обычного файла, 320 ТБ для составной загрузки | ||
Размер одного бакета | не ограничено | ||
Рейт-лимит: обычные запросы | 1000 запросов/с | не ограничено, максимальное известное значение среди всех проектов: 9000 запросов/с | |
Рейт-лимит: запросы на листинг | 250 запросов/с | не ограничено, максимальное известное значение среди всех проектов: 500 запросов/с | |
Количество lifecycle-правил | 50 шт. |
Для работы с объектным хранилищем VK Object Storage доступны следующие инструменты:
- Личный кабинет VK Cloud.
- Интерфейсы командной строки: AWS CLI, s3cmd CLI.
- Файловые менеджеры: CyberDuck, WinSCP, Диск-О:, s3fs.
- Наборы инструментов разработчика: SDK для Java, .NET, JavaScript, Ruby, Python (Boto), PHP, Go, AWS-инструменты для PowerShell, Mobile SDK для iOS и Android.
- VK Object Storage API.
Классы хранения отличаются назначением и стоимостью хранения данных и доступны для бакетов, объектов и составных загрузок. В VK Cloud поддерживается несколько классов хранения:
-
Hotbox— для хранения и быстрой раздачи большого количества файлов для высоконагруженных сайтов, приложений, медиасервисов, онлайн-СМИ, сайтов с многопользовательским контентом и мобильных приложений. В API обозначается названиемSTANDARD. -
Icebox— для редко используемых данных: бэкапов, логов, медиаконтента, научных, статистических данных, а также рабочих архивов. В API обозначается названиемSTANDARD_IA. -
BackupBucket(только для бакетов) — для резервных копий инстансов, созданных как автоматически, так и вручную. Бакеты такого класса нельзя самостоятельно создать или удалить. После удаления резервных копий бакет BackupBucket может остаться пустым. Он необходим объектному хранилищу для дальнейшей работы с планами резервного копирования в проекте. В API обозначается названиемBACKUP.