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


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

Сетка событий 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#, а затем нажмите клавишу ВВОД.

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

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

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

  8. В поле "Имя функции" введите имя функции и нажмите клавишу ВВОД.

  9. В поле "Пространство имен" введите имя пространства имен функции и нажмите клавишу ВВОД.

  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. В поле "Имя" введите глобально уникальное имя для нового приложения-функции и нажмите клавишу ВВОД.

  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. Выберите " Настроить конечную точку".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Azure CLI

  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. В меню слева выберите группы ресурсов.

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

    Альтернативой является выбор всех служб в меню слева, а затем выберите группы ресурсов.

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

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

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

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

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

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