Swift
С помощью Swift API (API на базе OpenStack Object Storage API) вы можете работать с ресурсами S3:
- просматривать информацию о количестве и объеме бакетов и объектов в рамках аккаунта;
- создавать и удалять бакеты;
- управлять лимитами бакетов;
- загружать, просматривать, копировать, перемещать, скачивать и удалять объекты в бакетах.
Для доступа к Swift API у пользователя должна быть роль с доступом к проекту в S3, подробнее в инструкции документации Управлять доступом в S3.
Авторизация
Авторизация в Swift API происходит с помощью IAM-токен для проекта, который передается в каждом запросе в заголовке X-Auth-Token.
Адрес (URL) можно посмотреть в списке URL.
Пример запроса для просмотра списка бакетов в проекте аккаунта:
curl -i \
-H 'X-Auth-Token: <x_auth_token>' \
'https://<swift_domain>/v1/<project_id>'
Укажите:
<x_auth_token>— IAM-токен для проекта;<swift_domain>— домен Swift API в пуле, в котором находится S3;<project_id>— идентификатор проекта. Посмотреть идентификатор можно в панели управления в разделе S3 → меню проектов → Управление проектами. Идентификатор указан под названием проекта.
Хранилище
Получить информацию о хранилище
Возвращает метаданные с информацией о количестве и объеме хранения бакетов и объектов.
Пример запроса
curl -i \
-H 'X-Auth-Token: <x_auth_token>' \
'https://<swift_domain>/v1/<project_id>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 204.
HTTP/1.1 204 No Content
Content-Length: 0
X-Account-Object-Count: 6
X-Timestamp: 1374058535.42927
X-Account-Meta-Temp-Url-Key: 00000
X-Account-Bytes-Used: 484474
X-Account-Container-Count: 3
X-Account-Meta-<...>: anyheader
X-Openstack-Requiest-Id: 0009ec57-2681-4b48-9105-71c57016edc6
X-Trans-Id: 0009ec57-2681-4b48-9105-71c57016edc6
Параметры ответа
Получить информацию о хранилище и список бакетов
Возвращает информацию о хранилище и список бакетов.
Один запрос выводит список, который может содержать до 10 000 бакетов. Если бакетов больше, используйте дополнительные запросы с query-параметром marker.
Чтобы получить дополнительную информацию о бакетах (размер, дату обновления и т. д.), используйте query-параметр ?format=json.
Пример запроса
curl \
-H 'X-Auth-Token: <x_auth_token>' \
'https://<swift_domain>/v1/<project_id>'
Пример ответа
bucket1
bucket2
bucket3
Управлять метаданными хранилища
Устанавливает, заменяет или удаляет метаданные, переданные в заголовке из запроса.
Заголовки запроса
Пример запроса
curl -i -XPOST \
-H 'X-Auth-Token: <x_auth_token>' \
-H 'X-Account-Meta-<...>: anyheader' \
'https://<swift_domain>/v1/<project_id>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 204.
Бакеты
Получить метаданные бакета
Выводит метаданные бакета, включая количество объектов, объем хранения (в байтах) и заголовки бакета.
Пример запроса
curl -i \
-H 'X-Auth-Token: <x_auth_token>' \
'https://<swift_domain>/v1/<project_id>/<bucket_name>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 204.
Получить список объектов и метаданных бакета
Возвращает метаданные бакета и выводит список объектов.
Один запрос выводит список, который может содержать до 10 000 объектов. Если объектов больше, используйте дополнительные запросы с query-параметрами marker и limit.
Пример запроса
curl -i \
-H 'X-Auth-Token: <x_auth_token>' \
'https://<swift_domain>/v1/<project_id>/<bucket_name>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 200 или 204.
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/plain
X-Container-Bytes-Used: 0
X-Container-Meta-Quota-Bytes: 52428800
X-Container-Meta-Quota-Count: 1000
X-Container-Meta-Type: public
X-Container-Object-Count: 1
X-Container-Storage-Policy-Index: 0
X-Container-Storage-Policy-Name: Policy-0
X-Openstack-Request-Id: 585ec880-d654-485f-949e-c0dc24926d00
X-Storage-Policy: Policy-0
X-Timestamp: 1688648194.11923
X-Trans-Id: 585ec880-d654-485f-949e-c0dc24926d00
X-Versions-Enabled: true
Date: Thu, 13 Jul 2023 15:13:53 GMT
Content-Length: 120
Object1
Object2
Object3
Параметры ответа
Создать бакет
Создает бакет с параметрами, указанными в запросе.
Заголовки запроса
Пример запроса
curl -i -XPUT \
-H 'X-Auth-Token: <x_auth_token>' \
-H 'X-Container-Meta-Type: public' \
-H 'X-Container-Meta-<...>: anyheader' \
'https://<swift_domain>/v1/<project_id>/<bucket_name>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 201.
HTTP/1.1 201 Created
Content-Length: 0
Content-Type: text/html
X-Openstack-Requiest-Id: 0009ec57-2681-4b48-9105-71c57016edc6
X-Trans-Id: 0009ec57-2681-4b48-9105-71c57016edc6
Управлять метаданными бакета
Устанавливает, заменяет или удаляет метаданные, переданные в заголовке из запроса.
Заголовки запроса
Пример запроса
Изменение типа бакета:
curl -i -XPOST \
-H 'X-Auth-Token: <x_auth_token>' \
-H 'X-Container-Meta-Type: private' \
-H 'X-Versions-Enabled: true' \
'https://<swift_domain>/v1/<project_id>/<bucket_name>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 204.
Удалить бакет
Удаляет бакет в хранилище. Перед удалением бакета удалите в нем все объекты.
Пример запроса
curl -i -XDELETE \
-H 'X-Auth-Token: <x_auth_token>' \
'https://<swift_domain>/v1/<project_id>/<bucket_name>'
Пример ответа
В случае успеха запрос возвращает ответ с кодом 204.
HTTP/1.1 204 No Content
Content-Length: 0
Content-Type: Text/html; charset=UTF-8