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 gebeurtenis-handlers. 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, kunt u een gratis Azure-account maken voordat u begint.

Een Azure-functie-app maken

  1. Meld u aan bij het Azure-portaal.

  2. Selecteer Alle services in het linkernavigatiemenu.

  3. Selecteer Compute in de lijst categorieën.

  4. Beweeg de muisaanwijzer (niet selecteren) over functie-app en selecteer +.

    Schermopname van het selecteren van de koppeling Maken voor een functie-app.

  5. Voer op de pagina Basisbeginselen van de wizard Functie-app maken de volgende stappen uit:

    1. Selecteer uw Azure-abonnement waarin u de functie-app wilt maken.

    2. Maak een nieuwe resourcegroep of selecteer een bestaande resourcegroep.

    3. Geef een naam op voor de functie-app.

    4. Selecteer .NET voor Runtime-stack.

    5. Voor versie selecteert u 6 (LTS), in-process model.

    6. Selecteer de regio die het dichtst bij u in de buurt ligt.

    7. Selecteer Volgende: Opslag onderaan de pagina.

      Schermopname van het tabblad Basisbeginselen van de pagina Functie-app maken.

  6. Maak op de pagina Opslag een nieuw opslagaccount of selecteer een bestaand opslagaccount dat moet worden gekoppeld aan de functie-app en selecteer vervolgens Beoordelen en maken onderaan de pagina.

    Schermopname van het tabblad Opslag van de pagina Functie-app maken.

  7. Controleer de instellingen op de pagina Beoordelen en maken en selecteer Onder aan de pagina Maken om de functie-app te maken.

  8. Zodra de implementatie is voltooid, selecteert u Ga naar de resource om naar de startpagina voor de functie-app te navigeren.

Een functie maken

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

  1. Selecteer op de pagina Functie-app in de sectie Maken in Azure Portal de koppeling Functie maken in het rechterdeelvenster.

    Schermopname van de selectie van de koppeling Functie maken.

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

    1. Typ in de sectie Selecteer een sjabloon in het filter- of zoekvak de Azure Event Grid-trigger.

    2. Selecteer de Azure Event Grid-triggersjabloon in de sjabloonlijst.

    3. Selecteer Volgende onder aan de pagina.

      Schermopname van de gebeurtenisrastertrigger selecteren.

    4. Voer op de pagina Sjabloondetails een naam in voor de functie. In dit voorbeeld is het HandleEventsFunc.

    5. Selecteer Maken.

      Schermopname van de pagina Sjabloondetails.

  3. Selecteer op de pagina Functie voor handleEventsFunc code en test in het navigatiemenu links, vervang de code door de volgende code en selecteer Opslaan op de opdrachtbalk.

    #r "Azure.Messaging.EventGrid"
    #r "System.Memory.Data"
    
    using Azure.Messaging.EventGrid;
    using System;
    
    public static void Run(EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation(eventGridEvent.Data.ToString());
    }        
    

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

  4. Selecteer Monitor in het linkermenu en schakel over naar het tabblad Logboeken . Houd dit venster of tabblad van de browser geopend, zodat u de ontvangen gebeurtenisgegevens kunt zien.

    Schermopname van de weergave Monitor van de Azure-functie.

Een aangepast onderwerp maken

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

  1. Meld u op een nieuw tabblad van het webbrowservenster aan bij Azure Portal.

  2. Zoek in de zoekbalk in het onderwerp naar Event Grid-onderwerpen en selecteer Event Grid-onderwerpen.

    Afbeelding van de selectie van Event Grid-onderwerpen.

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

    Schermopname 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.

      Schermopname van de pagina Onderwerp maken.

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

  5. Nadat het aangepaste onderwerp is gemaakt, selecteert u Ga naar de resourcekoppeling om de volgende Event Grid-onderwerppagina te zien voor het onderwerp dat u hebt gemaakt.

    Afbeelding van de startpagina voor het aangepaste Event Grid-onderwerp.

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.

    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 configureren.

      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. Stel de topicname en resourcegroupname variabelen in die in de opdrachten worden gebruikt.

    Vervang door TOPICNAME de naam van uw Event Grid-onderwerp.

    topicname="TOPICNAME"
    

    Vervang RESOURCEGROUPNAME door de naam van de Azure-resourcegroep die het Event Grid-onderwerp bevat.

    resourcegroupname="RESOURCEGROUPNAME"
    
  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.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --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.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --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 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 = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  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}
    

Controleer 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.

  1. Op de pagina Monitor voor uw Azure-functie ziet u een aanroep.

    Schermopname van het tabblad Aanroepen van de pagina Monitor.

  2. Selecteer de aanroep om de details te bekijken.

    Schermopname van de aanroepgegevens.

  3. U kunt ook het tabblad Logboeken in het rechterdeelvenster gebruiken om de vastgelegde berichten te zien wanneer u gebeurtenissen naar het eindpunt van het onderwerp plaatst.

    Afbeelding van de weergave Monitor 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 uit Event Grid met behulp van verschillende programmeertalen.