Начало работы с EventRouter
Примечание
EventRouter находится на стадии Preview. Чтобы получить доступ, отправьте заявку
С помощью этой инструкции вы, используя шину EventRouter, перенаправите сообщение из очереди Message Queue в рабочий процесс Workflows.
Сообщение, которое поступает в очередь, будет перенаправляться в рабочий процесс, если соответствует фильтру, заданному в правиле внутри шины. Рабочий процесс при этом будет автоматически запускаться. Перед отправкой в него сообщение будет преобразовываться по шаблону, заданному в том же правиле, что и фильтр.
Перед началом работы
Чтобы начать работать в Yandex Cloud:
- Войдите в консоль управления
. Если вы еще не зарегистрированы, перейдите в консоль управления и следуйте инструкциям. - На странице Биллинг
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. - Если у вас еще нет каталога, создайте его.
Создайте сервисный аккаунт
- В консоли управления
выберите нужный каталог. - В списке сервисов выберите Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- Введите имя сервисного аккаунта:
sa-for-eventrouter
. - Нажмите кнопку
Добавить роль и выберите ролиserverless.workflows.executor
, ymq.reader и ymq.writer. - Нажмите кнопку Создать.
Создайте очередь
- В консоли управления
выберите сервис Message Queue. - Нажмите кнопку Создать очередь.
- Введите имя очереди:
sample-queue
. - Выберите тип
Стандартная
. Не изменяйте другие настройки. - Нажмите кнопку Создать.
- Откройте созданную очередь.
- На вкладке Обзор в блоке Общая информация скопируйте URL очереди, он понадобится позднее.
Создайте рабочий процесс
Примечание
Workflows находится на стадии Preview. Чтобы получить доступ, отправьте заявку
- В консоли управления
в списке сервисов выберите Serverless Integrations. - На панели слева выберите
Workflows. - В правом верхнем углу нажмите кнопку Создать рабочий процесс.
- В поле YaML-спецификация добавьте следующую спецификацию:
yawl: "0.1" start: noopstep steps: noopstep: noOp: output: |- \(.)
- Разверните блок Дополнительные параметры.
- В поле Имя введите имя рабочего процесса:
sample-workflow
. - В поле Сервисный аккаунт выберите сервисный аккаунт
sa-for-eventrouter
. - Нажмите кнопку Создать.
Создайте шину
- В консоли управления
в списке сервисов выберите Serverless Integrations. - На панели слева выберите
EventRouter. - В правом верхнем углу нажмите кнопку Создать шину.
- Введите имя шины:
sample-bus
. - Нажмите кнопку Создать.
Создайте коннектор
- Выберите шину
sample-bus
. - Перейдите на вкладку Коннекторы.
- В правом верхнем углу нажмите кнопку Создать коннектор.
- В поле Источник выберите
Yandex Message Queue
. - В поле Очередь сообщений укажите очередь
sample-queue
. - В поле Сервисный аккаунт укажите
sa-for-eventrouter
. - Нажмите кнопку Создать.
Создайте правило
- Выберите шину
sample-bus
. - Перейдите на вкладку Правила.
- В правом верхнем углу нажмите кнопку Создать правило.
- Разверните блок Фильтр и укажите следующее jq-выражение для фильтрации сообщений:
.httpMethod == "GET" and (.headers.Host | test("^d5dm"))
- В блоке Приёмники нажмите кнопку Добавить.
- В поле Тип выберите
Yandex Workflows
. - В поле Рабочий процесс укажите
sample-workflow
. - В поле Сервисный аккаунт укажите
sa-for-eventrouter
. - Разверните блок Шаблон и укажите jq-выражение для преобразования сообщений:
{ "message": "API gateway host is \(.headers.Host)." }
- Нажмите кнопку Создать.
Отправьте сообщение в очередь
Убедитесь, что сообщения, которые соответствуют созданному правилу, преобразовываются и перенаправляются в рабочий процесс.
-
Установите
AWS CLI. -
Создайте статические ключи доступа для сервисного аккаунта
sa-for-eventrouter
. Надежно сохраните идентификатор и секретный ключ. После того, как вы закроете окно, параметры секретного ключа станут недоступны. -
Настройте AWS CLI:
-
Запустите интерактивную настройку профиля:
aws configure
-
Укажите полученный ранее идентификатор ключа сервисного аккаунта:
AWS Access Key ID [****************ver_]: <идентификатор_ключа_сервисного_аккаунта>
-
Укажите полученный ранее секретный ключ сервисного аккаунта:
AWS Secret Access Key [****************w5lb]: <секретный_ключ_сервисного_аккаунта>
-
Укажите имя региона по умолчанию
ru-central1
:Default region name [ru-central1]: ru-central1
-
Укажите формат выходных данных по умолчанию
json
:Default output format [None]: json
-
Чтобы посмотреть текущие настройки профиля, выполните команду:
aws configure list
Результат:
Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************aBc1 shared-credentials-file secret_key ****************DeF2 shared-credentials-file region ru-central1 config-file ~/.aws/config
-
-
Отправьте первое сообщение в очередь
sample-queue
, используя сохраненный ранее URL очереди:aws sqs send-message \ --message-body '{"httpMethod":"GET","headers":{"Host":"h6ds1lb3s0df********.k7******.apigw.yandexcloud.net"}}' \ --endpoint https://message-queue.api.cloud.yandex.net/ \ --queue-url <URL_очереди>
Результат:
{ "MD5OfMessageBody": "c37859ba35a9958be041467c********", "MessageId": "f845****-9260****-7527****-f4b0****", "SequenceNumber": "0" }
-
Убедитесь, что фильтр, который вы указали в правиле, не пропустил сообщение через шину:
- В консоли управления
в списке сервисов выберите Serverless Integrations. - На панели слева выберите
Workflows. - Перейдите на вкладку Запуски. На странице не должно быть выполненных запусков.
- В консоли управления
-
Отправьте второе сообщение в очередь
sample-queue
, используя сохраненный ранее URL очереди:aws sqs send-message \ --message-body '{"httpMethod":"GET","headers":{"Host":"d5dm1lba80md********.i9******.apigw.yandexcloud.net"}}' \ --endpoint https://message-queue.api.cloud.yandex.net/ \ --queue-url <URL_очереди>
Результат:
{ "MD5OfMessageBody": "c37859ba35a9958be041467c********", "MessageId": "f845****-9260****-7527****-f4b0****", "SequenceNumber": "0" }
-
Убедитесь, что фильтр, который вы указали в правиле, пропустил сообщение через шину, оно преобразовалось по шаблону и перенаправилось в рабочий процесс:
- В консоли управления
в списке сервисов выберите Serverless Integrations. - На панели слева выберите
Workflows. - Перейдите на вкладку Запуски. На странице должен отобразиться выполненный запуск.
- Выберите выполненный запуск.
- Убедитесь, что в блоке Данные на входе отображается преобразованное сообщение:
{ "message": "API gateway host is d5dm1lba80md********.i9******.apigw.yandexcloud.net." }
- В консоли управления