Краткое руководство: Отправка пользовательских событий в веб-узел с помощью портала Azure и Azure Event Grid

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

Предварительные требования

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

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

  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. На странице Resource group в списке ресурсов выберите то веб-приложение (contosoegriviewer в следующем примере), которое вы создали.

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

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

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

  7. Убедитесь, что вы видите сайт, но события еще не размещены на нем.

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

Подписка на пользовательскую тему

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

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

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

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

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

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

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

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

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

      Снимок экрана страницы предоставления URL-адреса конечной точки.

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

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

    Скриншот приложения

Отправьте событие в вашу тему

Теперь активируйте событие, чтобы узнать, как сетка событий распределяет сообщение в конечную точку. Отправьте тестовое событие в пользовательский раздел с помощью 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. Если Cloud Shell открывает сеанс PowerShell, выберите "Переключиться на 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 откроется в нижней области веб-браузера.

    Снимок экрана: значок Select Cloud Shell.

  2. В левом верхнем углу окна Cloud Shell выберите PowerShell. В разделе Azure CLI приведено изображение примера окна Cloud Shell.

  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 в дальнейшем.

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