Swift (old)
Это старая версия Swift API, которая использовалась до обновления объектного хранилища. URL и методы старой версии Swift API пока продолжают поддерживаться, но в будущем будут отключены. Мы рекомендуем использовать новую версию Swift API.
API Swift предназначен для приложений, которые работают с размещёнными в хранилище пользовательскими файлами или отправляют в хранилище собственные данные. Взаимодействие с API Swift осуществляется с помощью стандартных HTTP-запросов. В документации описаны доступные на текущий момент вызовы API, форматы запросов и ответов. На текущий момент с помощью API Swift можно выполнять следующие операции:
- получать информацию об учетной записи, контейнерах и папках;
- создавать и удалять контейнеры;
- загружать файлы в хранилище и скачивать их;
- копировать, перемещать и удалять файлы;
- устанавливать срок хранения файлов и т.д.
Формат URL
Хост для всех запросов к API — https://api.selcdn.ru
После авторизации доступ к хранилищу осуществляется по URL вида: https://api.selcdn.ru/v1/SEL_*****
, где *****
— номер учётной записи пользователя. В URL также указывается версия API (v1).
https://api.selcdn.ru/v1/SEL_*****/container_name
обычно используется для работы авторизованного клиента. Например, при работе с приватными контейнерами или при удалении/добавлении объектов, а также при работе с метаданными. Это формат URL в Openstack Object API. Подробнее в документации Openstack.
Домен ******.selcdn.ru
— это персональный номерной домен аккаунта, который можно узнать командой в заголовке X-Storage-Url:
curl -i \
-H 'X-Auth-User: *****' \
-H 'X-Auth-Key: *****' \
https://api.selcdn.ru/auth/v1.0
Этот домен используют для раздачи статичного контента из публичных контейнеров. На этот домен делается CNAME-запись при использовании своих доменов, которые привязывают к контейнеру, и данные, которые раздаютс я через этот домен — кэшируются, что ускоряет отдачу контента.
Оба варианта будут работать, но api.selcdn.ru
не будет кэшироваться.
Персональный домен аккаунта также можно узнать в панели управления в настройках контейнера в разделе Домены.
Получить домен с помощью API можно следующим запросом:
curl -i \
-H 'X-Auth-User: *' \
-H 'X-Auth-Key: *' \
https://auth.selcdn.ru/
В будущем мы планируем отказываться от номерных доменов, поэтому рекомендуется использовать ссылки типа https://api.selcdn.ru/v1/SEL_*****
.
Доступ к API
Для успешного выполнения запросов к API необходимо:
- быть зарегистрированным пользователем Selectel;
- иметь достаточную сумму на балансе;
- иметь логин и пароль для доступа к хранилищу;
- получить уникальный ключ доступа (токен), который будет передаваться во всех запросах.
Авторизация и получение токена
В этом разделе описаны способы авторизации и получения токена для работы с API. Пул — ru-1, для программного обеспечения, которое требует указания пула (прим. --storage-openstack-region
).
При использовании всех трёх способов обратите внимание на следующие моменты:
- срок действия токена составляет 24 часа;
- по прошествии 24 часов с момента последнего получения токена API будет возвращать ответы с кодом 401, в этом случае токен придётся получать заново;
- если запросить токен через 12 часов с момента последней авторизации, то он будет обновлен, а полученный ранее токен станет недействительным.
Авторизация по протоколу v1
Пример запроса
curl -i -XGET https://api.selcdn.ru/auth/v1.0 -H "X-Auth-User: *****" -H "X-Auth-Key: $password"
При удачном выполнении запроса будет возвращён ответ с кодом 204 (No Content).
Пример ответа
HTTP/1.1 204 No Content
Content-Type: text/plain; charset=utf-8
X-Storage-Token: $token
X-Content-Type-Options: nosniff
X-Expire-Auth-Token: *****
X-Auth-Token: $token
X-Storage-Url: https://api.selcdn.ru/v1/SEL_*****
Параметры запроса
Пароль для доступа к хранилищу указан в панели управления.
Параметры ответа
Авторизация по протоколу v2
Пример запроса
curl -i -XPOST https://api.selcdn.ru/v2.0/tokens -H "Content-type: application/json" -d '{"auth": {"passwordCredentials": {"username":"*****", "password":"pA$sW0rD"}}}'
Пример ответа
HTTP/1.1 200 OK
Content-Length: 423
Content-Type: application/json
{"access":{"token":{"id":"49a049462d6943d55b2ccc85abd5fdae","expires":"2016-05-20T13:12:45\n","tenant":{"id":"00000","name":"00000"}},"user":{"id":"00000","name":"00000","roles":[]},"serviceCatalog":[{"endpoints":[{"region":"common","adminURL":"https://api.selcdn.ru/v1/SEL_00000","internalURL":"https://api.selcdn.ru/v1/SEL_0000","publicURL":"https://api.selcdn.ru/v1/SEL_00000"}],"type":"object-store","name":"swift"}]}}
Авторизация по протоколу v3
Пример запроса
curl -i -XPOST https://api.selcdn.ru/v3/auth/tokens -d '{"auth": { "identity": { "methods": ["password"], "password": { "user": { "id": "*****", "password": "pA$sW0rD"}}}}}'
Пример ответа
HTTP/1.1 200 OK
Content-Length: 807
Content-Type: application/json
X-Subject-Token: $token