Weiterleiten benutzerdefinierter Ereignisse an einen Webendpunkt mit dem Microsoft Azure-Portal und Azure Event Grid
Event Grid ist ein vollständig verwalteter Dienst, mit dem Sie Ereignisse problemlos über viele verschiedene Azure-Dienste und -Anwendungen hinweg verwalten können. Er vereinfacht das Erstellen ereignisgesteuerter und serverloser Anwendungen. Eine Übersicht über den Dienst finden Sie unter Übersicht über Event Grid.
In diesem Artikel wird das Azure-Portal für die folgenden Aufgaben verwendet:
- Das Erstellen eines benutzerdefinierten Themas.
- Das Abonnieren eines benutzerdefinierten Themas.
- Das Auslösen eines Ereignisses.
- Das Anzeigen des Ergebnisses. Üblicherweise senden Sie Ereignisse an einen Endpunkt, der die Ereignisdaten verarbeitet und entsprechende Aktionen ausführt. Der Einfachheit halber senden Sie die Ereignisse in diesem Artikel allerdings an eine Web-App, die die Nachrichten sammelt und anzeigt.
Voraussetzungen
Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
Registrieren des Event Grid-Ressourcenanbieters
Sofern Sie Event Grid nicht bereits zuvor genutzt haben, müssen Sie den Event Grid-Ressourcenanbieter registrieren. Wenn Sie Event Grid bereits eingesetzt haben, fahren Sie mit dem nächsten Abschnitt fort.
Führen Sie im Azure-Portal folgende Schritte aus:
Wählen Sie im linken Menü Abonnements aus.
Wählen Sie das Abonnement, das Sie für Event Grid verwenden möchten, aus der Abonnementliste aus.
Wählen Sie auf der Seite Abonnement unter Einstellungen im linken Menü Ressourcenanbieter aus.
Suchen Sie nach Microsoft.EventGrid, und vergewissern Sie sich, dass der Status Nicht registriert lautet.
Wählen Sie microsoft.EventGrid in der Anbieterliste aus.
Wählen Sie Registrieren auf der Befehlsleiste aus.
Aktualisieren Sie, um sicherzustellen, dass der Status von Microsoft.EventGrid in Registriert geändert wird.
Erstellen eines benutzerdefinierten Themas
Ein Event Grid-Thema stellt einen benutzerdefinierten Endpunkt bereit, an dem Sie Ihre Ereignisse posten.
Melden Sie sich beim Azure-Portalan.
Geben Sie in der Suchleiste des Themas Event Grid-Themen ein, und wählen Sie dann Event Grid-Themen aus der Dropdownliste aus.
Wählen Sie auf der Symbolleiste der Seite Event Grid-Themen die Option + Hinzufügen aus.
Gehen Sie auf der Seite Thema erstellen wie folgt vor:
Wählen Sie Ihr Azure- Abonnementaus.
Wählen Sie eine bereits vorhandene Ressourcengruppe aus, oder wählen Sie Neu erstellen aus, und geben Sie unter Name einen Namen für die Ressourcengruppe ein.
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.
Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.
Wählen Sie auf der Registerkarte Überprüfen + erstellen der Seite Thema erstellen den Befehl Erstellen aus.
Nachdem die Bereitstellung erfolgreich durchgeführt wurde, wählen Sie Zu Ressource wechseln aus, um zu der Seite Event Grid-Systemthema für Ihr Thema zu navigieren. Lassen Sie diese Seite geöffnet. Sie wird im weiteren Verlauf der Schnellstartanleitung benötigt.
Hinweis
Um den Schnellstart einfach zu halten, verwenden Sie nur die Seite "Grundlagen", um ein Thema zu erstellen. Ausführliche Schritte zum Konfigurieren von Netzwerk-, Sicherheits- und Datenbewahrungseinstellungen auf anderen Seiten des Assistenten finden Sie unter Erstellen eines benutzerdefinierten Themas.
Erstellen eines Nachrichtenendpunkts
Erstellen Sie zunächst einen Endpunkt für die Ereignisnachricht, bevor Sie ein Abonnement für das benutzerdefinierte Thema erstellen. Der Endpunkt führt in der Regel Aktionen auf der Grundlage der Ereignisdaten aus. Um diesen Schnellstart zu vereinfachen stellen Sie eine vorab erstellte Web-App bereit, welche die Ereignisnachrichten anzeigt. Die bereitgestellte Lösung umfasst einen App Service-Plan, eine App Service-Web-App und Quellcode von GitHub.
Wählen Sie auf der Artikelseite Deploy to Azure (In Azure bereitstellen) aus, um die Lösung für Ihr Abonnement bereitzustellen. Geben Sie im Azure-Portal Werte für die Parameter an.
Gehen Sie auf der Seite Benutzerdefinierte Bereitstellung wie folgt vor:
Wählen Sie für Ressourcengruppe eine bestehende Ressourcengruppe aus, oder erstellen Sie eine Ressourcengruppe.
Geben Sie unter Websitename einen Namen für die Web-App ein.
Geben Sie unter Name des Hostingplans einen Namen für den App Service-Plan zum Hosten der Web-App ein.
Klicken Sie auf Überprüfen + erstellen.
Wählen Sie auf der Seite Überprüfen + erstellen die Option Erstellen aus.
Die Bereitstellung kann einige Minuten dauern. Wählen Sie im Portal die Option „Warnungen“ (Glockensymbol) und anschließend Zu Ressourcengruppe wechseln aus.
Wählen Sie auf der Seite Ressourcengruppe in der Ressourcenliste die erstellte Web-App (contosoegriviewer im folgenden Beispiel) aus.
Wählen Sie auf der Seite App Service für Ihre Web-App die URL aus, um zur entsprechenden Website zu navigieren. Die URL muss folgendes Format haben:
https://<your-site-name>.azurewebsites.net
.Vergewissern Sie sich, dass die Website angezeigt wird, aber noch keine Ereignisse bereitgestellt wurden.
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 unter Endpunkttyp die Option Webhook aus.
Wählen Sie Endpunkt auswählen aus.
Geben Sie für den Webhookendpunkt die URL Ihrer Web-App an, und fügen Sie
api/updates
der URL der Startseite hinzu. Klicken Sie auf Auswahl bestätigen.Wählen Sie auf der Seite Ereignisabonnement erstellen die Option Erstellen aus.
Zeigen Sie wieder Ihre Web-App an. Wie Sie sehen, wurde ein Abonnementüberprüfungsereignis an sie gesendet. Klicken Sie auf das Augensymbol, um die Ereignisdaten zu erweitern. Event Grid sendet das Überprüfungsereignis, damit der Endpunkt bestätigen kann, dass er Ereignisdaten empfangen möchte. Die Web-App enthält Code zur Überprüfung des Abonnements.
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. Die Cloud Shell wird im unteren Bereich des Webbrowsers geöffnet.
Wählen Sie links oben im Cloud Shell-Fenster die Option Bash aus.
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. Sie veröffentlichen Beispielereignisse an diesen Themenendpunkt.
endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --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. Das ist der Primärschlüssel des Event Grid-Themas. Um diesen Schlüssel aus dem Azure-Portal abzurufen, wechseln Sie zur Registerkarte Zugriffsschlüssel der Seite Event Grid-Thema. Um ein Ereignis in einem benutzerdefinierten Thema bereitstellen zu können, benötigen Sie den Zugriffsschlüssel.
key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --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: In dem Befehl wird der
aeg-sas-key
-Header auf den Zugriffsschlüssel festgelegt, den Sie zuvor abgerufen haben.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/
). Die Cloud Shell wird im unteren Bereich des Webbrowsers geöffnet.Wählen Sie in der Cloud Shell 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:
Ressourcengruppe:
$resourceGroupName = "<resource group name>"
Name des Event Grid-Themas:
$topicName = "<topic name>"
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 im Event Grid-Viewer
Sie haben das Ereignis ausgelöst, und Event Grid hat die Nachricht an den Endpunkt gesendet, den Sie beim Abonnieren konfiguriert haben. Zeigen Sie Ihre Web-App an, um das soeben gesendete Ereignis anzuzeigen.
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 benutzerdefinierte 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: