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:

  1. Das Erstellen eines benutzerdefinierten Themas.
  2. Das Abonnieren eines benutzerdefinierten Themas.
  3. Das Auslösen eines Ereignisses.
  4. 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:

  1. Wählen Sie im linken Menü Abonnements aus.

  2. Wählen Sie das Abonnement, das Sie für Event Grid verwenden möchten, aus der Abonnementliste aus.

  3. Wählen Sie auf der Seite Abonnement unter Einstellungen im linken Menü Ressourcenanbieter aus.

  4. Suchen Sie nach Microsoft.EventGrid, und vergewissern Sie sich, dass der StatusNicht registriert lautet.

  5. Wählen Sie microsoft.EventGrid in der Anbieterliste aus.

  6. Wählen Sie Registrieren auf der Befehlsleiste aus.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

  7. Aktualisieren Sie, um sicherzustellen, dass der Status von Microsoft.EventGrid in Registriert geändert wird.

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

Erstellen eines benutzerdefinierten Themas

Ein Event Grid-Thema stellt einen benutzerdefinierten Endpunkt bereit, an dem Sie Ihre Ereignisse posten.

  1. Melden Sie sich beim Azure-Portalan.

  2. Geben Sie in der Suchleiste des Themas Event Grid-Themen ein, und wählen Sie dann Event Grid-Themen aus der Dropdownliste aus.

    Screenshot showing the Azure port search bar to search for Event Grid topics.

  3. Wählen Sie auf der Symbolleiste der Seite Event Grid-Themen die Option + Hinzufügen aus.

    Screenshot showing the Create Topic button on Event Grid topics page.

  4. Gehen Sie auf der Seite Thema erstellen wie folgt vor:

    1. Wählen Sie Ihr Azure- Abonnementaus.

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

    3. 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 (-).

    4. Wählen Sie einen Speicherort für das Event Grid-Thema aus.

    5. Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.

      Create Topic page

    6. Wählen Sie auf der Registerkarte Überprüfen + erstellen der Seite Thema erstellen den Befehl Erstellen aus.

      Review settings and create

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

    Screenshot showing the Event Grid topic home page.

    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.

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

    Button to deploy the Resource Manager template to Azure.

  2. Gehen Sie auf der Seite Benutzerdefinierte Bereitstellung wie folgt vor:

    1. Wählen Sie unter Ressourcengruppe die Ressourcengruppe aus, die Sie beim Erstellen des Speicherkontos erstellt haben. Dadurch muss zur Bereinigung nach Abschluss des Tutorials einfach nur die Ressourcengruppe gelöscht werden.

    2. Geben Sie unter Websitename einen Namen für die Web-App ein.

    3. Geben Sie unter Name des Hostingplans einen Namen für den App Service-Plan zum Hosten der Web-App ein.

    4. Klicken Sie auf Überprüfen + erstellen.

      Screenshot showing the Custom deployment page.

  3. Wählen Sie auf der Seite Überprüfen + erstellen die Option Erstellen aus.

  4. Die Bereitstellung kann einige Minuten dauern. Wählen Sie im Portal die Option „Warnungen“ (Glockensymbol) und anschließend Zu Ressourcengruppe wechseln aus.

    Screenshot showing the successful deployment message with a link to navigate to the resource group.

  5. Wählen Sie auf der Seite Ressourcengruppe in der Ressourcenliste die von Ihnen erstellte Web-App aus. In dieser Liste werden auch der App Service-Plan und das Speicherkonto angezeigt.

    Screenshot that shows the Resource Group page with the deployed resources.

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

    Screenshot that shows the App Service page with the link to the site highlighted.

  7. Vergewissern Sie sich, dass die Website angezeigt wird, aber noch keine Ereignisse bereitgestellt wurden.

    Screenshot that shows the Event Grid Viewer sample app.

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.

  1. Wählen Sie nun auf der Symbolleiste der Seite Event Grid-Thema für Ihr benutzerdefiniertes Thema die Option + Ereignisabonnement aus.

    Add event subscription button

  2. Gehen Sie auf der Seite Ereignisabonnement erstellen wie folgt vor:

    1. Geben Sie unter Name einen Namen für das Ereignisabonnement an.

    2. Wählen Sie unter Endpunkttyp die Option Webhook aus.

    3. Wählen Sie Endpunkt auswählen aus.

      Provide event subscription values

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

      Provide endpoint URL

    5. Wählen Sie auf der Seite Ereignisabonnement erstellen die Option Erstellen aus.

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

    Screenshot of the Event Grid Viewer app with the Subscription Validated event.

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

  1. Wählen Sie im Azure-Portal die Option Cloud Shell aus. Die Cloud Shell wird im unteren Bereich des Webbrowsers geöffnet.

    Select Cloud Shell icon

  2. Wählen Sie links oben im Cloud Shell-Fenster die Option Bash aus.

    Screenshot that shows the Cloud Shell with Bash selected in the top-left corner.

  3. 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)
    
  4. 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)
    
  5. 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"} ]'
    
  6. 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.

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

    Select Cloud Shell icon

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

  3. 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>"
    
  4. 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
    
  5. 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)+"]"
    
  6. 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.

Event Grid Viewer

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.

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

    Screenshot that shows the Resource Groups page.

  2. Wählen Sie die Ressourcengruppe aus, um die Seite Ressourcengruppe zu öffnen.

  3. Wählen Sie auf der Symbolleiste die Option Ressourcengruppe löschen aus.

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

In den folgenden Beispielen erfahren Sie, wie Sie Ereignisse in Event Grid mithilfe verschiedener Programmiersprachen veröffentlichen und nutzen: