[Документация Yandex Cloud](../../../../index.md) > [Yandex Serverless Integrations](../../../index.md) > [Пошаговые инструкции](../../index.md) > EventRouter > Управление правилом > Создать правило > Workflows

# Создать правило с приемником Yandex Workflows

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором хотите создать [правило](../../../concepts/eventrouter/rule.md).
  1. Перейдите в сервис **Serverless Integrations**.
  1. На панели слева нажмите ![image](../../../../_assets/console-icons/object-align-center-vertical.svg) **EventRouter**.
  1. Выберите нужную [шину](../../../concepts/eventrouter/bus.md).
  1. Перейдите на вкладку ![image](../../../../_assets/console-icons/target-dart.svg) **Правила**.
  1. В правом верхнем углу нажмите **Создать правило**.

  1. (Опционально) Раскройте блок **Фильтр** и введите [jq-шаблон](https://jqlang.github.io/jq/manual/) для [фильтрации](../../../concepts/eventrouter/rule.md#filter) событий.
  1. В блоке **Приёмники** нажмите **Добавить** и настройте приемник:

      1. Укажите тип приемника `Yandex Workflows`.
      1. Выберите [рабочий процесс](../../../concepts/workflows/workflow.md), на вход которого будут отправляться сообщения, соответствующие правилу.
      1. Выберите [сервисный аккаунт](../../../../iam/concepts/users/service-accounts.md), которому назначена роль `serverless.workflows.executor` или выше на выбранный процесс, или [создайте](../../../../iam/operations/sa/create.md) новый.
      1. (Опционально) Нажмите ![plus](../../../../_assets/console-icons/plus.svg) **Настройки повторной отправки сообщений** и укажите:
         
         * **Количество попыток** — количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000, значение по умолчанию — 3.
         * **Интервал, ч** — время в часах, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов, значение по умолчанию — 10 минут.
      1. (Опционально) Нажмите ![plus](../../../../_assets/console-icons/plus.svg) **Настройки группирования сообщений** и укажите:
         
         * **Количество сообщений в группе** — максимальное число сообщений, которые EventRouter объединяет перед отправкой в приемник. Число сообщений в группе не превышает указанное значение. Допустимые значения от 0 до 1 000, значение по умолчанию — 1.
         * **Количество байтов в группе** — предельный суммарный объем данных в сообщениях. Если данные содержатся в одном сообщении, объем может превышать этот лимит. Допустимые значения от 0 до 262 144 байт, значение по умолчанию — 10 000 байт.
         * **Время ожидания, с** — максимальное время, в течение которого EventRouter объединяет сообщения перед отправкой в приемник. Допустимые значения от 0 до 60 секунд, значение по умолчанию — 60 секунд.
      1. (Опционально) Раскройте поле **Шаблон** и введите [jq-шаблон](https://jqlang.github.io/jq/manual/) для преобразования событий. Если шаблон не указан, событие не преобразовывается.
      1. (Опционально) Раскройте блок **Настройки обработки недоставленных сообщений**:
         
         1. Укажите тип обработчика `Yandex Message Queue`.
         1. Выберите каталог и очередь DLQ, в которую будут перенаправляться сообщения, которые не смог обработать приемник.
         1. Выберите сервисный аккаунт, которому назначена [роль](../../../../message-queue/security/index.md#ymq-writer) `ymq.writer` или выше на выбранную очередь DLQ, или [создайте](../../../../iam/operations/sa/create.md) новый.

  1. Раскройте блок **Дополнительные параметры**:
     
     
     1. Введите имя и описание правила. Требования к имени:
     
         * Длина — от 3 до 63 символов.
         * Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
         * Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
     
     1. (Опционально) Добавьте метки:
     
         * Нажмите **Добавить метку**.
         * Введите метку в формате `ключ: значение`.
         * Нажмите **Enter**.
     
     1. (Опционально) Включите защиту от удаления. Пока опция включена, удалить правило невозможно.
  1. Нажмите **Создать**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для создания [правила](../../../concepts/eventrouter/rule.md):

      ```bash
      yc serverless eventrouter rule create --help
      ```

  1. Создайте правило с приемником Yandex Workflows:

      ```bash
      yc serverless eventrouter rule create \
        --bus-id <идентификатор_шины> \
        --filter '<jq-шаблон>' \
        --workflow-target \
      workflow-id=<идентификатор_рабочего_процесса>,\
      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` — идентификатор [шины](../../../concepts/eventrouter/bus.md) EventRouter.
      * `--filter` — [jq-шаблон](https://jqlang.github.io/jq/manual/) для [фильтрации](../../../concepts/eventrouter/rule.md#filter) событий.

      * `--workflow-target` — параметр для настройки приемника с типом `Yandex Workflows` и его свойства:

          * `workflow-id` — идентификатор [рабочего процесса](../../../concepts/workflows/workflow.md), на вход которого будут отправляться сообщения, соответствующие правилу.
          * `service-account-id` — идентификатор [сервисного аккаунта](../../../../iam/concepts/users/service-accounts.md), которому назначена роль `serverless.workflowsExecutor` или выше на выбранный процесс.


          * `retry-attempts` — количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000. Необязательный параметр.
          * `maximum-age` — время, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов. Необязательный параметр.

          * `transformer` — [jq-шаблон](https://jqlang.github.io/jq/manual/) для преобразования событий. Если шаблон не указан, событие не преобразовывается. Необязательный параметр.


          * `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` — идентификатор сервисного аккаунта, которому назначена [роль](../../../../message-queue/security/index.md#ymq-writer) `ymq.writer` или выше на выбранную очередь DLQ. Необязательный параметр.

      * `--name` — имя правила. Требования к имени:
      
          * Длина — от 3 до 63 символов.
          * Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
          * Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
      
      * `--description` — описание правила. Необязательный параметр.
      * `--deletion-protection` — защита от удаления правила. По умолчанию защита выключена. Пока опция включена, удалить правило невозможно. Чтобы отключить защиту от удаления, укажите параметр `--no-deletion-protection`. Необязательный параметр.
      * `--labels` — список меток. Необязательный параметр.
      
          Можно указать одну или несколько меток через запятую в формате `<ключ1>=<значение1>,<ключ2>=<значение2>`.

      Результат:

      ```text
      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:
        - workflow:
            workflow_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:kz1:b1g681qpemb4********:dlq-42
            service_account_id: ajelprpohp7r********
          status: ENABLED
      status: ENABLED
      ```

- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../../../terraform/index.md).

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../../terraform/authentication.md) соответствующим способом.

  Чтобы создать [правило](../../../concepts/eventrouter/rule.md) с приемником Yandex Workflows:

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

      ```hcl
      resource "yandex_serverless_eventrouter_rule" "example_rule" {
        bus_id    = "<идентификатор_шины>"
        jq_filter = "<jq-шаблон>"
       
        workflow {
          workflow_id        = "<идентификатор_рабочего_процесса>"
          service_account_id = "<идентификатор_сервисного_аккаунта>"
          
          batch_settings {
            max_bytes  = <максимальное_число_байтов>
            max_count  = <максимальное_число_сообщений>
            cutoff     = "<время_ожидания>"
          }
        }
       
        name        = "<имя_правила>"
        description = "<описание_правила>"
         
        labels = {
          <ключ_1> = "<значение_1>"
          <ключ_2> = "<значение_2>"
          ...
          <ключ_n> = "<значение_n>"
        }
      }
      ```

      Где:

      * `bus_id` — идентификатор [шины](../../../concepts/eventrouter/bus.md) EventRouter.
      * `jq_filter` — [jq-шаблон](https://jqlang.github.io/jq/manual/) для [фильтрации](../../../concepts/eventrouter/rule.md#filter) событий.
      * `workflow` — блок для настройки приемника с типом `Yandex Workflows` и его параметры:

          * `workflow_id` — идентификатор [рабочего процесса](../../../concepts/workflows/workflow.md), в которую будут отправляться сообщения, соответствующие правилу.
          * `service_account_id` — идентификатор [сервисного аккаунта](../../../../iam/concepts/users/service-accounts.md), которому назначена роль `serverless.workflowsExecutor` или выше на выбранный процесс.

          * `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/resources/serverless_eventrouter_rule.md).

  1. Создайте ресурсы:

      1. В терминале перейдите в директорию с конфигурационным файлом.
      1. Проверьте корректность конфигурации с помощью команды:
      
         ```bash
         terraform validate
         ```
      
         Если конфигурация является корректной, появится сообщение:
      
         ```bash
         Success! The configuration is valid.
         ```
      
      1. Выполните команду:
      
         ```bash
         terraform plan
         ```
      
         В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
      1. Примените изменения конфигурации:
      
         ```bash
         terraform apply
         ```
      
      1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

      Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в [консоли управления](https://kz.console.yandex.cloud) или с помощью команды [CLI](../../../../cli/index.md):

      ```bash
      yc serverless eventrouter rule list
      ```

- API {#api}

  Чтобы создать [правило](../../../concepts/eventrouter/rule.md) с приемником Yandex Workflows, воспользуйтесь методом REST API [Create](../../../eventrouter/api-ref/Rule/create.md) для ресурса [rule](../../../eventrouter/api-ref/Rule/index.md) или вызовом gRPC API [rule/Create](../../../eventrouter/api-ref/grpc/Rule/create.md).

{% endlist %}

По умолчанию правило создается включенным. Чтобы события, которые соответствуют правилу, перестали перенаправляться в приемник, [выключите](disable.md) правило.