Возможности по управлению объектами и бакетами
Сервис VK Object Storage поддерживает следующие возможности для работы с бакетами и объектами:
- стандартная и составная загрузка объектов в бакет;
- настройка автоматического удаления объектов (lifecycle);
- копирование объектов;
- блокировка удаления объектов (object lock);
- уведомления о событиях в бакете;
- набор инструментов для управления доступом к бакетам и объектам;
- API для программного управления бакетами и объектами с помощью стандартных HTTP-запросов.
В бакет можно загружать файлы любого типа, например, изображения, резервные копии, видео. После загрузки он сохраняется как объект VK Object Storage.
В зависимости от объема файла рекомендованы различные способы загрузки:
- До 1 ГБ — стандартная загрузка любым удобным способом: через личный кабинет IAM Only, файловые менеджеры, CLI, SDK или API.
- Свыше 1 ГБ — CLI, SDK или API.
- Свыше 32 ГБ — только составная загрузка через CLI, SDK или API.
При составной загрузке данные разделяются на несколько частей и загружаются независимо по отдельности и в любом порядке. Если передача какой-либо части не удалась, ее можно передать повторно, не затрагивая другие части. Когда все части загружены, хранилище собирает их вместе в заданном порядке и создает объект.
Преимущества составной загрузки:
- Части большого файла можно загружать параллельно, тем самым сокращая время загрузки.
- Если какая-то часть не была загружена из-за ошибки сети, ее быстрее перезагрузить, чем большой файл.
- Можно приостановить загрузку и продолжить ее позднее.
- Начать загрузку можно до того, как будет известен окончательный размер файла, т.е. можно загружать файл по мере его создания.
VK Object Storage позволяет создавать копии хранимых объектов. Копирование выполняется с помощью CLI, SDK, файлового менеджера или API.
С помощью копирования вы можете:
-
Создавать дополнительные копии объектов в том же самом или другом бакете.
-
Переименовывать объекты.
Прямое переименование объектов в бакете не поддерживается. Обойти это ограничение можно, создав копию объекта с новым именем и затем удалив исходный объект. В файловых менеджерах эти действия выполняются автоматически.
-
Изменять метаданные объекта.
При загрузке объекта в бакет ему присваиваются метаданные в формате ключ/значение. Единственный способ изменить их после загрузки — создать копию объекта с тем же именем, указав новые метаданные в запросе на копирование. Таким способом можно изменить пользовательские метаданные и некоторые системные метаданные, например класс хранения.
-
Копировать теги исходного объекта или задать новые теги новому объекту.
VK Object Storage позволяет настроить отправку уведомлений о событиях в бакете с помощью вебхуков (webhooks). В каждом вебхуке указывается тип события и URL-адрес, на который приходит сообщение или HTTP/HTTPS-запрос, когда в бакете происходит событие указанного типа. Можно создать вебхуки для следующих типов событий:
- создание объекта;
- копирование объекта;
- удаление объекта;
- завершение составной загрузки.
Использование вебхуков позволяет:
- информировать пользователя о произошедшем в бакете событии;
- настроить обработку и конвертирование файлов после загрузки;
- настроить взаимодействие с внешними системами;
- подключить логирование для объектного хранилища.
Конфигурация вебхуков для бакета создается через личный кабинет IAM Only или с помощью API.
Маркировка объектов (object tags) позволяет их логически группировать. Маркировка устанавливается тегами (tag). Тег представляет собой пару ключ/значение.
Ограничения:
-
Для объекта с тегом:
- У объекта может быть до 10 тегов.
- Теги, связанные с объектами, должны иметь уникальные ключи.
-
Для ключа и значения тега:
- Длина ключа — до 128 Unicode-символов, но не более 256 байт.
- Длина значения — до 256 Unicode-символов, но не более 528 байт.
- Кодировка — UTF-16.
- Ключ и значение регистрозависимы.
- Допустимые символы — буквы латинского алфавита, цифры, пробел и символы
+,-,=,.,_,:,/.
Теги могут добавляться к новым объектам при их загрузке или к существующим объектам.
VK Object Storage предоставляет RESTful XML API для программного управления бакетами и объектами с помощью стандартных HTTP-запросов. VK Object Storage API предназначен для взаимодействия с Amazon Web Service S3 API и имеет совместимый с ним интерфейс. Для доступа к VK Object Storage API используется протокол, созданный для сервиса AWS S3.
Запросы к API вы можете передавать через CLI, SDK или файловые менеджеры.
Некоторые методы AWS S3 API в сервисе VK Object Storage не реализованы. Запросы для таких методов возвращают S3-совместимый ответ об ошибке NotImplemented в формате XML.
Метод | Описание |
|---|---|
Бакет | |
| Создает новый бакет |
| Удаляет бакет |
| Проверяет, существует ли бакет и есть ли у пользователя права доступа к нему |
| Возвращает список бакетов |
| Возвращает регион бакета |
Объект | |
| Создает копию существующего объекта (в том же или в другом бакете) |
| Удаляет объект из бакета |
| Удаляет несколько объектов одним запросом |
| Возвращает содержимое объекта |
| Возвращает метаданные объекта |
| Возвращает до 1000 объектов. Это устаревший метод, поддерживается для совместимости |
| Возвращает до 1000 объектов. Актуальный метод |
| Добавляет объект в бакет |
| Возвращает только указанный байтовый диапазон объекта (range-запрос) |
| Обрабатывает предварительный CORS-запрос (метод |
Блокировка объектов (object lock) | |
| Возвращает текущее состояние бессрочной (legal hold) блокировки для объекта |
| Возвращает информацию о текущей временной блокировке (retention) объекта |
| Устанавливает или снимает бессрочную (legal hold) блокировку объекта |
| Создает или изменяет настройки блокировок по умолчанию в бакете |
| Устанавливает или обновляет временную блокировку (retention) для объекта |
Управление доступом (ACL) | |
| Возвращает ACL (список управления доступом) объекта |
| Устанавливает ACL объекта |
| Возвращает ACL бакета |
| Устанавливает ACL бакета |
Жизненный цикл объектов (lifecycle) | |
| Возвращает конфигурацию жизненного цикла бакета |
| Создает или полностью заменяет конфигурацию жизненного цикла бакета |
| Удаляет конфигурацию жизненного цикла бакета |
Составная загрузка (multipart) | |
| Прерывает незавершенную составную загрузку и освобождает ресурсы |
| Завершает составную загрузку, собирая части в финальный объект |
| Инициирует составную загрузку объекта |
| Возвращает список текущих незавершенных составных загрузок в бакете |
| Возвращает список загруженных частей объекта |
| Загружает часть объекта |
| Загружает часть объекта, скопировав данные из существующего объекта |
Политики владения объектами (ownership controls) | |
| Устанавливает или обновляет правила, определяющие владельца загружаемых в бакет объектов |
| Удаляет политики по управлению владельцем объектов в бакете |
Маркировка объектов тегами (tagging) | |
| Возвращает теги, назначенные объекту |
| Присваивает или обновляет теги объекта |
| Удаляет теги объекта |
Кросс-доменные запросы (CORS) | |
| Возвращает текущую конфигурацию CORS бакета |
| Устанавливает или заменяет конфигурацию CORS бакета |
| Удаляет конфигурацию CORS бакета |
Уведомления | |
| Возвращает текущую конфигурацию уведомлений для бакета |
| Устанавливает или обновляет конфигурацию уведомлений |
| Удаляет конфигурацию уведомлений у бакета |