Триггеры в Yandex API Gateway. Обзор
Триггер — условие, при выполнении которого сообщения автоматически отправляются в WebSocket-соединения, подключенные к API-шлюзу по пути, указанному пользователем. Сам API-шлюз при этом не вызывается.
Один триггер может одновременно отправлять сообщения в WebSocket-соединения нескольких API-шлюзов, а также вызывать функции Cloud Functions и контейнеры Serverless Containers.
Триггеры позволяют автоматизировать работу с другими сервисами Yandex Cloud, например: Yandex Object Storage, Yandex Message Queue и Yandex Container Registry.
Примечание
Триггер начинает работать в течение 5 минут после создания.
В Yandex API Gateway доступны следующие типы триггеров:
- таймер;
- триггер для Message Queue;
- триггер для Object Storage;
- триггер для Container Registry;
- триггер для Cloud Logging;
- триггер для Yandex IoT Core;
- триггер для бюджетов;
- триггер для Data Streams;
- триггер для почты;
- триггер для Telegram.
У каждого типа триггера есть индивидуальные условия срабатывания. Например, у триггера для Object Storage это может быть создание или изменение объекта. Некоторые условия задаются в настройках объекта сервиса, например у триггера для бюджетов это пороги для уведомлений в настройках бюджета.
Особенности отправки сообщений триггером
Триггеры отправляют сообщения с учетом установленных квот и лимитов.
При отправке сообщений триггером существуют следующие особенности:
- Триггер изменяет формат сообщений перед их отправкой в WebSocket-соединения. У каждого типа триггера свой формат сообщений, подробнее об этом читайте в разделе с описанием соответствующего триггера.
- Если сообщение не удалось отправить или никто не подключен по пути, который указан в настройках триггера, сообщение теряется без возможности повторить отправку.
- Сервисному аккаунту, от имени которого сообщения будут отправляться в WebSocket-соединения, необходима роль
api-gateway.websocketBroadcaster. Другие роли, необходимые для корректной работы триггера, зависят от его типа. Подробнее читайте в описании соответствующего триггера.
Фильтрация событий
Для каждого вызываемого ресурса в триггере можно задать фильтр — выражение в формате jq
true, событие отправляется в приемник;falseили событие не удалось распарсить, оно не отправляется.
Фильтр задается отдельно для каждого приемника, поэтому один триггер может доставлять разные события разным приемникам. Если фильтр не задан, в приемник отправляются все события.
Преобразование событий
Для каждого приемника в триггере можно задать шаблон преобразования в формате jq
- привести событие к формату, ожидаемому приемником;
- оставить в событии только нужные поля;
- добавить в событие собственные поля и значения.
Шаблон задается отдельно для каждого приемника, поэтому один триггер может отправлять разным приемникам разные представления одного и того же события. Если шаблон не задан, событие отправляется в приемник в исходном виде.
Группирование событий
Настройки группирования позволяют передавать в приемник сразу несколько событий. Эти настройки задают ограничение сверху по размеру группы событий и по времени ее накопления. Например, если размер группы событий равен 3, то в приемник могут поступать группы, в которых содержится от 1 до 3 событий.
Вы можете настроить группирование событий перед отправкой их в приемник у следующих триггеров:
- триггер для Message Queue;
- триггер для Cloud Logging;
- триггер для Object Storage;
- триггер для Container Registry;
- триггер для Yandex IoT Core;
- триггер для Data Streams;
- триггер для почты;
- триггер для Telegram.