Маршрутизация пользовательских событий в веб-конечную точку с помощью портал Azure и Сетка событий Azure

Сетка событий — это полностью управляемая служба, которая позволяет легко управлять событиями во множестве разных сервисов и приложений Azure. Она упрощает создание приложений, управляемых событиями, и бессерверных приложений. Общие сведения о службе см. в статье Обзор Сетки событий Azure.

В этой статье объясняется, как использовать портал Azure для выполнения описанных ниже задач.

  1. Создание пользовательского раздела.
  2. Подписка на пользовательский раздел.
  3. Активация события.
  4. Просмотр результата. Как правило, события отправляются на конечную точку, которая обрабатывает данные событий и выполняет соответствующие действия. Но в этой статье для простоты события отправляются в веб-приложение, которое собирает и отображает сообщения.

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

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

Регистрация поставщика ресурсов Сетки событий

Если вы не пользовались сеткой событий раньше, потребуется зарегистрировать поставщика ресурсов сетки событий. Если вы использовали сетку событий раньше, переходите к следующему разделу.

На портале Azure сделайте следующее:

  1. В меню слева выберите Подписки.

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

  3. На странице Подписка выберите Поставщики ресурсов в разделе Параметры в меню слева.

  4. Найдите Microsoft.EventGrid и убедитесь, что состояние не зарегистрировано.

  5. Выберите Microsoft.EventGrid в списке поставщиков.

  6. Выберите Зарегистрировать на панели команд.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

  7. Обновите страницу, чтобы убедиться, что состояние Microsoft.EventGrid изменено на Зарегистрировано.

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

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

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

  1. Войдите на портал Azure.

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

    Screenshot showing the Azure port search bar to search for Event Grid topics.

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

    Screenshot showing the Create Topic button on Event Grid topics page.

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

    1. Выберите свою подписку Azure.

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

    3. Укажите уникальное имя для пользовательского раздела. Имя раздела должно быть уникальным, так как оно представлено записью службы доменных имен (DNS). Не используйте имя, указанное на изображении. Вместо этого создайте собственное имя длиной от 3 до 50 символов, которое может содержать только буквы (a–z, A–Z), цифры (0–9) и дефисы (-).

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

    5. В нижней части страницы выберите Review + create (Проверить и создать).

      Create Topic page

    6. На вкладке Просмотр и создание на странице Создание раздела выберите Создать.

      Review settings and create

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

    Screenshot showing the Event Grid topic home page.

    Примечание.

    Чтобы упростить краткое руководство, вы будете использовать для создания раздела только страницу Основное. Подробные инструкции по настройке параметров сети, безопасности и места расположения данных на других страницах мастера см. в статье Создание пользовательской темы.

Создание конечной точки сообщения

Перед созданием подписки на пользовательский раздел создайте конечную точку для сообщения о событии. Обычно конечная точка выполняет действия на основе данных событий. Чтобы упростить это краткое руководство, вы развернете предварительно созданное веб-приложение , отображающее сообщения о событиях. Развернутое решение содержит план службы приложений, веб-приложение службы приложений и исходный код из GitHub.

  1. Выберите Развернуть в Azure, чтобы развернуть решение в своей подписке. На портале Azure укажите значения остальных параметров.

    Button to deploy the Resource Manager template to Azure.

  2. На странице Настраиваемое развертывание выполните следующие действия:

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

    2. В поле Имя сайта введите имя веб-приложения.

    3. В поле Имя плана размещения введите имя плана службы приложений для размещения веб-приложения.

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

      Screenshot showing the Custom deployment page.

  3. На странице Отзыв и создание выберите Создать.

  4. Завершение развертывания может занять несколько минут. На портале перейдите к оповещениям (значок колокольчика) и выберите Перейти к группе ресурсов.

    Screenshot showing the successful deployment message with a link to navigate to the resource group.

  5. На странице Группа ресурсов в списке ресурсов выберите созданное вами веб-приложение. В списке вы также увидите план службы приложений и учетную запись хранения.

    Screenshot that shows the Resource Group page with the deployed resources.

  6. На странице Служба приложений для веб-приложения выберите URL-адрес для перехода на веб-сайт. URL-адрес должен иметь следующий формат: https://<your-site-name>.azurewebsites.net.

    Screenshot that shows the App Service page with the link to the site highlighted.

  7. Убедитесь, что сайт открывается, но не имеет опубликованных событий.

    Screenshot that shows the Event Grid Viewer sample app.

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

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

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

    Add event subscription button

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

    1. Укажите имя для подписки на событие.

    2. Выберите веб-перехватчик в качестве типа конечной точки.

    3. Выберите Выбрать конечную точку.

      Provide event subscription values

    4. Для конечной точки веб-перехватчика укажите URL-адрес веб-приложения и добавьте api/updates к URL-адресу домашней страницы. Выберите Подтвердить выбор.

      Provide endpoint URL

    5. Вернитесь на страницу Создать подписку на событие и выберите Создать.

  3. Теперь снова откройте веб-приложение и убедитесь, что оно успешно получило отправленное событие подтверждения подписки. Щелкните значок с изображением глаза, чтобы развернуть данные события. Сетка событий отправляет событие подтверждения, чтобы конечная точка могла подтвердить, что она готова получать данные события. Веб-приложение содержит код для проверки подписки.

    Screenshot of the Event Grid Viewer app with the Subscription Validated event.

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

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

В первом примере используется Azure CLI. Он возвращает URL-адрес, ключ пользовательского раздела и пример данных события. Используйте имя пользовательского раздела для <topic name>. Будет создан пример данных событий. Элемент data JSON отображает полезные данные события. Любое значение JSON с правильным форматом может быть в этом поле. Кроме того, можно использовать поле темы для дополнительной маршрутизации и фильтрации. CURL — это служебная программа, которая отправляет HTTP-запросы.

Azure CLI

  1. На портале Azure выберите Cloud Shell. Cloud Shell откроется в нижней области веб-браузера.

    Select Cloud Shell icon

  2. Выберите Bash в левом верхнем углу окна Cloud Shell.

    Screenshot that shows the Cloud Shell with Bash selected in the top-left corner.

  3. Выполните следующую команду, чтобы получить конечную точку раздела: после копирования и вставки команды обновите имя раздела и имя группы ресурсов перед выполнением команды. Вы публикуете примеры событий в этой конечной точке раздела.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. Выполните следующую команду, чтобы получить ключ для пользовательского раздела: после копирования и вставки команды обновите имя раздела и имя группы ресурсов перед выполнением команды. Это первичный ключ раздела Сетки событий. Чтобы получить этот ключ на портале Azure, перейдите на вкладку Ключи доступа на странице Раздел Сетки событий. Чтобы можно было опубликовать событие в пользовательском разделе, требуется ключ доступа.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --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 , чтобы опубликовать событие: в команде заголовок задается для ключа доступа, aeg-sas-key который вы получили ранее.

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

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

  1. На портале Azure выберите Cloud Shell (или перейдите по адресу https://shell.azure.com/). Cloud Shell откроется в нижней области веб-браузера.

    Select Cloud Shell icon

  2. В левом верхнем углу окна Cloud Shell выберите PowerShell. Пример того, как выглядит окно Cloud Shell, приведен в разделе "Инфраструктура CLI Azure".

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

    Группа ресурсов.

    $resourceGroupName = "<resource group name>"
    

    Имя раздела Сетки событий.

    $topicName = "<topic name>"
    
  4. Выполните следующую команду, чтобы получить конечную точку и ключи для раздела:

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

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

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Проверка в средстве просмотра Сетки событий

Вы активировали событие, а служба "Сетка событий" отправила сообщение в конечную точку, настроенную вами при оформлении подписки. Откройте веб-приложение и просмотрите в нем отправленные события.

Event Grid Viewer

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

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

  1. Выберите Группы ресурсов в меню слева. Если этот параметр не отображается, выберите Все службы в меню слева и выберите Группы ресурсов.

    Screenshot that shows the Resource Groups page.

  2. Выберите группу ресурсов, чтобы открыть страницу Группа ресурсов.

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

  4. Подтвердите удаление. Для этого введите имя группы ресурсов и выберите Удалить.

    Другая группа ресурсов, показанная на рисунке, создана и используется в окне Cloud Shell. Удалите ее, если вы не планируете использовать окно Cloud Shell в дальнейшем.

Следующие шаги

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

Чтобы узнать, как публиковать события в Сетке событий и получать события из нее с использованием разных языков программирования, ознакомьтесь с приведенными ниже примерами.