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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Изображение процесса регистрации поставщика Microsoft.EventGrid с помощью подписки Azure.

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

    Изображение успешного процесса регистрации поставщика Microsoft.EventGrid с помощью подписки Azure.

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

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

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

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

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

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

    Снимок экрана: кнопка

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

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

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

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

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

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

      Страница Создание раздела

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

      Просмотр параметров и создание

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

    Снимок экрана: домашняя страница раздела

    Примечание.

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

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

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

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

    Кнопка для развертывания шаблона Resource Manager в Azure.

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

    1. Для группы ресурсов выберите существующую группу ресурсов или создайте группу ресурсов.

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

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

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

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

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

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

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

  5. На странице группы ресурсов в списке ресурсов выберите веб-приложение (contosoegriviewer в следующем примере).

    Снимок экрана: страница

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

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

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

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

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

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

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

    Кнопка добавления подписки на события

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

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

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

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

      Настройка значений подписки на события

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

      Настройка URL-адреса конечной точки

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

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

    Снимок экрана: приложение

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

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

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

Azure CLI

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

    Выбор значка Cloud Shell

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

    Снимок экрана: Cloud Shell с Bash, выбранным в левом верхнем углу.

  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 откроется в нижней области веб-браузера.

    Выбор значка Cloud Shell

  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}
    

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

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

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

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

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

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

    Снимок экрана: страница

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

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

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

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

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

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

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