Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

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

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

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

Данные для подключения к S3 можно найти во вкладке «Дашборд» в панели управления в настройках нужного бакета.

Selection 252

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

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

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

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

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

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

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

    

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

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

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

    

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

Параметр

Описание

AWS4-HMAC-SHA256

Подпись AWS версии 4 (AWS4) и алгоритм подписи (HMAC-SHA256)

Credential

Содержит ключ доступа и информацию о запросе в формате: ${ACCESS_KEY}/${YYYYMMDD}/${REGION}/s3/aws4_request

SignedHeaders

Список в нижнем регистре имен заголовков запроса, используемых при вычислении подписи

Signature

Подписанный хэш, состоящий из хэша тела запроса, секретного ключа и информации о запросе (каноническом запросе)

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

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

    

Где:

  • HTTPMethod — один из HTTP-методов, например GETPUTHEAD и DELETE;
  • CanonicalURI — URI-кодированная часть адреса, которая начинается после домена, с первым «/», например для https://s3.twcstorage.ru/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 — данная строка определяет алгоритм шифрования, который вы используете;
  • 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

Основные методы S3, которые поддерживает хранилище Timeweb Cloud, перечислены ниже. Список всех функций и дополнительную информацию можно найти в официальной документации.

Методы для работы с бакетами

Метод

Описание

GET Service (List Buckets)

Получение списка бакетов

GET Bucket (List Objects)

Получение списка объектов в бакете

GET Bucket Location

Получение региона бакета

DELETE Bucket

Удаление бакета

HEAD Bucket

Получение статуса бакета

PUT Bucket

Создание бакета

GET Bucket ACL

Получение списка управления доступом (access control list)

PUT Bucket ACL

Назначение списка управления доступом

GET Bucket Multipart Uploads

Получение списка текущих составных загрузок

PUT Bucket Versioning (Enable / Suspend)

Включение или выключение версионирования бакета

GET Bucket Versioning

Получение статуса версионирования (метод не вернет статус, если состояние версионирования не было ранее установлено методом PUT)

PUT Notification

Включение уведомлений о событиях для бакета

DELETE Notification

Удаление уведомлений о событиях для бакета

GET Notification

Получения списка уведомлений для бакета

GET Bucket Lifecycle

Получение конфигурации жизненного цикла бакета

DELETE Bucket Lifecycle

Удаление конфигурации жизненного цикла бакета

PUT Bucket Tagging

Добавление меток бакету

GET Bucket Tagging

Получение меток бакета

DELETE Bucket Tagging

Удаление меток бакета

GET Bucket Policy

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

PUT Bucket Policy

Применение политики доступа для бакета

DELETE Bucket Policy

Удаление политики доступа для бакета

Методы для работы с объектами

Метод

Описание

PUT Object

Создание объекта

PUT Object — Copy

Копирование объекта

DELETE Object

Удаление объекта

GET Object

Получение объекта

HEAD Object

Получение метаданных объекта

GET Object ACL

Получение списка управления доступом для объекта

PUT Object ACL

Назначение списка управления доступом для объекта

POST Multipart Upload

Запуск составной загрузки

PUT Multipart Upload Part

Загрузка части объекта

GET Multipart Upload Parts

Получение загруженных частей составной загрузки

POST Multipart Upload (Complete)

Завершение составной загрузки

DELETE Multipart Upload

Прерывание составной загрузки

PUT Object Tagging

Добавление меток для объекта

GET Object Tagging

Получение меток объекта

DELETE Object Tagging

Удаление меток объекта

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

Примеры использования SDK вы можете найти в разделе «SDK для S3» и в репозиториях GitHub:

Была ли статья полезна?
Ваша оценка очень важна