Übung: Weiterleiten benutzerdefinierter Ereignisse an den Webendpunkt mithilfe der Azure CLI

Abgeschlossen

In dieser Übung lernen Sie Folgendes:

  • Aktivieren eines Event Grid-Ressourcenanbieters
  • Erstellen eines benutzerdefinierten Themas
  • Erstellen eines Nachrichtenendpunkts
  • Abonnieren eines benutzerdefinierten Themas
  • Senden eines Ereignisses an ein benutzerdefiniertes Thema

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch keines haben, können Sie sich unter https://azure.com/free für eine kostenlose Testversion registrieren.

Erstellen einer Ressourcengruppe

In diesem Abschnitt öffnen Sie Ihr Terminal und erstellen einige Variablen, die während der restlichen Übung verwendet werden, um die Befehlseingabe und die Erstellung eindeutiger Ressourcennamen etwas zu vereinfachen.

  1. Starten Sie Cloud Shell: https://shell.azure.com

  2. Wählen Sie Bash als Shell aus.

  3. Führen Sie die folgenden Befehle aus, um die Variablen zu erstellen. Ersetzen Sie <myLocation> durch eine Region in Ihrer Nähe.

    let rNum=$RANDOM*$RANDOM
    myLocation=<myLocation>
    myTopicName="az204-egtopic-${rNum}"
    mySiteName="az204-egsite-${rNum}"
    mySiteURL="https://${mySiteName}.azurewebsites.net"
    
  4. Erstellen Sie eine Ressourcengruppe für die neuen Ressourcen, die Sie erstellen.

    az group create --name az204-evgrid-rg --location $myLocation
    

Aktivieren eines Event Grid-Ressourcenanbieters

Hinweis

Dieser Schritt ist nur für Abonnements erforderlich, die Event Grid zuvor noch nicht verwendet haben.

Registrieren Sie die Event Grid-Ressource mit dem Befehl az provider register.

az provider register --namespace Microsoft.EventGrid

Es kann einige Minuten dauern, bis die Registrierung abgeschlossen ist. Führen Sie den folgenden Befehl aus, um den Status zu überprüfen.

az provider show --namespace Microsoft.EventGrid --query "registrationState"

Erstellen eines benutzerdefinierten Themas

Erstellen Sie mit dem Befehl az eventgrid topic create ein benutzerdefiniertes Thema. Der Name muss eindeutig sein, da er Teil des DNS-Eintrags ist.

az eventgrid topic create --name $myTopicName \
    --location $myLocation \
    --resource-group az204-evgrid-rg

Erstellen eines Nachrichtenendpunkts

Vor dem Abonnieren des benutzerdefinierten Themas müssen Sie den Endpunkt für die Ereignisnachricht erstellen. Der Endpunkt führt in der Regel Aktionen auf der Grundlage der Ereignisdaten aus. Das folgende Skript verwendet eine vordefinierte Web-App, die die Ereignismeldungen anzeigt. Die bereitgestellte Lösung umfasst einen App Service-Plan, eine App Service-Web-App und Quellcode von GitHub. Außerdem generiert es einen eindeutigen Name für die Website.

  1. Erstellen Sie einen Nachrichtenendpunkt. Die Bereitstellung kann einige Minuten dauern.

    az deployment group create \
        --resource-group az204-evgrid-rg \
        --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" \
        --parameters siteName=$mySiteName hostingPlanName=viewerhost
    
    echo "Your web app URL: ${mySiteURL}"
    

    Hinweis

    Die Ausführung dieses Befehls kann einige Minuten in Anspruch nehmen.

  2. Navigieren Sie auf einer neuen Registerkarte zu der URL, die am Ende des Skripts oben generiert wurde, um sicherzustellen, dass die Web-App ausgeführt wird. Die Website sollte angezeigt werden, und es sollten momentan keine Nachrichten vorliegen.

    Tipp

    Setzen Sie die Ausführung des Browsers fort. Er wird zum Anzeigen von Aktualisierungen verwendet.

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. Abonnieren Sie mit dem Befehl az eventgrid event-subscription create ein benutzerdefiniertes Thema. Mit dem folgenden Skript wird die benötigte Abonnement-ID aus Ihrem Konto abgerufen und bei der Erstellung des Ereignisabonnements verwendet.

    endpoint="${mySiteURL}/api/updates"
    subId=$(az account show --subscription "" | jq -r '.id')
    
    az eventgrid event-subscription create \
        --source-resource-id "/subscriptions/$subId/resourceGroups/az204-evgrid-rg/providers/Microsoft.EventGrid/topics/$myTopicName" \
        --name az204ViewerSub \
        --endpoint $endpoint
    
  2. 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 benutzerdefiniertes Thema

Lösen Sie ein Ereignis aus, um zu sehen, wie Event Grid die Nachricht an Ihren Endpunkt verteilt.

  1. Rufen Sie die URL und den Schlüssel für das benutzerdefinierte Thema ab.

    topicEndpoint=$(az eventgrid topic show --name $myTopicName -g az204-evgrid-rg --query "endpoint" --output tsv)
    key=$(az eventgrid topic key list --name $myTopicName -g az204-evgrid-rg --query "key1" --output tsv)
    
  2. Erstellen Sie zu sendende Ereignisdaten. In der Regel sendet eine Anwendung oder ein Azure-Dienst die Ereignisdaten. Wir erstellen Daten für die Zwecke der Übung.

    event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Contoso", "model": "Northwind"},"dataVersion": "1.0"} ]'
    
  3. Verwenden Sie curl, um das Ereignis an das Thema zu senden.

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint
    
  4. Zeigen Sie Ihre Web-App an, um das soeben gesendete Ereignis anzuzeigen. Klicken Sie auf das Augensymbol, um die Ereignisdaten zu erweitern.

    {
    "id": "29078",
    "eventType": "recordInserted",
    "subject": "myapp/vehicles/motorcycles",
    "eventTime": "2019-12-02T22:23:03+00:00",
    "data": {
        "make": "Contoso",
        "model": "Northwind"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1",
    "topic": "/subscriptions/{subscription-id}/resourceGroups/az204-evgrid-rg/providers/Microsoft.EventGrid/topics/az204-egtopic-589377852"
    }
    

Bereinigen von Ressourcen

Wenn Sie die Ressourcen in dieser Übung nicht mehr benötigen, verwenden Sie den folgenden Befehl, um die Ressourcengruppe und die zugehörigen Ressourcen zu löschen.

az group delete --name az204-evgrid-rg --no-wait