Поделиться через


Краткое руководство. Маршрутизация пользовательских событий в функцию Azure с помощью сетки событий

Сетка событий Azure — это служба маршрутизации событий для облака. Функции Azure является одним из поддерживаемых обработчиков событий.

В этом кратком руководстве вы используете портал Azure для создания пользовательского раздела, подписки на настраиваемый раздел и активации события для просмотра результата. События отправляются в функцию Azure.

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Необходимые компоненты

Создание функции с триггером сетки событий с помощью Visual Studio Code

В этом разделе описано, как создать функцию с триггером сетки событий с помощью Visual Studio Code.

Создание функции

  1. Откройте Visual Studio Code.

  2. На левой панели выберите Azure.

  3. На левой панели в разделе "РАБОЧАЯ ОБЛАСТЬ " выберите "Функции Azure " на панели команд. Затем выберите "Создать функцию".

    Снимок экрана: вкладка Azure Visual Studio Code с командой меню для создания функции.

  4. Выберите папку, в которой нужно сохранить код функции.

  5. Для команды "Создать проект" для языка выберите C#. Выберите Enter.

    Снимок экрана: выбор C Sharp в качестве языка для разработки функции Azure.

  6. Для среды выполнения .NET выберите .NET 8.0 Isolated LTS и нажмите клавишу Enter.

  7. Для шаблона для функции выберите триггер сетки событий Azure. Выберите Enter.

  8. В поле "Имя функции" введите имя функции. Выберите Enter.

  9. Для Namespace введите имя пространства имен. Выберите Enter.

  10. Откройте проект в текущем окне или новом окне или добавьте его в рабочую область.

  11. Дождитесь создания функции. Состояние создания функции отображается в правом нижнем углу.

    Снимок экрана: состояние создания функции.

  12. Просмотрите код в файле YourFunctionName.cs , в частности Run метод. Он печатает сведения с помощью средства ведения журнала.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

Развертывание функции для Azure

  1. Нажмите кнопку Azure на левой панели, если область Azure еще не открыта.

  2. Наведите указатель мыши на проект и нажмите кнопку "Развернуть в Azure ".

    Снимок экрана: кнопка развертывания в Azure.

  3. В раскрывающемся списке палитры команд выберите +Создать приложение-функцию и нажмите клавишу ВВОД.

  4. В поле "Имя" введите глобально уникальное имя для нового приложения-функции. Выберите Enter.

  5. Для стека среды выполнения выберите изолированное .NET 8.

  6. Для расположения ресурсов Azure выберите регион, близкий к вам.

  7. Состояние создания приложения-функции отображается на вкладке AZURE нижней панели. После создания приложения-функции вы увидите состояние развертывания функции, созданной локально в приложении-функции.

  8. После успешного развертывания разверните сообщение "Создание приложения-функции успешно". Выберите "Щелкните", чтобы просмотреть ресурс. Убедитесь, что функция выбрана в разделе RESOURCES на левой панели.

  9. Щелкните правой кнопкой мыши функцию и выберите "Открыть" на портале.

    Снимок экрана: выбор для открытия функции на портале.

  10. При необходимости войдите в Azure и убедитесь, что страница приложения-функции отображается для вашей функции.

  11. На нижней панели выберите свою функцию.

    Снимок экрана: выбор функции Azure на странице приложения-функции.

  12. Перейдите на вкладку "Журналы ". Откройте эту вкладку, чтобы вы могли видеть зарегистрированные сообщения при отправке события в раздел сетки событий далее в этой статье.

    Снимок экрана: вкладка

Создание пользовательской темы

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

  1. На новой вкладке окна веб-браузера войдите в портал Azure.

  2. На панели поиска в разделе найдите разделы сетки событий и выберите разделы сетки событий.

    Снимок экрана: выбор разделов сетки событий.

  3. На странице разделов нажмите кнопку +Создать на панели команд.

    Снимок экрана: кнопка для создания раздела сетки событий.

  4. На панели "Создание раздела" выполните следующие действия.

    1. Подписка — выберите подписку Azure.

    2. Для группы ресурсов выберите ту же группу ресурсов из предыдущих шагов.

    3. В поле "Имя" укажите уникальное имя настраиваемого раздела. Имя раздела должно быть уникальным, так как запись системы доменных имен (DNS) представляет ее.

      Не используйте имя, показанное на примере изображения. Вместо этого создайте собственное имя. Он должен иметь 3-50 символов и содержать только значения a-z, A-Z, 0-9 и дефис (-).

    4. Для региона выберите расположение для раздела "Сетка событий".

    5. Выберите Review + create (Просмотреть и создать).

      Снимок экрана: панель создания раздела.

    6. На вкладке "Просмотр и создание " проверьте параметры и нажмите кнопку "Создать".

  5. После создания настраиваемого раздела выберите "Перейти к ресурсу ", чтобы открыть страницу " Раздел сетки событий " для этого раздела.

    Снимок экрана, на котором показана страница настраиваемой статьи

Создание подписки на события пользовательского раздела

Вы подписываетесь на раздел "Сетка событий", чтобы сообщить сетке событий, какие события нужно отслеживать и куда отправлять события.

  1. На странице "Раздел сетки событий" для настраиваемого раздела выберите +Подписка на события на панели инструментов.

    Снимок экрана: кнопка добавления подписки на событие на панели инструментов.

  2. На панели "Создать подписку на события" выполните следующие действия.

    1. В поле "Имя" введите имя подписки на события.

    2. Для схемы событий выберите Cloud Event Schema версии 1.0.

    3. В поле Тип конечной точки выберите Функция Azure.

    4. Выберите " Настроить конечную точку".

      Снимок экрана: значения подписки на события.

  3. На панели "Выбор функции Azure" выполните следующие действия.

    1. Для подписки выберите подписку Azure, которая имеет функцию.

    2. Для группы ресурсов выберите группу ресурсов, которая имеет функцию.

    3. Для приложения-функции выберите приложение-функцию.

    4. Для функции выберите функцию в приложении-функции.

    5. Выберите Подтвердить выбор.

      Снимок экрана: панель выбора ранее созданной функции Azure.

  4. Этот шаг является необязательным, но мы рекомендуем его для рабочих сценариев. На панели "Создание подписки на события" перейдите на вкладку "Дополнительные функции" и задайте значения для событий Max для каждого пакета и предпочтительного размера пакета в килобайтах.

    Пакетная обработка может обеспечить высокую пропускную способность. Для максимального количества событий на пакет задайте максимальное количество событий, которые могут быть включены в один пакет подписки. Предпочтительный размер пакета в килобайтах задает предпочтительную верхнюю границу размера пакета, но его можно превысить, если одно событие больше этого порога.

    Снимок экрана: параметры пакетной обработки для подписки на события.

  5. На панели "Создать подписку на события" нажмите кнопку "Создать".

Отправка события в тему

Теперь активируйте событие, чтобы узнать, как сетка событий распределяет сообщение в конечную точку. Используйте Azure CLI или Azure PowerShell для отправки тестового события в настраиваемый раздел. Как правило, приложение или служба Azure отправляют данные о событии.

В первом примере используется Azure CLI. Он получает URL-адрес и ключ для пользовательского раздела и примеров данных события. Используйте имя пользовательского раздела для topicname. Будет создан пример данных событий.

Элемент data JSON отображает полезные данные события. Любое значение JSON с правильным форматом может быть в этом поле. Кроме того, можно использовать поле темы для дополнительной маршрутизации и фильтрации.

Средство cURL отправляет HTTP-запросы. В этой статье вы используете cURL для отправки события в пользовательский раздел.

Azure CLI (Интерфейс командной строки для Azure)

  1. На портале Azure выберите Cloud Shell. Если вы находитесь в режиме Azure PowerShell, выберите "Переключиться на Bash".

    Снимок экрана: окно Bash в Azure Cloud Shell.

  2. topicname Задайте переменные и resourcegroupname переменные, используемые в командах.

    Замените TOPICNAME именем раздела "Сетка событий".

    topicname="TOPICNAME"
    

    Замените RESOURCEGROUPNAME именем группы ресурсов Azure, содержащей раздел "Сетка событий".

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. Чтобы получить конечную точку раздела, используйте следующую команду. После копирования и вставки команды обновите имя раздела и имя группы ресурсов перед его запуском.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Используйте следующую команду, чтобы получить ключ для пользовательского раздела. После копирования и вставки команды обновите имя раздела и имя группы ресурсов перед его запуском.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Скопируйте следующую инструкцию с определением события и нажмите клавишу ВВОД.

    event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
    
  6. Выполните следующую команду cURL, чтобы опубликовать событие:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. Убедитесь, что сообщение из функции отображается на вкладке "Журналы" для функции в портал Azure.

    Снимок экрана: вкладка

Azure PowerShell

Второй пример использует Azure PowerShell для выполнения аналогичных действий.

  1. На портале Azure выберите Cloud Shell или перейдите на страницу Azure Cloud Shell. В левом верхнем углу окна Cloud Shell выберите "Перейти к PowerShell".

  2. Задайте следующие переменные. После копирования и вставки каждой команды обновите имя раздела и имя группы ресурсов перед его запуском.

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. Выполните следующую команду, чтобы получить конечную точку и ключи для раздела:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. Подготовьте событие. Скопируйте и запустите эти инструкции в окне Cloud Shell:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  5. Invoke-WebRequest Используйте командлет для отправки события:

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    
  6. Убедитесь, что сообщение из функции отображается на вкладке "Журналы" для функции в портал Azure.

    Снимок экрана: вкладка

Убедитесь, что функция получила событие

Вы активировали событие, а сетка событий отправила сообщение в конечную точку, настроенную при подписке. Теперь можно проверить, получена ли функция.

  1. Откройте вкладку "Вызов " для функции.

    Снимок экрана: вкладка

  2. Чтобы отобразить сведения, выберите вызов.

    Снимок экрана: сведения о вызове.

    Вы также можете использовать вкладку "Журналы ".

    Снимок экрана: представление монитора функции с журналом.

Очистка ресурсов

Если вы планируете продолжить работу с этим событием, не убирайте ресурсы, созданные в этой статье. В противном случае удалите ресурсы, созданные в этой статье.

  1. В поле поиска на портале Azure введите группы ресурсов и выберите группы ресурсов.

    Снимок экрана: страница для групп ресурсов.

  2. Выберите группу ресурсов, чтобы открыть область для получения сведений.

  3. На панели инструментов выберите "Удалить группу ресурсов".

  4. Подтвердите удаление, введя имя группы ресурсов, а затем нажмите кнопку "Удалить".

Окно Cloud Shell создало и использовало другую группу ресурсов, которая отображается на странице групп ресурсов. Удалите эту группу ресурсов, если вы не планируете использовать окно Cloud Shell позже.

Теперь, когда вы знаете, как создавать темы и подписки на события, ознакомьтесь с дополнительными сведениями о сетке событий, которые могут помочь вам:

Сведения о публикации событий и использовании событий из сетки событий с помощью различных языков программирования см. в следующих примерах: