Schnellstart: Weiterleiten von benutzerdefinierten Ereignissen an eine Azure-Funktion mit Event Grid
Azure Event Grid ist ein Ereignisdienst für die Cloud. Azure Functions ist einer der unterstützten Ereignishandler. In diesem Artikel erstellen Sie über das Azure-Portal ein benutzerdefiniertes Thema, abonnieren dieses benutzerdefinierte Thema und lösen das Ereignis zum Anzeigen des Ergebnisses aus. Sie senden Ereignisse an eine Azure-Funktion.
Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
Erstellen einer Azure-Funktions-App
Melden Sie sich beim Azure-Portal an.
Wählen Sie im linken Navigationsmenü die Option Alle Dienste aus.
Wählen Sie in der Liste der Kategorien die Option Compute aus.
Zeigen Sie mit dem Mauszeiger auf Funktions-App (nicht darauf klicken), und wählen Sie + aus.
Führen Sie auf der Seite Grundlagen des Assistenten für Funktions-App erstellen die folgenden Schritte aus:
Wählen Sie das Azure-Abonnement aus, in dem Sie die Funktions-App erstellen möchten.
Erstellen Sie eine neue Ressourcengruppe, oder wählen Sie eine vorhandene Ressourcengruppe aus.
Geben Sie einen Namen für die Funktions-App an.
Wählen Sie .NET für den Runtimestapel aus.
Wählen Sie für Version6 (LTS), In-Process-Modell aus.
Wählen Sie die Ihnen am nächsten gelegene Region aus.
Wählen Sie Weiter: Storage am unteren Rand der Seite.
Erstellen Sie auf der Seite Storage ein neues Speicherkonto, oder wählen Sie ein vorhandenes Speicherkonto aus, das der Funktions-App zugeordnet werden soll. Wählen Sie dann unten auf der Seite Überprüfen + erstellen aus.
Überprüfen Sie auf der Seite Überprüfen + erstellen die Einstellungen, und wählen Sie unten auf der Seite Erstellen aus, um die Funktions-App zu erstellen.
Wenn die Bereitstellung erfolgreich war, wählen Sie Zu Ressource wechseln aus, um zur Startseite der Funktions-App zu navigieren.
Erstellen einer Funktion
Vor dem Abonnieren des benutzerdefinierten Themas erstellen wir zunächst eine Funktion zur Verarbeitung der Ereignisse.
Wählen Sie auf der Seite Funktions-App im Abschnitt Erstellen im Azure-Portal den Link Funktion erstellen im rechten Bereich aus.
Führen Sie auf der Seite Funktion erstellen die folgenden Schritte aus:
Geben Sie im Abschnitt Vorlage auswählen im Filter- oder Suchfeld Azure Event Grid-Trigger ein.
Wählen Sie in der Vorlagenliste die Vorlage Azure Event Grid-Trigger aus.
Wählen Sie unten auf der Seite die Option Weiter aus.
Geben Sie auf der Seite Vorlagendetails einen Namen für die Funktion ein. In diesem Beispiel ist dies HandleEventsFunc.
Klicken Sie auf Erstellen.
Wählen Sie auf der Seite Funktion für HandleEventsFunc im linken Navigationsmenü Code+ Testen aus, ersetzen Sie den Code durch den folgenden Code, und wählen Sie dann Speichern auf der Befehlsleiste aus.
#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()); }
Wählen Sie im linken Menü Überwachen aus, und wechseln Sie zur Registerkarte Protokolle. Lassen Sie dieses Fenster oder die Registerkarte des Browsers geöffnet, damit Sie die empfangenen Ereignisinformationen sehen können.
Erstellen eines benutzerdefinierten Themas
Ein Event Grid-Thema stellt einen benutzerdefinierten Endpunkt bereit, an dem Sie Ihre Ereignisse posten.
Melden Sie sich auf einer neuen Registerkarte des Webbrowserfensters beim Azure-Portal an.
Suchen Sie in der Suchleiste des Artikels nach Event Grid-Themen, und wählen Sie Event Grid-Themen aus.
Wählen Sie auf der Symbolleiste der Seite Event Grid-Themen die Option + Erstellen aus.
Gehen Sie auf der Seite Thema erstellen wie folgt vor:
Wählen Sie Ihr Azure-Abonnement aus.
Wählen Sie dieselbe Ressourcengruppe wie in den vorherigen Schritten aus.
Geben Sie unter Name einen eindeutigen Namen für das benutzerdefinierte Thema an. Der Name des Themas muss eindeutig sein, da er durch einen DNS-Eintrag dargestellt wird. Verwenden Sie nicht den Namen, der in der Abbildung zu sehen ist. Erstellen Sie stattdessen einen eigenen Namen. Dieser muss zwischen drei und 50 Zeichen lang sein und darf nur folgende Zeichen enthalten: a–z, A–Z, 0–9 und Bindestriche (-).
Wählen Sie einen Speicherort für das Event Grid-Thema aus.
Klicken Sie auf Überprüfen + erstellen.
Überprüfen Sie die Einstellungen auf der Seite Überprüfen und erstellen, und wählen Sie Erstellen aus.
Wählen Sie nach dem Erstellen des benutzerdefinierten Themas den Link Zu Ressource wechseln aus, um für das von Ihnen erstellte Thema die folgende Seite „Event Grid-Thema“ anzuzeigen.
Abonnieren eines benutzerdefinierten Themas
Sie abonnieren ein Event Grid-Thema, um Event Grid mitzuteilen, welche Ereignisse Sie nachverfolgen möchten und wohin diese gesendet werden sollen.
Wählen Sie nun auf der Symbolleiste der Seite Event Grid-Thema für Ihr benutzerdefiniertes Thema die Option + Ereignisabonnement aus.
Gehen Sie auf der Seite Ereignisabonnement erstellen wie folgt vor:
Geben Sie unter Name einen Namen für das Ereignisabonnement an.
Wählen Sie Azure-Funktion als Endpunkttyp aus.
Wählen Sie Endpunkt konfigurieren aus.
Wählen Sie als Endpunkt der Funktion das Azure-Abonnement und die Ressourcengruppe aus, in der sich Ihre Funktions-App befindet, und wählen Sie dann die zuvor erstellte Funktions-App und Funktion aus. Klicken Sie auf Auswahl bestätigen.
Dieser Schritt ist optional, wird aber für Produktionsszenarien empfohlen. Navigieren Sie auf der Seite Ereignisabonnement erstellen zur Registerkarte Erweiterte Funktionen, und legen Sie Werte für Max. Anzahl von Ereignissen pro Batch und Bevorzugte Batchgröße in KB fest.
Durch die Batchverarbeitung kann ein hoher Durchsatz erreicht werden. Legen Sie für Max. Anzahl von Ereignissen pro Batch die maximale Anzahl von Ereignissen fest, die ein Abonnement in einen Batch einschließen soll. „Bevorzugte Batchgröße“ legt die bevorzugte Obergrenze der Batchgröße in KB fest, kann jedoch überschritten werden, wenn ein einzelnes Ereignis größer als dieser Schwellenwert ist.
Wählen Sie auf der Seite Ereignisabonnement erstellen die Option Erstellen aus.
Senden eines Ereignisses an Ihr Thema
Als Nächstes lösen wir ein Ereignis aus, um zu sehen, wie Event Grid die Nachricht an Ihren Endpunkt weiterleitet. Verwenden Sie die Azure-Befehlszeilenschnittstelle oder PowerShell, um ein Testereignis an Ihr benutzerdefiniertes Thema zu senden. Üblicherweise werden die Ereignisdaten von einer Anwendung oder einem Azure-Dienst gesendet.
Im ersten Beispiel wird die Azure-Befehlszeilenschnittstelle verwendet. Es ruft die URL und den Schlüssel für das benutzerdefinierte Thema sowie Beispielereignisdaten ab. Verwenden Sie für <topic name>
den Namen Ihres benutzerdefinierten Themas. Es werden Beispielereignisdaten erstellt. Bei dem data
-Element des JSON-Codes handelt es sich um die Nutzlast Ihres Ereignisses. Für dieses Feld kann ein beliebiger wohlgeformter JSON-Code verwendet werden. Sie können auch das Betrefffeld zur erweiterten Weiterleitung und Filterung verwenden. CURL ist ein Hilfsprogramm zum Senden von HTTP-Anforderungen.
Azure CLI
Wählen Sie im Azure-Portal die Option Cloud Shell aus. Wählen Sie links oben im Cloud Shell-Fenster die Option Bash aus.
Legen Sie die Variablen
topicname
undresourcegroupname
fest, die in den Befehlen verwendet werden.Ersetzen Sie
TOPICNAME
durch den Namen Ihres Event Grid-Themas.topicname="TOPICNAME"
Ersetzen Sie
RESOURCEGROUPNAME
durch den Namen der Azure-Ressourcengruppe, die das Event Grid-Thema enthält.resourcegroupname="RESOURCEGROUPNAME"
Führen Sie den folgenden Befehl aus, um den Endpunkt für das Thema abzurufen: Aktualisieren Sie nach dem Kopieren und Einfügen des Befehls den Namen des Themas (topic name) und den Namen der Ressourcengruppe (resource group name), bevor Sie den Befehl ausführen.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
Führen Sie den folgenden Befehl aus, um den Schlüssel für das benutzerdefinierte Thema abzurufen: Aktualisieren Sie nach dem Kopieren und Einfügen des Befehls den Namen des Themas (topic name) und den Namen der Ressourcengruppe (resource group name), bevor Sie den Befehl ausführen.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
Kopieren Sie die folgende Anweisung mit der Ereignisdefinition, und drücken Sie die EINGABETASTE.
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"} ]'
Führen Sie den folgenden Curl-Befehl aus, um das Ereignis zu veröffentlichen:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
Im zweiten Beispiel werden ähnliche Schritte mit PowerShell ausgeführt.
Wählen Sie im Azure-Portal die Option Cloud Shell aus (navigieren Sie alternativ zu
https://shell.azure.com/
). Wählen Sie links oben im Cloud Shell-Fenster die Option PowerShell aus. Eine Beispielabbildung des Fensters Cloud Shell finden Sie im Abschnitt für die Azure-Befehlszeilenschnittstelle.Legen Sie die folgenden Variablen fest. Aktualisieren Sie nach dem Kopieren und Einfügen der einzelnen Befehle den Namen des Themas (topic name) und den Namen der Ressourcengruppe (resource group name), bevor Sie den Befehl ausführen:
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
Führen Sie die folgenden Befehle aus, um den Endpunkt und die Schlüssel für das Thema abzurufen:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
Bereiten Sie das Ereignis vor. Kopieren Sie die Anweisungen, und führen Sie sie im Cloud Shell-Fenster aus.
$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)+"]"
Verwenden Sie das Cmdlet Invoke-WebRequest, um das Ereignis zu senden.
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Überprüfen, ob die Funktion das Ereignis empfangen hat
Sie haben das Ereignis ausgelöst, und Event Grid hat die Nachricht an den Endpunkt gesendet, den Sie beim Abonnieren konfiguriert haben.
Auf der Seite Überwachen für Ihre Azure-Funktion wird ein Aufruf angezeigt.
Wählen Sie den Aufruf aus, um die Details anzuzeigen.
Sie können auch die Registerkarte Protokolle im rechten Bereich verwenden, um die protokollierten Nachrichten anzuzeigen, wenn Sie Ereignisse an den Endpunkt des Themas posten.
Bereinigen von Ressourcen
Wenn Sie dieses Ereignis weiterverwenden möchten, können Sie die Bereinigung der in diesem Artikel erstellten Ressourcen überspringen. Löschen Sie andernfalls die Ressourcen, die Sie in diesem Artikel erstellt haben.
Wählen Sie im linken Menü die Option Ressourcengruppen aus. Sollte die Option nicht angezeigt werden, wählen Sie im linken Menü die Option Alle Dienste und anschließend Ressourcengruppen aus.
Wählen Sie die Ressourcengruppe aus, um die Seite Ressourcengruppe zu öffnen.
Wählen Sie auf der Symbolleiste die Option Ressourcengruppe löschen aus.
Bestätigen Sie den Löschvorgang, indem Sie den Namen der Ressourcengruppe eingeben und Löschen auswählen.
Die andere Ressourcengruppe, die auf der Abbildung zu sehen ist, wurde vom Cloud Shell-Fensters erstellt und verwendet. Löschen Sie sie, falls Sie das Cloud Shell-Fenster nicht mehr benötigen.
Nächste Schritte
Sie haben gelernt, wie Sie Themen und Ereignisabonnements erstellen. Nun können Sie sich ausführlicher darüber informieren, welche Möglichkeiten Event Grid bietet:
- Einführung in Azure Event Grid
- Weiterleiten von Blob Storage-Ereignissen an einen benutzerdefinierten Webendpunkt
- Überwachen von Änderungen an virtuellen Computern mit Azure Event Grid und Logic Apps
- Streamen von Big Data in ein Data Warehouse
In den folgenden Beispielen erfahren Sie, wie Sie Ereignisse in Event Grid mithilfe verschiedener Programmiersprachen veröffentlichen und nutzen: