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