Отправить события в шину напрямую
Примечание
Отправлять события в шину напрямую можно только, если к ней привязано хотя бы одно правило.
Чтобы отправить события в шину напрямую:
- В консоли управления
перейдите в каталог, в котором находится нужная шина. - В списке сервисов выберите Serverless Integrations.
- На панели слева выберите
EventRouter. - Выберите нужную шину.
- На панели сверху нажмите кнопку
Отправить событие. - В открывшемся окне введите отправляемое в шину событие в формате JSON
. Например:{"name": "value"}
. - Нажмите кнопку Отправить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для непосредственной отправки событий в шину:
yc serverless eventrouter put-event --help
-
Получите список шин:
yc serverless eventrouter bus list
Результат:
+----------------------+------------------+----------------------+--------+---------------------+ | ID | NAME | FOLDER ID | STATUS | DELETION PROTECTION | +----------------------+------------------+----------------------+--------+---------------------+ | f6676a9ti657******** | my-new-bus-17 | b1g681qpemb4******** | ACTIVE | false | | f66aevm4ithv******** | my-favourite-bus | b1g681qpemb4******** | ACTIVE | true | | f66m2q222n92******** | my-bus-42 | b1g681qpemb4******** | ACTIVE | false | +----------------------+------------------+----------------------+--------+---------------------+
-
Отправьте событие в выбранную шину:
yc serverless eventrouter put-event \ --name <имя_шины> \ --event '<событие>' \ --file <путь_к_файлу>
Где:
-
--name
— имя шины, в которую вы передаете событие.Вместо имени шины вы можете передать в команде ее идентификатор в параметре
--id
. -
--event
— отправляемое событие в формате JSON . Например:{"name": "value"}
. -
--file
— путь к файлу, в котором содержится отправляемое в шину событие в формате JSON.
Параметры
--event
и--file
— взаимоисключающие, можно использовать только один из них. -
Чтобы отправить событие в шину напрямую, воспользуйтесь вызовом gRPC API EventService/Put:
-
Если у вас не установлена утилита gRPCurl, установите
ее. -
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Получите IAM-токен для аутентификации в API.
IAM_TOKEN=$(yc iam create-token)
Команда сохранит полученный IAM-токен в переменную
IAM_TOKEN
. -
Получите список шин:
yc serverless eventrouter bus list
Результат:
+----------------------+------------------+----------------------+--------+---------------------+ | ID | NAME | FOLDER ID | STATUS | DELETION PROTECTION | +----------------------+------------------+----------------------+--------+---------------------+ | f6676a9ti657******** | my-new-bus-17 | b1g681qpemb4******** | ACTIVE | false | | f66aevm4ithv******** | my-favourite-bus | b1g681qpemb4******** | ACTIVE | true | | f66m2q222n92******** | my-bus-42 | b1g681qpemb4******** | ACTIVE | false | +----------------------+------------------+----------------------+--------+---------------------+
-
Создайте файл с телом запроса (например,
body.json
):{ "bus_id": "<идентификатор_шины>", "body": "<событие>" }
Где:
bus_id
— идентификатор шины, в которую вы отправляете событие.body
— отправляемое событие в формате JSON . Например:{'name': 'value'}
.
-
Выполните gRPC-вызов, указав путь к созданному ранее файлу
body.json
:grpcurl \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ < body.json \ events.eventrouter.serverless.yandexcloud.net:443 yandex.cloud.serverless.eventrouter.v1.EventService/Put