Начало работы с AWS S3 API в Yandex Object Storage
AWS S3 API
С помощью AWS S3 API вы создадите бакет, загрузите в него объект, получите список объектов в бакете, скачаете объект из бакета, удалите объект и удалите бакет.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Создайте сервисный аккаунт и подготовьте данные для аутентификации
Для аутентификации в AWS S3 API вы можете использовать IAM-токен или статический ключ доступа.
Важно
Рекомендованным способом аутентификации в AWS S3 API является аутентификация с помощью IAM-токена: этот способ более безопасен и, в отличие от аутентификации с помощью статического ключа, не требует создания подписи запроса.
IAM-токен может выпускаться как для пользовательского, так и для сервисного аккаунта, а действия с использованием IAM-токена выполняются от имени того аккаунта, для которого этот IAM-токен был выпущен. При этом выполнять действия с бакетами и объектами безопаснее от имени сервисного аккаунта.
-
Назначьте сервисному аккаунту роль
storage.editorна каталог. Это позволит работать от имени этого сервисного аккаунта со всеми бакетами в каталоге. -
Получите IAM-токен для созданного сервисного аккаунта. Подробнее читайте в инструкции Получение IAM-токена для сервисного аккаунта.
Совет
Чтобы быстро получить IAM-токен сервисного аккаунта с помощью Yandex Cloud CLI, вы можете воспользоваться имперсонацией.
Статический ключ доступа выпускается только для сервисного аккаунта, и все действия с использованием статического ключа выполняются от имени этого сервисного аккаунта.
Примечание
Чтобы использовать AWS S3 API с аутентификацией с помощью статического ключа доступа напрямую, без SDK и приложений, необходимо самостоятельно подписывать запросы. Процесс формирования запроса и подписи вы можете отработать с помощью AWS CLI в режиме отладки.
-
Назначьте сервисному аккаунту роль
storage.editorна каталог. Это позволит работать от имени этого сервисного аккаунта со всеми бакетами в каталоге. -
Создайте статический ключ доступа.
В результате вы получите данные статического ключа доступа. Для аутентификации в Object Storage вам понадобятся:
key_id— идентификатор статического ключа доступа;secret— секретный ключ.
Сохраните
key_idиsecret, так как повторное получение значения ключа будет невозможно. -
Установите утилиту curl
.Начиная с версии 8.3.0
утилитаcurlпри работе с AWS S3 API поддерживает автоматическое формирование строки для подписи, подпись запроса и подстановку необходимых заголовков.При использовании более ранних версий утилиты
curlвы можете формировать необходимые заголовки и подписывать запросы вручную.
Создайте бакет
-
Задайте переменные, содержащие необходимые данные:
IAM_TOKEN="<содержимое_IAM-токена>" BUCKET_NAME="<имя_бакета>"Где:
IAM_TOKEN— тело полученного ранее IAM-токена сервисного аккаунта.BUCKET_NAME— имя создаваемого бакета.
-
Выполните HTTP-запрос:
curl \ --request PUT \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}"Результат:
... < HTTP/2 200 < server: nginx < date: Wed, 14 Jan 2026 08:37:55 GMT < content-type: application/octet-stream < location: /my-sample-bucket < x-amz-request-id: cd6bd702******** < * Connection #0 to host storage.yandexcloud.kz left intact
-
Задайте переменные, содержащие необходимые данные:
Версия curl 8.3.0 и выше
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>"Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя создаваемого бакета.
Версия curl 8.2.1 и ниже
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" DATE_VALUE=`date -R` STRING_TO_SIGN="PUT\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n/${BUCKET_NAME}" SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl sha1 -hmac ${AWS_SECRET_KEY} -binary | base64`Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя создаваемого бакета.
-
Выполните HTTP-запрос:
Версия curl 8.3.0 и выше
curl \ --request PUT \ --user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \ --aws-sigv4 "aws:amz:kz1:s3" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}"Результат:
... < HTTP/2 200 < server: nginx < date: Wed, 14 May 2025 20:00:04 GMT < content-type: application/octet-stream < location: /my-sample-bucket < x-amz-request-id: a5cf0b8d******** < * Connection #0 to host storage.yandexcloud.kz left intactВерсия curl 8.2.1 и ниже
curl \ --request PUT \ --verbose \ --header "Host: storage.yandexcloud.kz" \ --header "Date: ${DATE_VALUE}" \ --header "Authorization: AWS ${AWS_KEY_ID}:${SIGNATURE}" \ "https://storage.yandexcloud.kz/${BUCKET_NAME}"Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 07:06:22 GMT < content-type: application/octet-stream < location: /my-sample-bucket < x-amz-request-id: b8c1bd45******** < * Connection #0 to host storage.yandexcloud.kz left intact
Загрузите объект в бакет
-
Задайте переменные, содержащие необходимые данные:
IAM_TOKEN="<содержимое_IAM-токена>" BUCKET_NAME="<имя_бакета>" LOCAL_FILE="<путь_к_локальному_файлу>" OBJECT_PATH="<ключ_объекта>"Где:
IAM_TOKEN— тело полученного ранее IAM-токена сервисного аккаунта.BUCKET_NAME— имя бакета, в который загружается файл.LOCAL_FILE— путь к локальному файлу, который вы хотите загрузить в бакет. Например:./sample.txt.OBJECT_PATH— ключ, который будет присвоен объекту в бакете. Например:new-prefix/sample-object.txt.
-
Выполните HTTP-запрос:
curl \ --request PUT \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --upload-file "${LOCAL_FILE}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}"Результат:
... < HTTP/2 200 < server: nginx < date: Wed, 14 Jan 2026 10:42:41 GMT < content-type: text/plain < etag: "65a8e27d8879283831b664bd********" < x-amz-request-id: 646150ef******** < * Connection #0 to host storage.yandexcloud.kz left intact
-
Задайте переменные, содержащие необходимые данные:
Версия curl 8.3.0 и выше
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" LOCAL_FILE="<путь_к_локальному_файлу>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>"Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
LOCAL_FILE— путь к локальному файлу, который вы хотите загрузить в бакет. Например:./sample.txt.BUCKET_NAME— имя бакета, в который загружается файл.OBJECT_PATH— ключ, который будет присвоен объекту в бакете. Например:new-prefix/sample-object.txt.
Версия curl 8.2.1 и ниже
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" LOCAL_FILE="<путь_к_локальному_файлу>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>" DATE_VALUE=`date -R` STRING_TO_SIGN="PUT\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n/${BUCKET_NAME}/${OBJECT_PATH}" SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl sha1 -hmac ${AWS_SECRET_KEY} -binary | base64`Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
LOCAL_FILE— путь к локальному файлу, который вы хотите загрузить в бакет. Например:./sample.txt.BUCKET_NAME— имя бакета, в который загружается файл.OBJECT_PATH— ключ, который будет присвоен объекту в бакете. Например:new-prefix/sample-object.txt.
-
Выполните HTTP-запрос:
Версия curl 8.3.0 и выше
curl \ --request PUT \ --user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \ --aws-sigv4 "aws:amz:kz1:s3" \ --upload-file "${LOCAL_FILE}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}"Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 07:17:46 GMT < content-type: text/plain < etag: "f75a361db63aa4722fb8e083********" < x-amz-request-id: 40afeceb******** < * Connection #0 to host storage.yandexcloud.kz left intactВерсия curl 8.2.1 и ниже
curl \ --request PUT \ --upload-file "${LOCAL_FILE}" \ --verbose \ --header "Host: storage.yandexcloud.kz" \ --header "Date: ${DATE_VALUE}" \ --header "Authorization: AWS ${AWS_KEY_ID}:${SIGNATURE}" \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}"Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 07:23:08 GMT < content-type: text/plain < etag: "f75a361db63aa4722fb8e083********" < x-amz-request-id: 67ccce91******** < * Connection #0 to host storage.yandexcloud.kz left intact
Получите список объектов в бакете
-
Задайте переменные, содержащие необходимые данные:
IAM_TOKEN="<содержимое_IAM-токена>" BUCKET_NAME="<имя_бакета>"Где:
IAM_TOKEN— тело полученного ранее IAM-токена сервисного аккаунта.BUCKET_NAME— имя бакета, список объектов которого требуется получить.
-
Выполните HTTP-запрос:
curl \ --request GET \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}?list-type=2"Результат:
... < HTTP/2 200 < server: nginx < date: Wed, 14 Jan 2026 11:15:43 GMT < content-type: application/xml; charset=UTF-8 < content-length: 583 < x-amz-request-id: 91e2b09f05f16f54 < <?xml version="1.0" encoding="UTF-8"?> * Connection #0 to host storage.yandexcloud.kz left intact <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <KeyCount>1</KeyCount> <Name>my-sample-bucket</Name> <Prefix></Prefix> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>new-prefix/sample-object.txt</Key> <LastModified>2026-01-14T10:42:41.040Z</LastModified> <Owner> <ID>ajeg2b2et02f********</ID> <DisplayName>ajeg2b2et02f********</DisplayName> </Owner> <ETag>"65a8e27d8879283831b664bd********"</ETag> <Size>13</Size> <StorageClass>STANDARD</StorageClass> <TagSet></TagSet> </Contents> </ListBucketResult>
-
Задайте переменные, содержащие необходимые данные:
Версия curl 8.3.0 и выше
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>"Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя бакета, список объектов которого требуется получить.
Версия curl 8.2.1 и ниже
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" DATE_VALUE=`date -R` STRING_TO_SIGN="GET\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n/${BUCKET_NAME}" SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl sha1 -hmac ${AWS_SECRET_KEY} -binary | base64`Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя бакета, список объектов которого требуется получить.
-
Выполните HTTP-запрос:
Версия curl 8.3.0 и выше
curl \ --request GET \ --user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \ --aws-sigv4 "aws:amz:kz1:s3" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}?list-type=2"Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 07:44:41 GMT < content-type: application/xml; charset=UTF-8 < content-length: 569 < x-amz-request-id: cab0999d******** < <?xml version="1.0" encoding="UTF-8"?> * Connection #0 to host storage.yandexcloud.kz left intact <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <KeyCount>1</KeyCount> <Name>my-sample-bucket</Name> <Prefix></Prefix> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>text.txt</Key> <LastModified>2025-05-15T07:23:08.030Z</LastModified> <Owner> <ID>ajegtlf2q28a********</ID> <DisplayName>ajegtlf2q28a********</DisplayName> </Owner> <ETag>"f75a361db63aa4722fb8e083********"</ETag> <Size>103</Size> <StorageClass>STANDARD</StorageClass> <TagSet></TagSet> </Contents> </ListBucketResult>Версия curl 8.2.1 и ниже
curl \ --request GET \ --verbose \ --header "Host: storage.yandexcloud.kz" \ --header "Date: ${DATE_VALUE}" \ --header "Authorization: AWS ${AWS_KEY_ID}:${SIGNATURE}" \ "https://storage.yandexcloud.kz/${BUCKET_NAME}?list-type=2"Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 08:29:36 GMT < content-type: application/xml; charset=UTF-8 < content-length: 569 < x-amz-request-id: cb4b9a3d******** < <?xml version="1.0" encoding="UTF-8"?> * Connection #0 to host storage.yandexcloud.kz left intact <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <KeyCount>1</KeyCount> <Name>my-sample-bucket</Name> <Prefix></Prefix> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>text.txt</Key> <LastModified>2025-05-15T07:23:08.030Z</LastModified> <Owner> <ID>ajegtlf2q28a********</ID> <DisplayName>ajegtlf2q28a********</DisplayName> </Owner> <ETag>"f75a361db63aa4722fb8e083********"</ETag> <Size>103</Size> <StorageClass>STANDARD</StorageClass> <TagSet></TagSet> </Contents> </ListBucketResult>
Скачайте объект из бакета
-
Задайте переменные, содержащие необходимые данные:
IAM_TOKEN="<содержимое_IAM-токена>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>" LOCAL_FILE="<путь_к_локальному_файлу>"Где:
IAM_TOKEN— тело полученного ранее IAM-токена сервисного аккаунта.BUCKET_NAME— имя бакета, в котором находится скачиваемый объект.OBJECT_PATH— ключ скачиваемого объекта в бакете. Например:new-prefix/sample-object.txt.LOCAL_FILE— путь к локальному файлу, в который вы хотите сохранить скачанный объект. Например:./sample.txt.
-
Выполните HTTP-запрос:
curl \ --request GET \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}" \ > ${LOCAL_FILE}Результат:
... < HTTP/2 200 < server: nginx < date: Wed, 14 Jan 2026 11:22:01 GMT < content-type: application/octet-stream < content-length: 13 < accept-ranges: bytes < etag: "65a8e27d8879283831b664bd********" < last-modified: Wed, 14 Jan 2026 10:42:41 GMT < x-amz-request-id: 93c9edaf******** < { [13 bytes data] 100 13 100 13 0 0 69 0 --:--:-- --:--:-- --:--:-- 69 * Connection #0 to host storage.yandexcloud.kz left intact
-
Задайте переменные, содержащие необходимые данные:
Версия curl 8.3.0 и выше
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>" LOCAL_FILE="<путь_к_локальному_файлу>"Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя бакета, в котором находится скачиваемый объект.OBJECT_PATH— ключ скачиваемого объекта в бакете. Например:new-prefix/sample-object.txt.LOCAL_FILE— путь к локальному файлу, в который вы хотите сохранить скачанный объект. Например:./sample.txt.
Версия curl 8.2.1 и ниже
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>" LOCAL_FILE="<путь_к_локальному_файлу>" DATE_VALUE=`date -R` STRING_TO_SIGN="GET\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n/${BUCKET_NAME}/${OBJECT_PATH}" SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl sha1 -hmac ${AWS_SECRET_KEY} -binary | base64`Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя бакета, в котором находится скачиваемый объект.OBJECT_PATH— ключ скачиваемого объекта в бакете. Например:new-prefix/sample-object.txt.LOCAL_FILE— путь к локальному файлу, в который вы хотите сохранить скачанный объект. Например:./sample.txt.
-
Выполните HTTP-запрос:
Версия curl 8.3.0 и выше
curl \ --request GET \ --user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \ --aws-sigv4 "aws:amz:kz1:s3" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}" \ > ${LOCAL_FILE}Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 08:55:19 GMT < content-type: text/plain < content-length: 103 < accept-ranges: bytes < etag: "f75a361db63aa4722fb8e083********" < last-modified: Thu, 15 May 2025 07:23:08 GMT < x-amz-request-id: 1afc3ec9******** < { [103 bytes data] 100 103 100 103 0 0 1925 0 --:--:-- --:--:-- --:--:-- 1943 * Connection #0 to host storage.yandexcloud.kz left intactВерсия curl 8.2.1 и ниже
curl \ --request GET \ --verbose \ --header "Host: storage.yandexcloud.kz" \ --header "Date: ${DATE_VALUE}" \ --header "Authorization: AWS ${AWS_KEY_ID}:${SIGNATURE}" \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}" \ > ${LOCAL_FILE}Результат:
... < HTTP/2 200 < server: nginx < date: Thu, 15 May 2025 09:11:12 GMT < content-type: text/plain < content-length: 103 < accept-ranges: bytes < etag: "f75a361db63aa4722fb8e083********" < last-modified: Thu, 15 May 2025 07:23:08 GMT < x-amz-request-id: e86c7119******** < { [103 bytes data] 100 103 100 103 0 0 3433 0 --:--:-- --:--:-- --:--:-- 3433 * Connection #0 to host storage.yandexcloud.kz left intact
Скачанный объект сохранен в файл, путь к которому задан в переменной LOCAL_FILE.
Удалите объект в бакете
-
Задайте переменные, содержащие необходимые данные:
IAM_TOKEN="<содержимое_IAM-токена>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>"Где:
IAM_TOKEN— тело полученного ранее IAM-токена сервисного аккаунта.BUCKET_NAME— имя бакета, из которого удаляется объект.OBJECT_PATH— ключ удаляемого объекта в бакете. Например:new-prefix/sample-object.txt.
-
Выполните HTTP-запрос:
curl \ --request DELETE \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}"Результат:
... < HTTP/2 204 < server: nginx < date: Wed, 14 Jan 2026 11:26:02 GMT < x-amz-request-id: dba1c5e2******** < * Connection #0 to host storage.yandexcloud.kz left intact
-
Задайте переменные, содержащие необходимые данные:
Версия curl 8.3.0 и выше
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>"Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя бакета, из которого удаляется объект.OBJECT_PATH— ключ удаляемого объекта в бакете. Например:new-prefix/sample-object.txt.
Версия curl 8.2.1 и ниже
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" OBJECT_PATH="<ключ_объекта>" DATE_VALUE=`date -R` STRING_TO_SIGN="DELETE\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n/${BUCKET_NAME}/${OBJECT_PATH}" SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl sha1 -hmac ${AWS_SECRET_KEY} -binary | base64`Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя бакета, из которого удаляется объект.OBJECT_PATH— ключ удаляемого объекта в бакете. Например:new-prefix/sample-object.txt.
-
Выполните HTTP-запрос:
Версия curl 8.3.0 и выше
curl \ --request DELETE \ --user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \ --aws-sigv4 "aws:amz:kz1:s3" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}"Результат:
... < HTTP/2 204 < server: nginx < date: Thu, 15 May 2025 14:24:01 GMT < x-amz-request-id: 7d2f023c******** < * Connection #0 to host storage.yandexcloud.kz left intactВерсия curl 8.2.1 и ниже
curl \ --request DELETE \ --verbose \ --header "Host: storage.yandexcloud.kz" \ --header "Date: ${DATE_VALUE}" \ --header "Authorization: AWS ${AWS_KEY_ID}:${SIGNATURE}" \ "https://storage.yandexcloud.kz/${BUCKET_NAME}/${OBJECT_PATH}"Результат:
... < HTTP/2 204 < server: nginx < date: Thu, 15 May 2025 14:30:28 GMT < x-amz-request-id: 7dc0c426******** < * Connection #0 to host storage.yandexcloud.kz left intact
Удалите бакет
-
Задайте переменные, содержащие необходимые данные:
IAM_TOKEN="<содержимое_IAM-токена>" BUCKET_NAME="<имя_бакета>"Где:
IAM_TOKEN— тело полученного ранее IAM-токена сервисного аккаунта.BUCKET_NAME— имя удаляемого бакета. Удаляемый бакет не должен содержать объектов.
-
Выполните HTTP-запрос:
curl \ --request DELETE \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}"Результат:
... < HTTP/2 204 < server: nginx < date: Wed, 14 Jan 2026 11:27:40 GMT < x-amz-request-id: 2f8de94e******** < * Connection #0 to host storage.yandexcloud.kz left intact
-
Задайте переменные, содержащие необходимые данные:
Версия curl 8.3.0 и выше
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>"Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя удаляемого бакета. Удаляемый бакет не должен содержать объектов.
Версия curl 8.2.1 и ниже
AWS_KEY_ID="<идентификатор_статического_ключа>" AWS_SECRET_KEY="<секретный_ключ>" BUCKET_NAME="<имя_бакета>" DATE_VALUE=`date -R` STRING_TO_SIGN="DELETE\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n/${BUCKET_NAME}" SIGNATURE=`echo -en ${STRING_TO_SIGN} | openssl sha1 -hmac ${AWS_SECRET_KEY} -binary | base64`Где:
AWS_KEY_ID— идентификатор статического ключа доступа.AWS_SECRET_KEY— секретный ключ.
BUCKET_NAME— имя удаляемого бакета. Удаляемый бакет не должен содержать объектов.
-
Выполните HTTP-запрос:
Версия curl 8.3.0 и выше
curl \ --request DELETE \ --user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \ --aws-sigv4 "aws:amz:kz1:s3" \ --verbose \ "https://storage.yandexcloud.kz/${BUCKET_NAME}"Результат:
... < HTTP/2 204 < server: nginx < date: Thu, 15 May 2025 14:35:57 GMT < x-amz-request-id: 6a13b7ae******** < * Connection #0 to host storage.yandexcloud.kz left intactВерсия curl 8.2.1 и ниже
curl \ --request DELETE \ --verbose \ --header "Host: storage.yandexcloud.kz" \ --header "Date: ${DATE_VALUE}" \ --header "Authorization: AWS ${AWS_KEY_ID}:${SIGNATURE}" \ "https://storage.yandexcloud.kz/${BUCKET_NAME}"Результат:
... < HTTP/2 204 < server: nginx < date: Thu, 15 May 2025 14:39:15 GMT < x-amz-request-id: 331b2dc4******** < * Connection #0 to host storage.yandexcloud.kz left intact