Аутентификация в API Object Storage
Вы можете работать с Object Storage с помощью следующих типов API:
AWS S3 API
Для аутентификации в AWS S3 API и работы с Terraform и другими поддерживаемыми инструментами используйте статический ключ доступа. Статический ключ доступа выпускается на сервисный аккаунт, и все действия с использованием этого ключа выполняются от имени этого сервисного аккаунта. Подробнее см. Как пользоваться S3 API.
Полный перечень методов S3 API см. в Справочнике S3 API.
Примечание
Сервисный аккаунт может просматривать список бакетов только в том каталоге, в котором он был создан.
Сервисный аккаунт может выполнять действия с объектами в бакетах, которые созданы в каталогах, отличных от каталога сервисного аккаунта. Для этого назначьте сервисному аккаунту роли на нужный каталог или бакет в нем.
Yandex Cloud gRPC и REST API
Для аутентификации в Yandex Cloud gRPC и REST API получите IAM-токен. Подробнее о получении IAM-токена для разных типов аккаунтов:
Полученный IAM-токен указывайте при обращении к ресурсам Yandex Cloud через API. Передайте IAM-токен в заголовке Authorization
в следующем формате:
Authorization: Bearer <IAM-токен>
Полный перечень вызовов и методов Yandex Cloud API смотрите в справочниках gRPC API и REST API.
Пример использования Yandex Cloud API
В примере создается бакет со стандартным классом хранилища и размером 50 ГБ.
export IAM_TOKEN="<IAM-токен>"
grpcurl \
-H "Authorization: Bearer $IAM_TOKEN" \
-d '{
"name": "<имя_бакета>",
"folder_id": "<идентификатор_каталога>",
"default_storage_class": "STANDARD",
"max_size": "53687091200",
"anonymous_access_flags": [{
"read": false,
"list": false,
"configRead": false
}]
}' \
storage.api.cloud.yandex.net:443 \
yandex.cloud.storage.v1.BucketService/Create
Где:
IAM_TOKEN
— IAM-токен.name
— имя бакета.folder_id
— идентификатор каталога.default_storage_class
— класс хранилища.max_size
— размер бакета.anonymous_access_flags
— настройки доступа к бакету:read
— публичный доступ на чтение объектов.list
— публичный доступ к списку объектов.configRead
— публичный доступ на чтение настроек.
Результат:
{
"id": "e3ehmmasama1********",
"description": "create bucket",
"createdAt": "2023-08-10T06:32:19.836842Z",
"createdBy": "ajego134p5h1********",
"modifiedAt": "2023-08-10T06:32:19.836842Z",
"done": true,
"metadata": {"@type":"type.googleapis.com/yandex.cloud.storage.v1.CreateBucketMetadata","name":"<имя_бакета>"},
"response": {"@type":"type.googleapis.com/yandex.cloud.storage.v1.Bucket","acl":{},"anonymousAccessFlags":{"read":false,"list":false},"createdAt":"2023-08-10T06:32:17.557756Z","defaultStorageClass":"STANDARD","folderId":"b1gmit33ngp3********","maxSize":"53687091200","name":"<имя_бакета>","versioning":"VERSIONING_DISABLED"}
}
export IAM_TOKEN="<IAM-токен>"
curl -X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $IAM_TOKEN" \
-d '{
"name": "<имя_бакета>",
"folderId": "<идентификатор_каталога>",
"defaultStorageClass": "STANDARD",
"maxSize": "53687091200",
"anonymousAccessFlags": {
"read": false,
"list": false,
"configRead": false
}
}' \
https://storage.api.cloud.yandex.net/storage/v1/buckets
Где:
IAM_TOKEN
— IAM-токен.name
— имя бакета.folderId
— идентификатор каталога.default_storage_class
— класс хранилища.maxSize
— размер бакета.anonymousAccessFlags
— настройки доступа к бакету:read
— публичный доступ на чтение объектов.list
— публичный доступ к списку объектов.configRead
— публичный доступ на чтение настроек.
Результат:
{
"done": true,
"metadata": {
"@type": "type.googleapis.com/yandex.cloud.storage.v1.CreateBucketMetadata",
"name": "<имя_бакета>"
},
"response": {
"@type": "type.googleapis.com/yandex.cloud.storage.v1.Bucket",
"anonymousAccessFlags": {
"read": false,
"list": false
},
"acl": {},
"name": "<имя_бакета>",
"folderId": "b1gmit33ngp3********",
"defaultStorageClass": "STANDARD",
"versioning": "VERSIONING_DISABLED",
"maxSize": "53687091200",
"createdAt": "2023-08-08T12:54:29.321021Z"
},
"id": "e3enrkcct2pt********",
"description": "create bucket",
"createdAt": "2023-08-08T12:54:32.111022Z",
"createdBy": "ajego134p5h1********",
"modifiedAt": "2023-08-08T12:54:32.111022Z"
}