Aangepaste gebeurtenissen routeren naar een webeindpunt met Azure Portal en Azure Event Grid

Event Grid is een volledig beheerde service waarmee u eenvoudig gebeurtenissen in veel verschillende Azure-services en -toepassingen kunt beheren. Het vereenvoudigt het bouwen van gebeurtenisgestuurde en serverloze toepassingen. Zie Event Grid-overzicht voor een overzicht van de service.

In dit artikel gebruikt u Azure Portal om de volgende taken uit te voeren:

  1. Een aangepast onderwerp maken.
  2. Abonneer u op het aangepaste onderwerp.
  3. Activeer de gebeurtenis.
  4. Bekijk het resultaat. Normaal gesproken verzendt u gebeurtenissen naar een eindpunt dat de gebeurtenisgegevens verwerkt en vervolgens in actie komt. Ter vereenvoudiging van dit artikel stuurt u hier de gebeurtenissen echter naar een web-app die de berichten verzamelt en weergeeft.

Vereisten

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

De Event Grid-resourceprovider registreren

Tenzij u Event Grid eerder hebt gebruikt, moet u de Event Grid-resourceprovider registreren. Als u Event Grid eerder hebt gebruikt, gaat u verder met de volgende sectie.

Voer in Azure Portal de volgende stappen uit:

  1. Selecteer Abonnementen in het linkermenu.

  2. Selecteer het abonnement dat u wilt gebruiken voor Event Grid in de lijst met abonnementen.

  3. Selecteer op de pagina Abonnement resourceproviders onder Instellingen in het linkermenu.

  4. Zoek naar Microsoft.EventGrid en controleer of de status niet is geregistreerd.

  5. Selecteer Microsoft.EventGrid in de lijst met providers.

  6. Selecteer Registreren op de opdrachtbalk.

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

  7. Vernieuwen om ervoor te zorgen dat de status van Microsoft.EventGrid wordt gewijzigd in Geregistreerd.

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

Een aangepast onderwerp maken

Een Event Grid-onderwerp biedt een door de gebruiker gedefinieerd eindpunt waarnaar u uw gebeurtenissen plaatst.

  1. Meld u aan bij de Azure-portal.

  2. Typ Event Grid-onderwerpen in de zoekbalk in het onderwerp en selecteer vervolgens Event Grid-onderwerpen in de vervolgkeuzelijst.

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

  3. Selecteer + Maken op de werkbalk op de pagina Event Grid-onderwerpen.

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

  4. Voer de volgende stappen uit op de pagina Onderwerp maken:

    1. Selecteer uw Azure-abonnement.

    2. Selecteer een bestaande resourcegroep of selecteer Nieuwe maken en geef een naam op voor de resourcegroep.

    3. Geef een unieke naam op voor het aangepaste onderwerp. De onderwerpnaam moet uniek zijn omdat deze wordt vertegenwoordigd door een DNS-vermelding. Gebruik niet de naam die in de afbeelding wordt weergegeven. Maak in plaats daarvan uw eigen naam - deze moet tussen 3 en 50 tekens lang zijn en mag alleen de waarden a-z, A-Z, 0-9 en '-' bevatten.

    4. Selecteer een locatie voor het Event Grid-onderwerp.

    5. Selecteer Controleren en maken onderaan de pagina.

      Create Topic page

    6. Selecteer de optie Maken op het tabblad Beoordelen en maken van de pagina Onderwerp maken.

      Review settings and create

  5. Nadat de implementatie is voltooid, selecteert u Ga naar de resource om naar de pagina Event Grid-onderwerp voor uw onderwerp te navigeren. Laat deze pagina geopend. U gebruikt deze later in de quickstart.

    Screenshot showing the Event Grid topic home page.

    Notitie

    Als u de quickstart eenvoudig wilt houden, gebruikt u alleen de pagina Basisinformatie om een onderwerp te maken. Zie Een aangepast onderwerp maken voor gedetailleerde stappen over het configureren van instellingen voor netwerk-, beveiligings- en gegevenslocatie op andere pagina's van de wizard.

Het eindpunt van een bericht maken

Voordat u een abonnement voor het aangepaste onderwerp maakt, moet u een eindpunt voor het gebeurtenisbericht maken. Het eindpunt onderneemt normaal gesproken actie op basis van de gebeurtenisgegevens. Ter vereenvoudiging van deze quickstart implementeert u een vooraf gemaakte web-app die de gebeurtenisberichten weergeeft. De geïmplementeerde oplossing omvat een App Service-plan, een App Service-web-app en broncode van GitHub.

  1. Selecteer Implementeren in Azure op de artikelpagina om de oplossing voor uw abonnement te implementeren. Geef in Azure Portal waarden op voor de parameters.

    Button to deploy the Resource Manager template to Azure.

  2. Voer op de pagina Aangepaste implementatie de volgende stappen uit:

    1. Selecteer voor Resourcegroep de resourcegroep die u hebt gemaakt toen u het opslagaccount maakte. Het is eenvoudiger om op te schonen nadat u klaar bent met de zelfstudie door de resourcegroep te verwijderen.

    2. Voer in het vak Sitenaam een naam in voor de web-app.

    3. Voer voor Naam van hostingplan een naam in voor het App Service-plan dat u wilt gebruiken voor het hosten van de web-app.

    4. Selecteer Controleren + maken.

      Screenshot showing the Custom deployment page.

  3. Selecteer Maken op de pagina Beoordelen en maken.

  4. De implementatie kan enkele minuten duren. Selecteer Waarschuwingen (belpictogram) in de portal en selecteer vervolgens Naar de resourcegroep gaan.

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

  5. Selecteer in de lijst met resources op de pagina Resourcegroep de web-app die u hebt gemaakt. U ziet ook het App Service-plan en het opslagaccount in deze lijst.

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

  6. Selecteer op de pagina App Service voor uw web-app de URL om naar de website te gaan. De URL moet de volgende indeling hebben: https://<your-site-name>.azurewebsites.net.

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

  7. Controleer of de site wordt weergegeven en dat er zijn nog geen gebeurtenissen naar zijn gepost.

    Screenshot that shows the Event Grid Viewer sample app.

Abonneren op aangepast onderwerp

U abonneert u op een Event Grid-onderwerp om Event Grid te vertellen welke gebeurtenissen u wilt bijhouden en waar de gebeurtenissen moeten worden verzonden.

  1. Selecteer op de pagina Event Grid-onderwerp voor uw aangepaste onderwerp + Gebeurtenisabonnement op de werkbalk.

    Add event subscription button

  2. Voer op de pagina Gebeurtenisabonnement maken de volgende stappen uit:

    1. Voer een naam in voor het gebeurtenisabonnement.

    2. Selecteer Webhook voor het eindpunttype.

    3. Kies Een eindpunt selecteren.

      Provide event subscription values

    4. Voor het webhookeindpunt geeft u de URL van uw web-app op en voegt u api/updates toe aan de URL van de startpagina. Selecteer Confirm Selection (Selectie bevestigen).

      Provide endpoint URL

    5. Selecteer Maken als u terug bent op de pagina Gebeurtenisabonnement maken.

  3. Bekijk opnieuw uw web-app en u zult zien dat er een validatiegebeurtenis voor een abonnement naartoe is verzonden. Selecteer het oogpictogram om de gebeurtenisgegevens uit te breiden. Via Event Grid wordt de validatiegebeurtenis verzonden zodat het eindpunt kan controleren of de gebeurtenisgegevens in aanmerking komen om ontvangen te worden. De web-app bevat code waarmee het abonnement kan worden gevalideerd.

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

Een gebeurtenis verzenden naar het onderwerp

Nu gaan we een gebeurtenis activeren om te zien hoe het bericht via Event Grid naar het eindpunt wordt gedistribueerd. Gebruik Azure CLI of PowerShell om een testgebeurtenis te verzenden naar uw aangepaste onderwerp. Meestal worden de gebeurtenisgegevens verzonden via een toepassing of Azure-service.

Het eerste voorbeeld maakt gebruik van Azure CLI. In dit voorbeeld worden de URL en de sleutel voor het aangepaste onderwerp, plus de voorbeeldgegevens van de gebeurtenis opgehaald. Gebruik de naam van het aangepaste onderwerp voor <topic name>. Hiermee worden voorbeeldgebeurtenisgegevens gemaakt. Het element data van de JSON is de nettolading van de gebeurtenis. Elke juist opgemaakte JSON kan in dit veld worden ingevoerd. U kunt het onderwerpveld ook gebruiken voor geavanceerd routeren en filteren. CURL is een hulpprogramma waarmee HTTP-aanvragen worden verzonden.

Azure-CLI

  1. Selecteer Cloud Shell in Azure Portal. De Cloud Shell wordt geopend in het onderste deelvenster van de webbrowser.

    Select Cloud Shell icon

  2. Selecteer Bash in de linkerbovenhoek van het Cloud Shell-venster.

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

  3. Voer de volgende opdracht uit om het eindpunt voor het onderwerp op te halen: Nadat u de opdracht hebt gekopieerd en geplakt, werkt u de onderwerpnaam en resourcegroepnaam bij voordat u de opdracht uitvoert. U publiceert voorbeeldgebeurtenissen naar dit onderwerpeindpunt.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. Voer de volgende opdracht uit om de sleutel voor het aangepaste onderwerp op te halen: Nadat u de opdracht hebt gekopieerd en geplakt, moet u de onderwerpnaam en de naam van de resourcegroep bijwerken voordat u de opdracht uitvoert. Dit is de primaire sleutel van het Event Grid-onderwerp. Ga naar het tabblad Toegangssleutels van de pagina Event Grid-onderwerp om deze sleutel op te halen in Azure Portal. U hebt de toegangssleutel nodig als u een gebeurtenis voor een aangepast onderwerp wilt plaatsen.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. Kopieer de volgende instructie met de gebeurtenisdefinitie en druk op ENTER.

    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. Voer de volgende Curl-opdracht uit om de gebeurtenis te posten: In de opdracht aeg-sas-key wordt de header ingesteld op de toegangssleutel die u eerder hebt ontvangen.

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

Azure PowerShell

In het tweede voorbeeld wordt PowerShell gebruikt om vergelijkbare stappen uit te voeren.

  1. Selecteer Cloud Shell in Azure Portal (of ga naar https://shell.azure.com/). De Cloud Shell wordt geopend in het onderste deelvenster van de webbrowser.

    Select Cloud Shell icon

  2. Selecteer in de Cloud Shell de optie PowerShell in de linkerbovenhoek van het Cloud Shell-venster. Zie de voorbeeldafbeelding van een Cloud Shell-venster in de sectie Azure CLI.

  3. Stel de volgende variabelen in. Nadat u elke opdracht hebt gekopieerd en geplakt, werkt u de onderwerpnaam en naam van de resourcegroep bij voordat u de opdracht uitvoert:

    Resourcegroep:

    $resourceGroupName = "<resource group name>"
    

    Naam van Event Grid-onderwerp:

    $topicName = "<topic name>"
    
  4. Voer de volgende opdrachten uit om het eindpunt en de sleutels voor het onderwerp op te halen:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. Bereid de gebeurtenis voor. Kopieer de instructies en voer deze uit in het Cloud Shell-venster.

    $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. Gebruik de cmdlet Invoke-WebRequest om de gebeurtenis te verzenden.

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

Controleren in de Event Grid-viewer

U hebt de gebeurtenis geactiveerd en Event Grid heeft het bericht verzonden naar het eindpunt dat u hebt geconfigureerd toen u zich abonneerde. Bekijk uw web-app om de gebeurtenis te zien die u zojuist hebt verzonden.

Event Grid Viewer

Resources opschonen

Als u verder wilt werken met deze gebeurtenis, schoon dan de resources die u in dit artikel hebt gemaakt, niet op. Verwijder anders de resources die u in dit artikel hebt gemaakt.

  1. Selecteer Resourcegroepen in het linkermenu. Als u deze optie niet ziet in het linkermenu, selecteert u Alle services in het linkermenu en selecteert u Resourcegroepen.

    Screenshot that shows the Resource Groups page.

  2. Selecteer de resourcegroep om de pagina Resourcegroep te openen.

  3. Selecteer Resourcegroep verwijderen op de taakbalk.

  4. Controleer de verwijdering door de naam van de resourcegroep in te voeren en Verwijderen te selecteren.

    De andere resourcegroep die u in de afbeelding ziet, is gemaakt en gebruikt door het Cloud Shell-venster. Verwijder deze als u het Cloud Shell-venster later niet meer gaat gebruiken.

Volgende stappen

U weet nu hoe u aangepaste onderwerpen maakt en hoe u zich abonneert op een gebeurtenis. Kijk waar Event Grid u nog meer bij kan helpen:

Zie de volgende voorbeelden voor meer informatie over het publiceren van gebeurtenissen naar en het verbruiken van gebeurtenissen uit Event Grid met behulp van verschillende programmeertalen.