Quickstart: Aangepaste gebeurtenissen routeren naar een Azure-functie met Event Grid

Azure Event Grid is een gebeurtenisservice voor de cloud. Azure Functions is een van de ondersteunde gebeurtenishandlers. In dit artikel gebruikt u Azure Portal om een aangepast onderwerp te maken, u op het aangepaste onderwerp te abonneren, en de gebeurtenis te activeren om het resultaat weer te geven. U verzendt de gebeurtenissen naar een Azure-functie.

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

Een Azure-functie maken

Voordat u zich abonneert op het aangepaste onderwerp, gaan we een functie maken om de gebeurtenissen te verwerken.

  1. Maak een functie-app maken met behulp van instructies in Een functie-app maken.

  2. Selecteer op de pagina Functie-app functies in het menu links.

  3. Selecteer +Maken op de werkbalk om een functie te maken.

  4. Volg deze stappen op de pagina Functie maken:

    1. Deze stap is optioneel. Selecteer bij Ontwikkelomgeving de ontwikkelomgeving die u wilt gebruiken om met de functiecode te werken.

    2. Selecteer Azure Event Grid trigger in de sectie Een sjabloon selecteren.

    3. Voer een naam in voor de functie. In dit voorbeeld is dit HandleEventsFunc.

      Selecteer Event Grid trigger.

  5. Gebruik de pagina Code + Test om de bestaande code voor de functie te bekijken en bij te werken.

    Afbeelding van het selectiemenu Code + Test voor een Azure-functie.

Event Grid-resourceprovicer inschakelen

Als u Event Grid in uw Azure-abonnement nog niet eerder hebt gebruikt, moet u mogelijk de Event Grid-resourceprovider registreren.

In Azure Portal:

  1. Selecteer Abonnementen in het menu links.
  2. Selecteer het abonnement dat u voor Event Grid gebruikt.
  3. Selecteer onder Instellingen in het menu links de optie Resourceproviders.
  4. Zoek Microsoft.EventGrid.
  5. Als deze niet is geregistreerd, selecteert u Registreren.

Het kan even duren voordat de registratie is voltooid. Selecteer Vernieuwen om de status bij te werken. Wanneer de Status****Geregistreerde is, bent u klaar om verder te gaan.

Een aangepast onderwerp maken

Een Event Grid-onderwerp biedt een door de gebruiker gedefinieerd eindpunt waarop u de gebeurtenissen kunt posten.

  1. Meld u aan bij de Azure-portal.

  2. Selecteer Alle services in het navigatiemenu links, zoek naar Event Grid en selecteer Event Grid-onderwerpen.

    Afbeelding van de selectie van Event Grid Onderwerpen.

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

    Afbeelding van de knop Maken om een Event Grid-onderwerp te maken.

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

    1. Selecteer uw Azure-abonnement.

    2. Selecteer dezelfde resourcegroep uit de vorige stappen.

    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 + maken.

      Afbeelding van de pagina Onderwerp maken.

    6. Controleer op de pagina Beoordelen en maken de instellingen en selecteer Maken.

  5. Nadat het aangepaste onderwerp is gemaakt, selecteert u Naar de resourcekoppeling gaan om de volgende pagina Event Grid onderwerp weer te geven voor het onderwerp dat u hebt gemaakt.

    Afbeelding van de startpagina voor uw Event Grid aangepast onderwerp.

Abonneren op aangepast onderwerp

U abonneert u op een Event Grid-onderwerp om Event Grid te laten weten welke gebeurtenissen u wilt traceren en waar de gebeurtenissen naartoe moeten worden gestuurd.

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

    Afbeelding van de selectie van Gebeurtenisabonnement toevoegen op de werkbalk.

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

    1. Voer een naam in voor het gebeurtenisabonnement.

    2. Selecteer Azure-functie voor het Eindpunttype.

    3. Kies Een eindpunt selecteren.

      Afbeelding met waarden voor gebeurtenisabonnementen.

    4. Selecteer voor het eindpunt het Azure-abonnement en de resourcegroep waarin uw functie-app zich bevindt en selecteer vervolgens de functie-app en de functie die u eerder hebt gemaakt. Selecteer Confirm Selection (Selectie bevestigen).

      Afbeelding van de pagina Azure-functie selecteren met de selectie van de functie die u eerder hebt gemaakt.

    5. Deze stap is optioneel, maar wordt aanbevolen voor productiescenario's. Ga op de pagina Gebeurtenisabonnement maken naar het tabblad Geavanceerde functies en stel waarden in voor Maximum aantal gebeurtenissen per batch en Gewenste batchgrootte in kilobytes.

      Batchverwerking biedt u een hoge doorvoer. Voor Maximum aantal gebeurtenissen per batch stelt u het maximum aantal gebeurtenissen in dat een abonnement aan een batch toevoegt. Gewenste batchgrootte wordt de bovengrens van de batchgrootte in kilobytes, maar kan worden overschreden als een enkele gebeurtenis groter is dan deze drempelwaarde.

      Afbeelding van batchinstellingen voor een gebeurtenisabonnement.

    6. Selecteer Maken op de pagina Gebeurtenisabonnement maken.

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. Selecteer Bash in de linkerbovenhoek van het Cloud Shell-venster.

    Afbeelding van Cloud Shell - Bash-venster

  2. 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 naam van de resourcegroep bij voordat u de opdracht uitvoert.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  3. Voer de volgende opdracht uit om de sleutel voor het aangepaste onderwerp op te halen: Nadat u de opdracht hebt gekopieerd en geplakt, werkt u de onderwerpnaam en naam van de resourcegroep bij voordat u de opdracht uitvoert.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  4. 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"} ]'
    
  5. Voer de volgende curl-opdracht uit om de gebeurtenis te plaatsen:

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

Azure PowerShell

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

  1. Selecteer Cloud Shell in Azure Portal (of ga naar https://shell.azure.com/). Selecteer PowerShell in de linkerbovenhoek van het Cloud Shell-venster. Zie de voorbeeldafbeelding van een Cloud Shell-venster in de sectie Azure CLI.

  2. 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:

    $resourceGroupName = <resource group name>
    $topicName = <topic name>
    
  3. 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
    
  4. 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)+"]"
    
  5. 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 of de functie de gebeurtenis heeft ontvangen

U hebt de gebeurtenis geactiveerd en Event Grid heeft het bericht verzonden naar het eindpunt dat u hebt geconfigureerd toen u zich abonneerde. Navigeer naar de door Event Grid geactiveerde functie en open de logboeken. U ziet een kopie van de gegevenspayload van de gebeurtenis in de logboeken. Als u er niet voor zorgt dat u het logboekvenster het eerst opent, of als u op Opnieuw verbinding maken klikt, verzendt u opnieuw een testgebeurtenis.

Afbeelding van de weergave Bewaken van de Azure-functie met een logboek.

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.

  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.

    Resourcegroepen

    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 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 Event Grid verschillende programmeertalen.