VPN без ограничения скорости для Android, iOS, Windows, macOSПодробнее

СЕРВЕРЫ

ИНСТРУКЦИИ ДЛЯ СЕРВЕРОВ

Описание принципов работы с S3

Подробный гайд по принципам работы с S3-хранилищем.

Реквизиты подключения

Данные для подключения к S3 можно найти в панели управления.

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

  • в качестве Access Key используется логин аккаунта;
  • в качестве Secret Key используется пароль администратора хранилища;
  • в качестве Region используется ru-1;
  • URL для доступа (endpoint_urlhttps://s3.timeweb.com.

На текущий момент реализована поддержка AWS Signature V4.

Для подтверждения личности запрашивающего все запросы должны иметь подпись, которую можно создать с помощью Access Key и Secret Key.

Вычисление подписи

Вычисление подписи состоит из трех шагов:

  1. Получение ключа подписи (SigningKey)
  2. Получение строки для подписи (StringToSign)
  3. Подпись строки с помощью ключа

Получение ключа для подписи (SigningKey)

Для получения подписывающего ключа закодируйте с помощью алгоритма HMAC-SHA256 следующие данные:

DateKey = HMAC-SHA256("AWS4"+"<SecretKey>", "<YYYYMMDD>")
DateRegionKey = HMAC-SHA256(<DateKey>, "<aws-region>")
DateRegionServiceKey = HMAC-SHA256(<DateRegionKey>, "<aws-service>")
SigningKey = HMAC-SHA256(<DateRegionServiceKey>, "aws4_request")

Мы поддерживаем метод подписи запросов через HTTP-заголовок Authorization.

Использование заголовка Authorization является наиболее частным методом аутентификации пользователя.

Общий вид запроса:

Authorization: AWS4-HMAC-SHA256
Credential=12345_USER/20180524/ru-1/s3/aws4_request,
SignedHeaders=host;range;x-amz-date,
Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

Описание параметров запроса:

Параметр Описание
AWS4-HMAC-SHA256 Подпись AWS версии 4 (AWS4) и алгоритм подписи (HMAC-SHA256)
Credential Содержит ключ доступа и информацию о запросе в формате: ${ACCESS_KEY}/${YYYYMMDD}/${REGION}/s3/aws4_request
SignedHeaders Список в нижнем регистре имен заголовков запроса, используемых при вычислении подписи
Signature Подписанный хэш, состоящий из хэша тела запроса, секретного ключа и информации о запросе (каноническом запросе)

Получение строки для подписи

Для того чтобы получить строку для подписи, необходимо сделать канонический запрос следующего вида:

<HTTPMethod>\n
<CanonicalURI>\n
<CanonicalQueryString>\n
<CanonicalHeaders>\n
<SignedHeaders>\n
<HashedPayload>

Где:

  • HTTPMethod — один из HTTP-методов, например GETPUTHEAD и DELETE;
  • CanonicalURI — URI-кодированная часть адреса, которая начинается после домена, с первым «/», например для https://s3.timeweb.com/bucket/sample.txt будет выглядеть следующим образом: /bucket/sample.txt;
  • CanonicalQueryString — параметры строки запроса;
  • CanonicalHeaders — список заголовков и их значений, разделенных новой строкой, в нижнем регистре и без пробелов;
  • SignedHeaders — список имен заголовков без значений, отсортированных по алфавиту, в нижнем регистре и через точку с запятой. Например: host;x-amz-content-sha256;x-amz-date;
  • HashedPayload — хэш SHA256 тела запроса Hex(SHA256Hash()). В случае, если тела запроса нет, хэш необходимо посчитать от пустой строки Hex(SHA256Hash(“”)).

Подпись строки с помощью ключа

Строка для подписи представляет собой конкатенацию следующих строк:

"AWS4-HMAC-SHA256" + "\n" +
timeStampISO8601Format + "\n" +
<Scope> + "\n" +
Hex(SHA256Hash(<CanonicalRequest>))

Где:

  • AWS4-HMAC-SHA256 — данная строка определяет алгоритм шифрования, который вы используете;
  • timeStampISO8601Format — текущее UTC-время в формате ISO 8601 (например, 20130524T000000Z);
  • Scope — строка формата date.Format(<YYYYMMDD>) + "/" + <region> + "/" + <service> + "/aws4_request", например “20130606/ru-1/s3/aws4_request”, привязывает полученную подпись к определенной дате, региону или сервису. В случае привязки к дате, подпись будет действовать 15 минут.

Подробнее о способе аутентификации через заголовок Authorization читайте в официальной документации Amazon S3 API.

Поддержка методов S3

Облачное хранилище Timeweb Cloud обеспечивает совместимость с методами AWS S3: Bucket CRUDBucket LocationObject CRUDObject Copy.

Поддерживаемые методы для работы с бакетами

Метод Описание
GET Service Получение списка бакетов
GET Bucket (List Objects) Получение списка объектов в бакете
GET Bucket Location Получение региона бакета
DELETE Bucket Удаление бакета
HEAD Bucket Получение статуса бакета
PUT Bucket Создание бакета

Поддерживаемые методы для работы с объектами

Метод Описание
GET Object Получение объекта
HEAD Object Получение метаданных объекта
PUT Object Создание объекта
PUT Object — Copy Копирование объекта
DELETE Object Удаление объекта

Примеры использования AWS SDK для разных языков

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону