Quickstart: Aangepaste gebeurtenissen routeren naar een Azure-functie met behulp van Event Grid
Azure Event Grid is een service voor gebeurtenisroutering voor de cloud. Azure Functions is een van de ondersteunde gebeurtenis-handlers.
In deze quickstart gebruikt u Azure Portal om een aangepast onderwerp te maken, u te abonneren op het aangepaste onderwerp 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 functie maken met een Event Grid-trigger met behulp van Visual Studio Code
In deze sectie gebruikt u Visual Studio Code om een functie te maken met een Event Grid-trigger.
Vereisten
- Visual Studio Code geïnstalleerd op een van de ondersteunde platforms
- Azure Functions-extensie
Een functie maken
Open Visual Studio Code.
Selecteer Azure in de linkerbalk.
Selecteer in het linkerdeelvenster in de sectie WERKRUIMTE de knop Azure Functions op de opdrachtbalk en selecteer vervolgens Functie maken.
Selecteer een map waarin u de functiecode wilt opslaan.
Selecteer C# voor de opdracht Nieuw project maken voor Taal en selecteer vervolgens de Enter-toets.
Voor .NET Runtime selecteert u .NET 8.0 Geïsoleerde LTS en selecteert u vervolgens de Enter-toets.
Voor sjabloon voor de functie selecteert u de Azure Event Grid-trigger en selecteert u vervolgens de Enter-toets.
Voer voor de functienaam een naam in voor uw functie en selecteer vervolgens de Enter-toets.
Voer voor Naamruimte een naam in voor de naamruimte van de functie en selecteer vervolgens de Enter-toets.
Open het project in het huidige venster of een nieuw venster of voeg het toe aan een werkruimte.
Wacht tot de functie is gemaakt. De status van het maken van de functie wordt weergegeven in de rechterbenedenhoek.
Bekijk de code in het bestand YourFunctionName.cs , met name de
Run
methode. De informatie wordt afgedrukt met behulp van een logger.[Function(nameof(MyEventGridTriggerFunc))] public void Run([EventGridTrigger] CloudEvent cloudEvent) { _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject); }
De functie implementeren in Azure
Selecteer de Azure-knop op de linkerbalk als het Azure-deelvenster nog niet is geopend.
Beweeg de muisaanwijzer over uw project en selecteer de knop Implementeren in Azure .
Selecteer + Nieuwe functie-app maken in de vervolgkeuzelijst van het opdrachtpalet en selecteer vervolgens de Enter-toets.
Voer bij Naam een wereldwijd unieke naam in voor de nieuwe functie-app en selecteer vervolgens de Enter-toets.
Voor runtimestack selecteert u .NET 8 Geïsoleerd.
Selecteer voor Locatie voor uw Azure-resources een regio die zich dicht bij u in de buurt bevindt.
De status van het maken van een functie-app wordt weergegeven op het tabblad AZURE van het onderste deelvenster. Nadat de functie-app is gemaakt, ziet u de status van het implementeren van de functie die u lokaal hebt gemaakt in de functie-app.
Nadat de implementatie is voltooid, vouwt u het bericht Functie-app maken uit en selecteert u Klik om de resource weer te geven. Controleer of uw functie is geselecteerd in de sectie RESOURCES in het linkerdeelvenster.
Klik met de rechtermuisknop op uw functie en selecteer Openen in de portal.
Meld u indien nodig aan bij Azure en controleer of de pagina Functie-app voor uw functie wordt weergegeven.
Selecteer uw functie in het onderste deelvenster.
Ga naar het tabblad Logboeken . Houd dit tabblad geopend, zodat u vastgelegde berichten kunt zien wanneer u een gebeurtenis naar een Event Grid-onderwerp verzendt verderop in deze zelfstudie.
Een aangepast onderwerp maken
Een Event Grid-onderwerp biedt een door de gebruiker gedefinieerd eindpunt waarnaar u uw gebeurtenissen plaatst.
Meld u op een nieuw tabblad van het webbrowservenster aan bij Azure Portal.
Zoek op de zoekbalk in het onderwerp naar Event Grid-onderwerpen en selecteer vervolgens Event Grid-onderwerpen.
Selecteer + Maken op de opdrachtbalk op de pagina Onderwerpen.
Voer in het deelvenster Onderwerp maken de volgende stappen uit:
Selecteer bij Abonnement uw Azure-abonnement.
Selecteer voor resourcegroep dezelfde resourcegroep uit de vorige stappen.
Geef voor Naam een unieke naam op voor het aangepaste onderwerp. De onderwerpnaam moet uniek zijn omdat een DNS-vermelding (Domain Name System) deze vertegenwoordigt.
Gebruik niet de naam die wordt weergegeven in de voorbeeldafbeelding. Maak in plaats daarvan een eigen naam. Het moet 3-50 tekens zijn en mag alleen de waarden a-z, A-Z, 0-9 en een afbreekstreepje (
-
) bevatten.Selecteer voor Regio een locatie voor het Event Grid-onderwerp.
Selecteer Controleren + maken.
Controleer de instellingen op het tabblad Controleren en maken en selecteer Vervolgens Maken.
Nadat het aangepaste onderwerp is gemaakt, selecteert u de koppeling Ga naar de resource om de pagina Event Grid-onderwerp voor dat onderwerp te openen.
Abonneren op een 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.
Selecteer + Gebeurtenisabonnement op de werkbalk op de pagina Event Grid-onderwerp voor uw aangepaste onderwerp.
Voer in het deelvenster Gebeurtenisabonnement maken de volgende stappen uit:
Voer bij Naam een naam in voor het gebeurtenisabonnement.
Voor Gebeurtenisschema selecteert u Cloud Event Schema v1.0.
Selecteer Azure-functie als het eindpunttype.
Selecteer Een eindpunt configureren.
Voer in het deelvenster Azure-functie selecteren de volgende stappen uit:
Selecteer voor Abonnement het Azure-abonnement met de functie.
Selecteer bij Resourcegroep de resourcegroep met de functie.
Selecteer uw functie-app voor de functie-app.
Selecteer voor Functie de functie in de functie-app.
Selecteer Confirm Selection (Selectie bevestigen).
Deze stap is optioneel, maar we raden dit aan voor productiescenario's. Ga in het deelvenster Gebeurtenisabonnement maken naar het tabblad Aanvullende functies en stel waarden in voor Maximumgebeurtenissen per batch en Voorkeursbatchgrootte in kilobytes.
Batchverwerking kan u hoge doorvoer geven. Voor maximaal aantal gebeurtenissen per batch stelt u het maximum aantal gebeurtenissen in dat een abonnement in een batch zal opnemen. De voorkeursbatchgrootte in kilobytes stelt de bovengrens van de batchgrootte in, maar deze kan worden overschreden als één gebeurtenis groter is dan deze drempelwaarde.
Selecteer Maken in het deelvenster Gebeurtenisabonnement maken.
Een gebeurtenis verzenden naar het onderwerp
Activeer nu een gebeurtenis om te zien hoe Event Grid het bericht naar uw eindpunt distribueert. Gebruik de Azure CLI of Azure PowerShell om een test gebeurtenis naar uw aangepaste onderwerp te verzenden. Normaal gesproken verzendt een toepassing of een Azure-service de gebeurtenisgegevens.
In het eerste voorbeeld wordt de Azure CLI gebruikt. De URL en sleutel voor het aangepaste onderwerp en voorbeeldgebeurtenisgegevens worden opgehaald. Gebruik de naam van het aangepaste onderwerp voor topicname
. 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.
Het cURL-hulpprogramma verzendt HTTP-aanvragen. In dit artikel gebruikt u cURL om de gebeurtenis naar het aangepaste onderwerp te verzenden.
Azure-CLI
Selecteer Cloud Shell in Azure Portal. Als u zich in de Azure PowerShell-modus bevindt, selecteert u Overschakelen naar Bash.
Stel de
topicname
enresourcegroupname
variabelen in die worden gebruikt in de opdrachten.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"
Gebruik de volgende opdracht om het eindpunt voor het onderwerp op te halen. Nadat u de opdracht hebt gekopieerd en geplakt, moet u de onderwerpnaam en resourcegroepnaam bijwerken voordat u deze uitvoert.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
Gebruik de volgende opdracht om de sleutel voor het aangepaste onderwerp op te halen. Nadat u de opdracht hebt gekopieerd en geplakt, moet u de onderwerpnaam en resourcegroepnaam bijwerken voordat u deze uitvoert.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
Kopieer de volgende instructie met de gebeurtenisdefinitie en selecteer vervolgens de Enter-toets.
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"} ]'
Voer de volgende cURL-opdracht uit om de gebeurtenis te posten:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Controleer of het bericht van de functie wordt weergegeven op het tabblad Logboeken voor uw functie in Azure Portal.
Azure PowerShell
In het tweede voorbeeld wordt Azure PowerShell gebruikt om vergelijkbare stappen uit te voeren.
Selecteer In Azure Portal Cloud Shell (of ga naar de Azure Cloud Shell-pagina). Selecteer Overschakelen naar PowerShell in de linkerbovenhoek van het Cloud Shell-venster.
Stel de volgende variabelen in. Nadat u elke opdracht hebt gekopieerd en geplakt, moet u de onderwerpnaam en resourcegroepnaam bijwerken voordat u deze uitvoert.
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
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
Bereid de gebeurtenis voor. Kopieer en voer deze instructies uit in het Cloud Shell-venster:
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct the body by using a hash table $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert the event body from a hash table to a JSON object #Append square brackets to the converted JSON payload because they're expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
Gebruik de
Invoke-WebRequest
cmdlet om de gebeurtenis te verzenden:Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Controleer of het bericht van de functie wordt weergegeven op het tabblad Logboeken voor uw functie in Azure Portal.
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 bij het abonneren. Nu kunt u controleren of de functie deze heeft ontvangen.
Zoek op de pagina Monitor voor uw functie een aanroep.
Selecteer de aanroep om de details weer te geven.
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.
Resources opschonen
Als u van plan bent om door te gaan met deze gebeurtenis, moet u de resources die u in dit artikel hebt gemaakt, niet opschonen. Verwijder anders de resources die u in dit artikel hebt gemaakt.
Selecteer Resourcegroepen in het linkermenu.
Een alternatief is om Alle services in het linkermenu te selecteren en vervolgens Resourcegroepen te selecteren.
Selecteer de resourcegroep om het deelvenster te openen voor de details.
Selecteer resourcegroep verwijderen op de werkbalk.
Bevestig de verwijdering door de naam van de resourcegroep in te voeren en selecteer Vervolgens Verwijderen.
In het Cloud Shell-venster is de andere resourcegroep gemaakt en gebruikt die wordt weergegeven op de pagina Resourcegroepen . Verwijder deze resourcegroep als u het Cloud Shell-venster later niet meer wilt gebruiken.
Gerelateerde inhoud
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:
- Over Event Grid
- Azure Blob Storage-gebeurtenissen routeren naar een aangepast webeindpunt
- Monitor virtual machine changes with Azure Event Grid and Logic Apps (Wijzigingen in virtuele machines bewaken met Azure Event Grid en Logic Apps)
- Big data streamen naar een datawarehouse
Zie de volgende voorbeelden voor meer informatie over het publiceren van gebeurtenissen naar en het verbruiken van gebeurtenissen vanuit Event Grid met behulp van verschillende programmeertalen: