Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Все решения
    • Все решения для Object Storage
    • Устранение ошибки `Bucket is not empty` при удалении бакета
    • Устранение ошибок доступа к бакету с назначенной политикой безопасности
    • Устранение ошибки 429
    • Устранение ошибки 409 `BucketAlreadyExists`
    • Устранение ошибки доступа к бакетам S3 из кластера Yandex Data Processing 1.4
    • Устранение ошибки 403 (не отдается заголовок при использовании метода `OPTION`)
    • Устранение ошибки сертификата
    • Устранение ошибки `GATEWAY_REQUEST_ERROR`
    • Устранение проблем с некорректным MIME-типов объектов при их загрузке в Object Storage
    • Устранение проблем с загрузкой новых объектов в бакет
    • Как перенести данные из бакета Object Storage в ледяное хранилище
    • Как ограничить доступ к бакету Object Storage диапазоном IP-адресов, принадлежащих Cloud CDN
    • Как перенести содержимое бакета в другой бакет в пределах каталога
    • Как работать напрямую с API Object Storage без использования SDK
    • Как просматривать и удалять незавершенные загрузки
    • Как узнать скорость загрузки и скачивания данных
    • Как настроить заголовки кэширования `Cache-Control` для объектов в бакете при HTTP-запросах
    • Как ограничить доступ к бакету для пользователя
    • Как подключить собственный домен к бакету
    • Как изменить класс хранения
    • Как восстановить удаленные данные из бакета

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

  • Описание задачи
  • Решение
  • Пример запроса к Object Storage средствами утилиты curl
  1. Object Storage
  2. Как работать напрямую с API Object Storage без использования SDK

Как работать напрямую с API Object Storage без использования SDK

Статья создана
Yandex Cloud
Обновлена 7 марта 2025 г.
  • Описание задачи
  • Решение
  • Пример запроса к Object Storage средствами утилиты curl

Описание задачиОписание задачи

Необходимо обмениваться данными с сервисом Object Storage напрямую без использования SDK для имеющихся языков программирования.

РешениеРешение

Формат заголовка Authorization для составления запроса к сервису имеет вид "Authorization: AWS <id_ключа>:<подпись>", где:

  • Authorization: AWS - неизменяемое значение;
  • <id_ключа> - идентификатор статического ключа доступа сервисного аккаунта, указывается без угловых скобок;
  • <подпись> - подпись запроса с использованием механизма HMAC с хеширующим алгоритмом SHA-256, также указывается без угловых скобок.

Пример:
Authorization: AWS YCAJEsU4EP6Dyo6QiHhPHz4dO:/CQuut9oew7fUoKorITnCcg2VlA=

Примечание

Подробнее о подписи запросов пишем в документации.

Пример запроса к Object Storage средствами утилиты Пример запроса к Object Storage средствами утилиты curl

Загрузка объекта в бакет:

file='имя_файла' ;\
bucket='имя_бакета' ;\
resource="/${bucket}/${file}" ;\
contentType="content-type загружаемого объекта" ;\
dateValue=`date -R` ;\
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}" ;\
s3Key='идентификатор_статического_ключа_доступа' ;\
s3Secret='секретный_ключ' ;\
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` ;\
curl -vvv -X PUT -T "${file}" \
  -H "Host: ${bucket}.storage.yandexcloud.net" \
  -H "Date: ${dateValue}" \
  -H "Content-Type: ${contentType}" \
  -H "Authorization: AWS ${s3Key}:${signature}" \
  https://${bucket}.storage.yandexcloud.net/${file}

Перед отправкой запроса не забудьте указать следующие параметры:

  • file - имя файла, который будет загружен в бакет как объект;
  • bucket - имя бакета, в который будет осуществлена загрузка;
  • s3Key и s3Secret - идентификатор и секрет статического ключа доступа сервисного аккаунта;
  • contentType - MIME-тип загружаемого объекта, например, text/plain.

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

Предыдущая
Как перенести содержимое бакета в другой бакет в пределах каталога
Следующая
Как просматривать и удалять незавершенные загрузки
Проект Яндекса
© 2025 ООО «Яндекс.Облако»