Selectel Storage (old)
Это старая версия Selectel Storage API, которая использовалась до обновления объектного хранилища 29.09.2023. URL и методы старой версии Selectel Storage API пока продолжают поддерживаться, но в будущем будут отключены. Мы рекомендуем использовать новую версию Selectel Storage API.
Объектное хранилище предоставляет разработчикам возможность интеграции с собственными приложениями и сайтами. Взаимодействие с хранилищем организовано на базе REST API. В документации описаны доступные на текущий момент вызовы REST API Storage, форматы запросов и ответов. На текущий момент с помощью запросов к REST API можно выполнять следующие операции:
- создавать ссылки, по которым сторонние пользователи могут загружать файлы в хранилище;
- работать с версиями файлов;
- создавать пользователей и задавать для них настройки доступа к хранилищу;
- скачивать и распаковывать архивы;
- работать со специальными страницами и т.д.
Способы авторизации и получения токена для работы с API описаны в разделе Авторизация и получение токена инструкции Swift API (old).
Ограничения для дополнительных пользователей
Дополнительные пользователи имеют ограничения при использовании API, поэтому следующие действия необходимо выполнять от имени основного пользователя Объектного хранилища:
- создание контейнера;
- удаление нескольких файлов (с помощью
?bulk-delete=true
); - создание или изменение пользователей;
- работа с доменами и пользовательскими SSL-сертификатами;
- сброс кэша CDN;
- получение логов;
- создание временных токенов (
/temptokens
).
Операции с контейнерами
Создание галереи изображений
Параметры запроса
Пример запроса
curl -i -XPUT https://api.selcdn.ru/v1/SEL_*****/container -H "X-Auth-Token: $token" -H "X-Container-Metatype: gallery"
В случае удачного выполнения запроса API возвращает ответ с кодом 204.
Пример ответа
HTTP/1.1 202 Accepted
Content-Length: 76
Content-Type: text/html; charset=UTF-8
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers:
Скачивание контейнера в виде zip-архива
Содержимое любого контейнера можно скачать в виде zip-архива. Для этого к ссылке на контейнер нужно добавить query-параметр download-all-as-zip=[имя архива], например:
wget https://api.selcdn.ru/v1/SEL_*****/container_name/?download-all-as-zip=container_name.zip
В публичных контейнерах функционал скачивания zip-архива отключен по умолчанию, чтобы его включить надо установить заголовок X-Container-Meta-Allow-ZipDownload: true, пример:
curl -i -XPUT https://api.selcdn.ru/v1/SEL_***/container_name -H "X-Auth-Token: $token" -H "X-Container-Meta-Allow-ZipDownload: true"
Значение этого заголовка X-Container-Meta-Allow-ZipDownload в приватных контейнерах игнорируется.
Для скачивания содержимого любого публичного контейнера в виде zip-архива могут быть использованы следующие команды:
curl -i -XGET https://api.selcdn.ru/v1/SEL_*****/container?download-all-as-zip=test.zip -o name.zip
Для скачивания содержимого любого приватного контейнера в виде zip-архива могут быть использованы следующие команды:
curl -i -XGET https://api.selcdn.ru/v1/SEL_*****/container?download-all-as-zip=test.zip -H "X-Auth-Token: $token" -o name.zip
Для просмотра содержимого скачанного архива используйте команду:
unzip -l name.zip
Archive: name.zip
warning [name.zip]: 274 extra bytes at beginning or within zipfile (attempting to process anyway)
Length Date Time Name
--------- ---------- ----- ----
555436 1980-00-00 00:00 IMG_20180802_121146.jpg
39 1980-00-00 00:00 copied_file
245473 1980-00-00 00:00 mergetree.pdf
--------- -------
800948 3 files
Описываемая операция предназначена в первую очередь для упрощения скачивания, а не для экономии трафика, поэтому файлы в архиве не сжимаются.
К оличество объектов в одном контейнере не должно превышать 10 000, иначе команда не сработает и вернет ошибку.
Можно скачивать объекты, начинающиеся на один заданный префикс (например, IMG), в виде zip-архива, указав данный префикс IMG в параметре IMG?download-all-as-zip:
curl -i -XGET https://*****.selcdn.ru/container/?IMG?download-all-as-zip=test.zip -H "X-Auth-Token: $token" -o name.zip
Примечание: если среди объектов будет папка, начинающаяся на этот же префикс, то будет скачана и она вместе со всем содержимым.
Скачивание папки в виде zip-архива
Содержимое любой папки можно скачать в виде zip-архива. Для этого к ссылке на папку нужно добавить query-параметр download-all-as-zip=[имя архива], например:
wget https://api.selcdn.ru/v1/SEL_*****/container_name/folder/?download-all-as-zip=container_name.zip
Для скачивания содержимого любой папки в виде zip-архива могут быть использованы следующие команды:
curl -i -XGET https://*****.selcdn.ru/container/folder?download-all-as-zip=test.zip -H "X-Auth-Token: $token" -o name.zip
Для просмотра содержимого скачанного архива используйте команду:
unzip -l name.zip
Archive: name.zip
warning [name.zip]: 274 extra bytes at beginning or within zipfile (attempting to process anyway)
Length Date Time Name
--------- ---------- ----- ----
555436 1980-00-00 00:00 IMG_20180802_121146.jpg
39 1980-00-00 00:00 copied_file
245473 1980-00-00 00:00 mergetree.pdf
--------- -------
800948 3 files
Описываемая операция предназначена в первую очередь для упрощения скачивания, а не для экономии трафика, поэтому файлы в архиве не сжимаются.
Количество объектов в одной папке не должно превышать 10 000, иначе команда не сработает и вернет ошибку.
Работа с файлами
Распаковка архивов
Архивы в формате *.tar, *.tar.gz и *.gzip могут быть распакованы сразу после загрузки в хранилище. Чтобы распаковать архив, в запрос на загрузку файла нужно добавить query-параметр extract-archive:
curl -i -XPUT https://api.selcdn.ru/v1/SEL_*****/new_container/archive.tar.gz/?extract-archive=tar.gz \
-H "X-Auth-Token: $token" -T "archive.tar.gz"