Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Serverless Integrations
    • Все инструкции
          • API Gateway
          • Cloud Functions
          • Cloud Logging
          • Data Streams
          • Message Queue
          • Serverless Containers
          • Workflows
        • Изменить правило
        • Включить правило
        • Выключить правило
        • Удалить правило
    • Просмотр операций с ресурсами сервиса
  • Правила тарификации
  • Справочник Terraform
  • История изменений
  1. Пошаговые инструкции
  2. EventRouter
  3. Управление правилом
  4. Создать правило
  5. Cloud Functions

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

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите в каталог, в котором хотите создать правило.

  2. Выберите сервис Serverless Integrations.

  3. На панели слева нажмите EventRouter.

  4. Выберите нужную шину.

  5. Перейдите на вкладку Правила.

  6. В правом верхнем углу нажмите Создать правило.

  7. (Опционально) Раскройте блок Фильтр и введите jq-выражение для фильтрации событий.

  8. В блоке Приёмники нажмите Добавить и настройте приемник:

    1. Укажите тип приемника Yandex Cloud Functions.
    2. Выберите функцию, в которую будут отправляться сообщения, соответствующие правилу, и версию функции.
    3. Выберите сервисный аккаунт, которому назначена роль functions.functionInvoker или выше на выбранную функцию, или создайте новый.
    4. (Опционально) Нажмите Настройки повторной отправки сообщений и укажите:

      • Количество попыток — количество повторных попыток отправки сообщений, которые будут сделаны, прежде чем EventRouter отправит сообщения в Dead Letter Queue (DLQ). Допустимые значения от 0 до 1 000, значение по умолчанию — 3.
      • Интервал — время в часах, через которое будет сделана повторная попытка отправить сообщения, если текущая завершилась неуспешно. Допустимые значения от 0 до 60 часов, значение по умолчанию — 10 минут.
    5. (Опционально) Нажмите Настройки группирования сообщений и укажите:

      • Количество сообщений в группе — максимальное число сообщений, которые EventRouter объединяет перед отправкой в приемник. Число сообщений в группе не превышает указанное значение. Допустимые значения от 0 до 1 000, значение по умолчанию — 1.
      • Количество байтов в группе — предельный суммарный объем данных в сообщениях. Если данные содержатся в одном сообщении, объем может превышать этот лимит. Допустимые значения от 0 до 262 144 байт, значение по умолчанию — 10 000 байт.
      • Время ожидания — максимальное время, в течение которого EventRouter объединяет сообщения перед отправкой в приемник. Допустимые значения от 0 до 60 секунд, значение по умолчанию — 60 секунд.
    6. (Опционально) Раскройте поле Шаблон и введите jq-шаблон для преобразования событий. Если шаблон не указан, событие не преобразовывается.

    7. (Опционально) Раскройте блок Настройки обработки недоставленных сообщений:

      1. Укажите тип обработчика Yandex Message Queue.
      2. Выберите каталог и очередь DLQ, в которую будут перенаправляться сообщения, которые не смог обработать приемник.
      3. Выберите сервисный аккаунт, которому назначена роль ymq.writer или выше на выбранную очередь DLQ, или создайте новый.
  9. Раскройте блок Дополнительные параметры:

    1. Введите имя и описание правила. Требования к имени:

      • Длина — от 3 до 63 символов.
      • Может содержать строчные и заглавные буквы латинского и русского алфавита, цифры, дефисы, подчеркивания и пробелы.
      • Первый символ должен быть буквой. Последний символ не может быть дефисом, подчеркиванием или пробелом.
    2. (Опционально) Добавьте метки:

      • Нажмите Добавить метку.
      • Введите метку в формате ключ: значение.
      • Нажмите Enter.
    3. (Опционально) Включите защиту от удаления. Пока опция включена, удалить правило невозможно.

  10. Нажмите Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для создания правила:

    yc serverless eventrouter rule create --help
    
  2. Создайте правило с приемником 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 позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Чтобы создать правило с приемником Yandex Cloud Functions:

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

    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 см. в документации провайдера.

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

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

    Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления или с помощью команды CLI:

    yc serverless eventrouter rule list
    

Чтобы создать правило с приемником Yandex Cloud Functions, воспользуйтесь методом REST API Create для ресурса rule или вызовом gRPC API rule/Create.

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

Была ли статья полезна?

Предыдущая
API Gateway
Следующая
Cloud Logging
Проект Яндекса
© 2025 ООО «Яндекс.Облако»