Создать правило с приемником Yandex Cloud Functions
-
В консоли управления
перейдите в каталог, в котором хотите создать правило. -
Выберите сервис Serverless Integrations.
-
На панели слева нажмите
EventRouter. -
Выберите нужную шину.
-
Перейдите на вкладку
Правила. -
В правом верхнем углу нажмите Создать правило.
-
(Опционально) Раскройте блок Фильтр и введите jq-выражение
для фильтрации событий. -
В блоке Приёмники нажмите Добавить и настройте приемник:
- Укажите тип приемника
Yandex Cloud Functions
. - Выберите функцию, в которую будут отправляться сообщения, соответствующие правилу, и версию функции.
- Выберите сервисный аккаунт, которому назначена роль
functions.functionInvoker
или выше на выбранную функцию, или создайте новый. -
(Опционально) Нажмите
Настройки повторной отправки сообщений и укажите:- Количество попыток — количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000, значение по умолчанию — 3.
- Интервал — время в часах, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов, значение по умолчанию — 10 минут.
-
(Опционально) Нажмите
Настройки группирования сообщений и укажите:- Количество сообщений в группе — максимальное число сообщений, которые EventRouter объединяет перед отправкой в приемник. Число сообщений в группе не превышает указанное значение. Допустимые значения от 0 до 1 000, значение по умолчанию — 1.
- Количество байтов в группе — предельный суммарный объем данных в сообщениях. Если данные содержатся в одном сообщении, объем может превышать этот лимит. Допустимые значения от 0 до 262 144 байт, значение по умолчанию — 10 000 байт.
- Время ожидания — максимальное время, в течение которого EventRouter объединяет сообщения перед отправкой в приемник. Допустимые значения от 0 до 60 секунд, значение по умолчанию — 60 секунд.
-
(Опционально) Раскройте поле Шаблон и введите jq-шаблон
для преобразования событий. Если шаблон не указан, событие не преобразовывается. -
(Опционально) Раскройте блок Настройки обработки недоставленных сообщений:
- Укажите тип приемника
-
Раскройте блок Дополнительные параметры:
-
Введите имя и описание правила. Требования к имени:
- Длина — от 3 до 63 символов.
- Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
- Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
-
(Опционально) Добавьте метки:
- Нажмите Добавить метку.
- Введите метку в формате
ключ: значение
. - Нажмите Enter.
-
(Опционально) Включите защиту от удаления. Пока опция включена, удалить правило невозможно.
-
-
Нажмите Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания правила:
yc serverless eventrouter rule create --help
-
Создайте правило с приемником Yandex Cloud Functions:
yc serverless eventrouter rule create \ --bus-id <идентификатор_шины> \ --filter '<jq-выражение>' \ --function-target \ function-id=<идентификатор_функции>,\ function-tag=<тег_версии_функции>,\ service-account-id=<идентификатор_сервисного_аккаунта_функции>,\ retry-attempts=<количество_попыток>,\ maximum-age=<интервал>,\ max-count=<максимальное_число_сообщений>,\ max-bytes=<максимальное_число_байтов>,\ cutoff=<время_ожидания>,\ transformer=<jq-шаблон>,\ dlq-arn=<очередь_DLQ>,\ dlq-service-account-id=<идентификатор_сервисного_аккаунта_DLQ> \ --name <имя_правила> \ --description "<описание_правила>" \ --deletion-protection \ --labels <список_меток>
Где:
--bus-id
— идентификатор шины EventRouter.--filter
— jq-выражение для фильтрации событий.
-
--function-target
— флаг для настройки приемника с типомYandex Cloud Functions
и его параметры:function-id
— идентификатор функции, в которую будут отправляться сообщения, соответствующие правилу.function-tag
— тег версии функции.service-account-id
— идентификатор сервисного аккаунта, которому назначена рольfunctions.functionInvoker
или выше на выбранную функцию.
retry-attempts
— количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000. Необязательный параметр.maximum-age
— время, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов. Необязательный параметр.
transformer
— jq-шаблон для преобразования событий. Если шаблон не указан, событие не преобразовывается. Необязательный параметр.
max-count
— максимальное число сообщений, которые EventRouter объединяет перед отправкой в приемник. Число сообщений в группе не превышает указанное значение. Допустимые значения от 0 до 1 000, значение по умолчанию — 1. Необязательный параметр.max-bytes
— предельный суммарный объем данных в сообщениях. Если данные содержатся в одном сообщении, объем может превышать этот лимит. Допустимые значения от 0 до 262 144 байт, значение по умолчанию — 10 000 байт. Необязательный параметр.cutoff
— максимальное время, в течение которого EventRouter объединяет сообщения перед отправкой в приемник. Например:10s
. Допустимые значения от 0 до 60 секунд, значение по умолчанию — 60 секунд. Необязательный параметр.
dlq-arn
— ARN очереди DLQ в которую будут перенаправляться сообщения, которые не смог обработать приемник. Необязательный параметр.dlq-service-account-id
— идентификатор сервисного аккаунта, которому назначена рольymq.writer
или выше на выбранную очередь DLQ. Необязательный параметр.
-
--name
— имя правила. Требования к имени:- Длина — от 3 до 63 символов.
- Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
- Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
-
--description
— описание правила. Необязательный параметр. -
--deletion-protection
— защита от удаления правила. По умолчанию защита выключена. Пока опция включена, удалить правило невозможно. Чтобы отключить защиту от удаления, укажите параметр--no-deletion-protection
. Необязательный параметр. -
--labels
— список меток. Необязательный параметр.Можно указать одну или несколько меток через запятую в формате
<ключ1>=<значение1>,<ключ2>=<значение2>
.
Результат:
id: f66vfpjrkc35******** bus_id: f66epjc9llqt******** folder_id: b1g681qpemb4******** cloud_id: b1gia87mbaom******** created_at: "2025-02-26T14:04:47.710918Z" name: new-rule description: created via cli labels: owner: admin version: beta filter: jq_filter: .firstName == "Ivan" targets: - function: function_id: d4e27bc01uu7******** service_account_id: ajelprpohp7r******** batch_settings: max_count: "1" max_bytes: "10000" cutoff: 60s transformer: jq_transformer: . retry_settings: retry_attempts: "3" maximum_age: 600s dead_letter_queue: queue_arn: yrn:yc:ymq:ru-central1:b1g681qpemb4********:dlq-42 service_account_id: ajelprpohp7r******** status: ENABLED status: ENABLED
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать правило с приемником Yandex Cloud Functions:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_serverless_eventrouter_rule" "example_rule" { bus_id = "<идентификатор_шины>" jq_filter = "<jq-выражение>" function { function_id = "<идентификатор_функции>" function_tag = "<тег_версии_функции>" service_account_id = "<идентификатор_сервисного_аккаунта>" batch_settings { max_bytes = <максимальное_число_байтов> max_count = <максимальное_число_сообщений> cutoff = "<время_ожидания>" } } name = "<имя_правила>" description = "<описание_правила>" labels = { <ключ_1> = "<значение_1>" <ключ_2> = "<значение_2>" ... <ключ_n> = "<значение_n>" } }
Где:
-
bus_id
— идентификатор шины EventRouter. -
jq_filter
— jq-выражение для фильтрации событий. -
function
— блок для настройки приемника с типомYandex Cloud Functions
и его параметры:function_id
— идентификатор функции, в которую будут отправляться сообщения, соответствующие правилу.function_tag
— тег версии функции.service_account_id
— идентификатор сервисного аккаунта, которому назначена рольfunctions.functionInvoker
или выше на выбранную функцию.
max_bytes
— предельный суммарный объем данных в сообщениях. Если данные содержатся в одном сообщении, объем может превышать этот лимит. Допустимые значения от 0 до 262 144 байт, значение по умолчанию — 0. Необязательный параметр.max_count
— максимальное число сообщений, которые EventRouter объединяет перед отправкой в приемник. Число сообщений в группе не превышает указанное значение. Допустимые значения от 0 до 1 000, значение по умолчанию — 0. Необязательный параметр.cutoff
— максимальное время, в течение которого EventRouter объединяет сообщения перед отправкой в приемник. Например:10s
. Допустимые значения от 0 до 60 секунд, значение по умолчанию — 0. Необязательный параметр.
-
name
— имя правила. Требования к имени:- Длина — от 3 до 63 символов.
- Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
- Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
-
description
— описание правила. Необязательный параметр. -
labels
— список меток. Метки задаются в формате<ключ> = "<значение>"
. Необязательный параметр.
Более подробную информацию о параметрах ресурса
yandex_serverless_eventrouter_rule
см. в документации провайдера . -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc serverless eventrouter rule list
-
Чтобы создать правило с приемником Yandex Cloud Functions, воспользуйтесь методом REST API Create для ресурса rule или вызовом gRPC API rule/Create.
По умолчанию правило создается включенным. Чтобы события, которые соответствуют правилу, перестали перенаправляться в приемник, выключите правило.