Как пользоваться S3 API
Подготовка к работе
Чтобы воспользоваться API:
- Создайте сервисный аккаунт.
- Назначьте сервисному аккаунту роли, необходимые для вашего проекта. Подробнее о ролях см. в документации Identity and Access Management.
- Создайте статический ключ доступа.
Авторизация статическими ключами необходима для обращения напрямую к HTTP API и поддерживается инструментами, перечисленными в разделе Поддерживаемые инструменты.
Статический ключ для доступа к Object Storage вы можете безопасно хранить в сервисе Yandex Lockbox. Подробнее см. Использование секрета Yandex Lockbox для хранения статического ключа доступа.
Перечень поддерживаемых методов Amazon S3 HTTP API смотрите в Справочнике API.
Общий вид запроса к API
Примечание
Общий вид запроса к Object Storage API:
{GET|HEAD|PUT|DELETE} /<имя_бакета>/<ключ_объекта> HTTP/2
Host: storage.yandexcloud.net
Content-Length: length
Date: date
Authorization: authorization string (AWS Signature Version 4)
Request_body
Запрос содержит HTTP-метод, имя бакета и ключ объекта.
Имя бакета можно указать как часть имени хоста. В этом случае запрос примет вид:
{GET|HEAD|PUT|DELETE} /<ключ_объекта> HTTP/2
Host: <имя_бакета>.storage.yandexcloud.net
...
Набор заголовков зависит от конкретного запроса и описан в документации на соответствующий запрос.
Если вы используете API напрямую (без SDK и приложений), то для подписи запросов вам придется самостоятельно генерировать заголовок Authorization
. О том, как это сделать, читайте в разделе Authenticating Requests (AWS Signature Version 4)
Отрабатывать процесс формирования запроса и подписи вы можете с помощью AWS CLI в режиме отладки.
Чтобы отправить подписанный запрос к S3 API, вы можете использовать утилиту curl
URL для запроса
URL может иметь одну из следующих форм:
http(s)://storage.yandexcloud.net/<имя_бакета>/<ключ_объекта>?<query-параметры>
http(s)://<имя_бакета>.storage.yandexcloud.net/<ключ_объекта>?<query-параметры>
Примечание
Для бакетов с точками в имени, например example.ru
, протокол HTTPS доступен только c URL в формате https://storage.yandexcloud.net/<имя_бакета>/<ключ_объекта>?<query-параметры>
. Подробнее см. в Обращение к бакету по HTTPS.
URL содержит имя бакета, ключ объекта и query-параметры. Пример возможных query-параметров см. в описании метода для получения объекта.
Примечание
Если вы используете AWS SDK для .NET, обращайтесь к хосту s3.yandexcloud.net
.
CORS запросы
Кросс-доменные запросы доступны для всех методов API, которые управляют объектами.
Для проверки разрешений CORS подразумевает предварительный запрос options к ресурсу. Object Storage позволяет отправлять кросс-доменные запросы к ресурсам без предварительного запроса, при этом в запросе должны быть те же заголовки, что и у предварительного запроса.