Создать правило с приемником Yandex Message Queue
-
В консоли управления
перейдите в каталог, в котором хотите создать правило. -
Выберите сервис Serverless Integrations.
-
На панели слева нажмите
EventRouter. -
Выберите нужную шину.
-
Перейдите на вкладку
Правила. -
В правом верхнем углу нажмите Создать правило.
-
(Опционально) Раскройте блок Фильтр и введите jq-выражение
для фильтрации событий. -
В блоке Приёмники нажмите Добавить и настройте приемник:
- Укажите тип приемника
Yandex Message Queue
. - Выберите каталог и очередь, в которую будут отправляться сообщения, соответствующие правилу.
- Выберите сервисный аккаунт, которому назначена роль
ymq.writer
или выше на выбранную очередь, или создайте новый. -
(Опционально) Нажмите
Настройки повторной отправки сообщений и укажите:- Количество попыток — количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000, значение по умолчанию — 3.
- Интервал — время в часах, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов, значение по умолчанию — 10 минут.
-
(Опционально) Раскройте поле Шаблон и введите jq-шаблон
для преобразования событий. Если шаблон не указан, событие не преобразовывается. -
(Опционально) Раскройте блок Настройки обработки недоставленных сообщений:
- Укажите тип приемника
-
Раскройте блок Дополнительные параметры:
-
Введите имя и описание правила. Требования к имени:
- Длина — от 3 до 63 символов.
- Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
- Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
-
(Опционально) Добавьте метки:
- Нажмите Добавить метку.
- Введите метку в формате
ключ: значение
. - Нажмите Enter.
-
(Опционально) Включите защиту от удаления. Пока опция включена, удалить правило невозможно.
-
-
Нажмите Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания правила:
yc serverless eventrouter rule create --help
-
Создайте правило с приемником Yandex Message Queue:
yc serverless eventrouter rule create \ --bus-id <идентификатор_шины> \ --filter '<jq-выражение>' \ --ymq-target \ queue-arn=<ARN_очереди>,\ service-account-id=<идентификатор_сервисного_аккаунта_очереди>,\ retry-attempts=<количество_попыток>,\ maximum-age=<интервал>,\ transformer=<jq-шаблон>,\ dlq-arn=<очередь_DLQ>,\ dlq-service-account-id=<идентификатор_сервисного_аккаунта_DLQ> \ --name <имя_правила> \ --description "<описание_правила>" \ --deletion-protection \ --labels <список_меток>
Где:
--bus-id
— идентификатор шины EventRouter.--filter
— jq-выражение для фильтрации событий.
-
--ymq-target
— флаг для настройки приемника с типомYandex Message Queue
и его параметры:queue-arn
— ARN очереди, в которую будут отправляться сообщения, соответствующие правилу.service-account-id
— идентификатор сервисного аккаунта, которому назначена рольymq.writer
или выше на выбранную очередь.
retry-attempts
— количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000. Необязательный параметр.maximum-age
— время, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов. Необязательный параметр.
transformer
— jq-шаблон для преобразования событий. Если шаблон не указан, событие не преобразовывается. Необязательный параметр.
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: - ymq: queue_arn: yrn:yc:ymq:ru-central1:b1g681qpemb4********:dlq-42 service_account_id: ajelprpohp7r******** 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 deletion_protection: true status: ENABLED
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать правило с приемником Yandex Message Queue:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_serverless_eventrouter_rule" "example_rule" { bus_id = "<идентификатор_шины>" jq_filter = "<jq-выражение>" ymq { queue_arn = "<ARN_очереди>" service_account_id = "<идентификатор_сервисного_аккаунта>" } name = "<имя_правила>" description = "<описание_правила>" labels = { <ключ_1> = "<значение_1>" <ключ_2> = "<значение_2>" ... <ключ_n> = "<значение_n>" } }
Где:
-
bus_id
— идентификатор шины EventRouter. -
jq_filter
— jq-выражение для фильтрации событий. -
ymq
— блок для настройки приемника с типомYandex Message Queue
и его параметры:queue_arn
— ARN очереди, в которую будут отправляться сообщения, соответствующие правилу.service_account_id
— идентификатор сервисного аккаунта, которому назначена рольymq.writer
или выше на выбранную очередь.
-
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 Message Queue, воспользуйтесь методом REST API Create для ресурса rule или вызовом gRPC API rule/Create.
По умолчанию правило создается включенным. Чтобы события, которые соответствуют правилу, перестали перенаправляться в приемник, выключите правило.