Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Object Storage
  • Правила тарификации
  • Справочник Terraform
    • Аутентификация в API
      • Как пользоваться API
      • Подписывание запросов
      • Начало работы с S3 API
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Создайте сервисный аккаунт и подготовьте данные для аутентификации
  • Создайте бакет
  • Загрузите объект в бакет
  • Получите список объектов в бакете
  • Скачайте объект из бакета
  • Удалите объект в бакете
  • Удалите бакет
  1. Справочник API
  2. REST (совместимый с Amazon S3)
  3. Начало работы с S3 API

Начало работы с AWS S3 API в Yandex Object Storage

Статья создана
Yandex Cloud
Обновлена 27 января 2026 г.
  • Подготовьте облако к работе
    • Создайте сервисный аккаунт и подготовьте данные для аутентификации
  • Создайте бакет
  • Загрузите объект в бакет
  • Получите список объектов в бакете
  • Скачайте объект из бакета
  • Удалите объект в бакете
  • Удалите бакет

AWS S3 API — это интерфейс взаимодействия с сервисами AWS, совместимый с Yandex Object Storage.

С помощью AWS S3 API вы создадите бакет, загрузите в него объект, получите список объектов в бакете, скачаете объект из бакета, удалите объект и удалите бакет.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Создайте сервисный аккаунт и подготовьте данные для аутентификацииСоздайте сервисный аккаунт и подготовьте данные для аутентификации

Для аутентификации в AWS S3 API вы можете использовать IAM-токен или статический ключ доступа.

Важно

Рекомендованным способом аутентификации в AWS S3 API является аутентификация с помощью IAM-токена: этот способ более безопасен и, в отличие от аутентификации с помощью статического ключа, не требует создания подписи запроса.

Аутентификация с помощью IAM-токена
Аутентификация с помощью статического ключа

IAM-токен может выпускаться как для пользовательского, так и для сервисного аккаунта, а действия с использованием IAM-токена выполняются от имени того аккаунта, для которого этот IAM-токен был выпущен. При этом выполнять действия с бакетами и объектами безопаснее от имени сервисного аккаунта.

  1. Создайте сервисный аккаунт.

  2. Назначьте сервисному аккаунту роль storage.editor на каталог. Это позволит работать от имени этого сервисного аккаунта со всеми бакетами в каталоге.

  3. Получите IAM-токен для созданного сервисного аккаунта. Подробнее читайте в инструкции Получение IAM-токена для сервисного аккаунта.

    Совет

    Чтобы быстро получить IAM-токен сервисного аккаунта с помощью Yandex Cloud CLI, вы можете воспользоваться имперсонацией.

Статический ключ доступа выпускается только для сервисного аккаунта, и все действия с использованием статического ключа выполняются от имени этого сервисного аккаунта.

Примечание

Чтобы использовать AWS S3 API с аутентификацией с помощью статического ключа доступа напрямую, без SDK и приложений, необходимо самостоятельно подписывать запросы. Процесс формирования запроса и подписи вы можете отработать с помощью AWS CLI в режиме отладки.

  1. Создайте сервисный аккаунт.

  2. Назначьте сервисному аккаунту роль storage.editor на каталог. Это позволит работать от имени этого сервисного аккаунта со всеми бакетами в каталоге.

  3. Создайте статический ключ доступа.

    В результате вы получите данные статического ключа доступа. Для аутентификации в Object Storage вам понадобятся:

    • key_id — идентификатор статического ключа доступа;
    • secret — секретный ключ.

    Сохраните key_id и secret, так как повторное получение значения ключа будет невозможно.

  4. Установите утилиту curl.

    Начиная с версии 8.3.0 утилита curl при работе с AWS S3 API поддерживает автоматическое формирование строки для подписи, подпись запроса и подстановку необходимых заголовков.

    При использовании более ранних версий утилиты curl вы можете формировать необходимые заголовки и подписывать запросы вручную.

Создайте бакетСоздайте бакет

Аутентификация с помощью IAM-токена
Аутентификация с помощью статического ключа
  1. Задайте переменные, содержащие необходимые данные:

    IAM_TOKEN="<содержимое_IAM-токена>"
    BUCKET_NAME="<имя_бакета>"
    

    Где:

    • IAM_TOKEN — тело полученного ранее IAM-токена сервисного аккаунта.
    • BUCKET_NAME — имя создаваемого бакета.
  2. Выполните 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
    
  1. Задайте переменные, содержащие необходимые данные:

    Версия 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 — имя создаваемого бакета.
  2. Выполните 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-токена
Аутентификация с помощью статического ключа
  1. Задайте переменные, содержащие необходимые данные:

    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.
  2. Выполните 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
    
  1. Задайте переменные, содержащие необходимые данные:

    Версия 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.
  2. Выполните 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-токена
Аутентификация с помощью статического ключа
  1. Задайте переменные, содержащие необходимые данные:

    IAM_TOKEN="<содержимое_IAM-токена>"
    BUCKET_NAME="<имя_бакета>"
    

    Где:

    • IAM_TOKEN — тело полученного ранее IAM-токена сервисного аккаунта.
    • BUCKET_NAME — имя бакета, список объектов которого требуется получить.
  2. Выполните 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>&#34;65a8e27d8879283831b664bd********&#34;</ETag>
            <Size>13</Size>
            <StorageClass>STANDARD</StorageClass>
            <TagSet></TagSet>
        </Contents>
    </ListBucketResult>
    
  1. Задайте переменные, содержащие необходимые данные:

    Версия 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 — имя бакета, список объектов которого требуется получить.
  2. Выполните 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>&#34;f75a361db63aa4722fb8e083********&#34;</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>&#34;f75a361db63aa4722fb8e083********&#34;</ETag>
            <Size>103</Size>
            <StorageClass>STANDARD</StorageClass>
            <TagSet></TagSet>
        </Contents>
    </ListBucketResult>
    

Скачайте объект из бакетаСкачайте объект из бакета

Аутентификация с помощью IAM-токена
Аутентификация с помощью статического ключа
  1. Задайте переменные, содержащие необходимые данные:

    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.
  2. Выполните 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
    
  1. Задайте переменные, содержащие необходимые данные:

    Версия 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.
  2. Выполните 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-токена
Аутентификация с помощью статического ключа
  1. Задайте переменные, содержащие необходимые данные:

    IAM_TOKEN="<содержимое_IAM-токена>"
    BUCKET_NAME="<имя_бакета>"
    OBJECT_PATH="<ключ_объекта>"
    

    Где:

    • IAM_TOKEN — тело полученного ранее IAM-токена сервисного аккаунта.
    • BUCKET_NAME — имя бакета, из которого удаляется объект.
    • OBJECT_PATH — ключ удаляемого объекта в бакете. Например: new-prefix/sample-object.txt.
  2. Выполните 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
    
  1. Задайте переменные, содержащие необходимые данные:

    Версия 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.
  2. Выполните 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-токена
Аутентификация с помощью статического ключа
  1. Задайте переменные, содержащие необходимые данные:

    IAM_TOKEN="<содержимое_IAM-токена>"
    BUCKET_NAME="<имя_бакета>"
    

    Где:

    • IAM_TOKEN — тело полученного ранее IAM-токена сервисного аккаунта.
    • BUCKET_NAME — имя удаляемого бакета. Удаляемый бакет не должен содержать объектов.
  2. Выполните 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
    
  1. Задайте переменные, содержащие необходимые данные:

    Версия 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 — имя удаляемого бакета. Удаляемый бакет не должен содержать объектов.
  2. Выполните 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
    

См. такжеСм. также

  • Как пользоваться S3 API
  • Аутентификация в API Object Storage
  • Подписывание запросов

Была ли статья полезна?

Предыдущая
Подписывание запросов
Следующая
Все сервисы и методы
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»