О сервисе

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 поддерживаются:

Правила именования бакетов

Имя бакета должно:

  • быть уникальным для всего сервиса 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-кодами 00h1Fh (десятичные коды 031);
    • символ DEL с ASCII-кодом 7Fh (десятичный код 127);
    • пробел, так как в некоторых случаях могут быть потеряны значимые последовательности пробелов, особенно при наличии нескольких пробелов;
    • все невидимые символы Юникод.

Метаданные объекта

У каждого объекта VK Object Storage есть метаданные. Это пары ключ/значение, описывающие свойства объекта. Различают метаданные, присваиваемые сервисом (например, класс хранения или дата создания), и пользовательские метаданные. Некоторые сервисные метаданные доступны пользователю для управления, в частности класс хранения объекта.

Вы можете установить метаданные объекта во время его загрузки. После загрузки напрямую изменить метаданные объекта нельзя. Единственный способ сделать это — скопировать объект. При копировании нужно указать ключ объекта одновременно в качестве источника и цели и задать для копии новые метаданные. Таким способом вы можете изменить:

  • пользовательские метаданные,
  • системные метаданные, управляемые пользователем, например класс хранения.

Метаданные, управляемые сервисом, при этом будут сброшены. Например, будет сброшена дата создания объекта.

Лимиты

Параметр

Лимит

Комментарий

Жесткий

Количество аккаунтов

25 шт.

О сервисе

О сервисе

Количество бакетов

100 шт.

О сервисе

О сервисе

Количество объектов в бакете

не ограничено

О сервисе

О сервисе

Размер одного файла

32 ГБ для обычного файла, 320 ТБ для составной загрузки

О сервисе

О сервисе

Размер одного бакета

не ограничено

О сервисе

О сервисе

Рейт-лимит: обычные запросы

1000 запросов/с

не ограничено, максимальное известное значение среди всех проектов: 9000 запросов/с

О сервисе

Рейт-лимит: запросы на листинг

250 запросов/с

не ограничено, максимальное известное значение среди всех проектов: 500 запросов/с

О сервисе

Количество lifecycle-правил

50 шт.

О сервисе

О сервисе

Инструменты работы с хранилищем

Для работы с объектным хранилищем VK Object Storage доступны следующие инструменты:

Классы хранения

Классы хранения отличаются назначением и стоимостью хранения данных и доступны для бакетов, объектов и составных загрузок. В VK Cloud поддерживается несколько классов хранения:

  • Hotbox — для хранения и быстрой раздачи большого количества файлов для высоконагруженных сайтов, приложений, медиасервисов, онлайн-СМИ, сайтов с многопользовательским контентом и мобильных приложений. В API обозначается названием STANDARD.

  • Icebox — для редко используемых данных: бэкапов, логов, медиаконтента, научных, статистических данных, а также рабочих архивов. В API обозначается названием STANDARD_IA.

  • BackupBucket (только для бакетов) — для резервных копий инстансов, созданных как автоматически, так и вручную. Бакеты такого класса нельзя самостоятельно создать или удалить. После удаления резервных копий бакет BackupBucket может остаться пустым. Он необходим объектному хранилищу для дальнейшей работы с планами резервного копирования в проекте. В API обозначается названием BACKUP.