База знаний LinxCloud Services

Вебхуки

Общая информация

Благодаря вебхукам на платформе LinxCloud пользователь будет всегда оповещен об определенных событиях в бакете. Для их подключения нужно добавить конфигурацию уведомлений, которая содержит события, по которым необходимо отсылать запросы на клиентский сервис, и сам адрес клиентского сервиса. Эта конфигурация сохраняется в меню Webhooks, которое привязано к бакету.

Примечание

Уведомления о событиях LinxCloud S3 доставляются за секунды, но порой это может занять минуту или больше.

 

Список уведомлений

Сейчас Linx S3 может публиковать уведомления о следующих событиях:

  • События создания новых объектов — Linx S3 поддерживает несколько API для создания объектов. Можно запросить уведомление, когда используется только конкретный API (например, s3:ObjectCreated:Put), или можно использовать подстановочный знак (например, s3:ObjectCreated:*) для запроса уведомления при создании объекта независимо от используемого API.
  • События удаления объектов — поддержка удаление объектов. Можно запросить уведомление, когда объект удален, используя s3:ObjectRemoved:Delete тип события. Также можно использовать подстановочный знак s3:ObjectRemoved:* для запроса уведомления при каждом удалении объекта.

 

Включение уведомления

Включение уведомлений — оперция, сохраняющая информацию о конфигурации уведомлений. Они представляют собой

  • префикс и/или суффикс файлов, для которых будут отправляться события
  • метод запроса s3
  • урл, по которому отправляется событие

Включить уведомления можно с панели управления LinxCloud или при помощи API.

Использование панели управления LinxCloud

Чтобы создать уведомление с помощью панели LinxCloud нужно нажать на кнопку «Добавить» в разделе «Wehooks» выбранного бакета:

В появившемся окне следует ввести требуемые параметры и подтвердить кнопкой «Добавить hook»:

Программное использование AWS SDK

На внутреннем уровне и панель LinxCloud, и SDK вызывают S3 REST API для управления подресурсами уведомлений, связанных с бакетом.

S3 сохраняет конфигурацию уведомлений в виде XML на подресурсах уведомлений, связанных с бакетом.

Уведомления автоматически не включены ни для каких событий, т.е. изначально подресурс уведомления хранит пустую конфигурацию.

<NotificationConfiguration xmlns="https://<имя_бакета>.hb.bizmrg.com/image/01.jpg/"> 
</NotificationConfiguration>

Для включения уведомления о событиях определенных типов нужно заменить XML на соответствующую конфигурацию, которая определяет типы событий, которые должен публиковать LinxCloud S3, и место назначения, в котором необходимо публиковать события.

Верификация указанного в конфигурации урла

При включении уведомлений Hotbox верифицирует то, что адрес, на который будут уходить события, действительно ваш, происходит это так:

  1. Вы отправляете запрос на создание определенной конфигурации Webhook в Hotbox
  2. Hotbox отправит по указанному в конфигурации адресу запрос для верификации с указанием времени, временного токена и тд. И будет ждать от вашего сервиса посчитанную на основе переданных параметров сигнатуру. Конфигурация Webhook будет сохранена только, если сигнатура верная.

Этот запрос будет выглядеть так:

POST / HTTP/1.1
Host: ...
X-Amz-Sns-Message-Type: SubscriptionConfirmation

{"Timestamp":"2021-04-22T16:48:37+03:00","Type":"SubscriptionConfirmation","Message":"You have chosen to subscribe to the topic $topic\\nTo confirm the subscription you need to response with calculated signature","TopicArn":"mcs00000000|test|s3:ObjectCreated:Put","SignatureVersion":1,"Token":"9fbYYWYGANVGeQ3s9VKxrYgynwqu65PwQ6zr7bVvU4WKXf2W"}

Ответ с посчитанной сигнатурой:

{"signature":"98f5f6db741e0e292809bf95ea6c0302fe98b68530e5281bc741269f06270f49"}

Как считается сигнатура:

signature = HMAC-SHA256-HEX(Url, HMAC-SHA256(TopicArn, HMAC-SHA256(Time, Token)))
Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!