Tutorial: Weiterleiten benutzerdefinierter Ereignisse an Azure Relay Hybrid Connections mit Azure-Befehlszeilenschnittstelle und Event Grid

Azure Event Grid ist ein Ereignisdienst für die Cloud. Azure Relay Hybrid Connections ist einer der unterstützten Ereignishandler. Hybridverbindungen werden als Ereignishandler verwendet, wenn Sie Ereignisse von Anwendungen verarbeiten müssen, die über keinen öffentlichen Endpunkt verfügen. Diese Anwendungen können sich in Ihrem Unternehmensnetzwerk befinden. In diesem Artikel erstellen Sie mithilfe der Azure-Befehlszeilenschnittstelle ein benutzerdefiniertes Thema, abonnieren dieses benutzerdefinierte Thema und lösen das Ereignis zum Anzeigen des Ergebnisses aus. Sie senden die Ereignisse an die Hybridverbindung.

Voraussetzungen

Sie können entweder die Azure Cloud Shell oder eine lokale Azure CLI verwenden.

  • Azure Cloud Shell mit Bash-Umgebung. Oder starten Sie die Cloud Shell hier.

    Starten von Cloud Shell in einem neuen Fenster

  • Lokale Azure CLI, erfahren Sie, wie Sie die Azure CLI installieren. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Melden Sie sich mit dem Befehl az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Wenn Sie Azure CLI zum ersten Mal verwenden, installieren Sie zuerst die Azure CLI-Erweiterung. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Für diesen Artikel ist mindestens Version 2.0.56 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Erstellen einer Ressourcengruppe

Event Grid-Themen sind Azure-Ressourcen und müssen in einer Azure-Ressourcengruppe platziert werden. Die Azure-Ressourcengruppe ist eine logische Sammlung, in der Azure-Ressourcen bereitgestellt und verwaltet werden.

Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe.

Das folgende Beispiel erstellt eine Ressourcengruppe namens gridResourceGroup am Standort westus2.

az group create --name gridResourceGroup --location westus2

Erstellen eines benutzerdefinierten Themas

Ein Event Grid-Thema verfügt über einen benutzerdefinierten Endpunkt für die Veröffentlichung Ihrer Ereignisse. Im folgenden Beispiel wird das benutzerdefinierte Thema in Ihrer Ressourcengruppe erstellt. Ersetzen Sie <topic_name> durch einen eindeutigen Namen für Ihr benutzerdefiniertes Thema. Der Name des Event Grid-Themas muss eindeutig sein, da er durch einen DNS-Eintrag dargestellt wird.

az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup

Abonnieren eines benutzerdefinierten Themas

Sie abonnieren ein Event Grid-Thema, um Event Grid mitzuteilen, welche Ereignisse Sie nachverfolgen möchten. Im folgenden Beispiel wird das von Ihnen erstellte benutzerdefinierte Thema abonniert. Außerdem wird die Ressourcen-ID der Hybridverbindung für den Endpunkt übergeben. Die Hybridverbindungs-ID weist das folgende Format auf:

/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Relay/namespaces/<relay-namespace>/hybridConnections/<hybrid-connection-name>

Das folgende Skript ruft die Ressourcen-ID des Relaynamespaces ab. Es erstellt die ID für die Hybridverbindung und abonniert ein Event Grid-Thema. Das Skript legt den Endpunkttyp auf hybridconnection fest und verwendet die Hybridverbindungs-ID für den Endpunkt.

relayname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>

relayid=$(az resource show --name $relayname --resource-group $relayrg --resource-type Microsoft.Relay/namespaces --query id --output tsv)
hybridid="$relayid/hybridConnections/$hybridname"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint-type hybridconnection \
  --endpoint $hybridid \
  --expiration-date "<yyyy-mm-dd>"

Beachten Sie, dass für das Abonnement ein Ablaufdatum festgelegt ist.

Erstellen einer Anwendung zum Verarbeiten von Ereignissen

Sie benötigen eine Anwendung, die Ereignisse von der Hybridverbindung abrufen kann. Im Verbraucherbeispiel für die Microsoft Azure Event Grid-Hybridverbindung in C# wird dieser Vorgang ausgeführt. Sie haben die erforderlichen Schritte bereits abgeschlossen.

  1. Stellen Sie sicher, dass Sie über Visual Studio 2019 oder höher verfügen.

  2. Klonen Sie das Repository auf Ihren lokalen Computer.

  3. Laden Sie das Projekt „HybridConnectionConsumer“ in Visual Studio.

  4. Ersetzen Sie in „Program.cs“ <relayConnectionString> und <hybridConnectionName> mit der Verbindungszeichenfolge und den Namen der Hybridverbindung, die Sie erstellt haben.

  5. Kompilieren Sie die Anwendung, und führen Sie sie über Visual Studio aus.

Senden eines Ereignisses an Ihr Thema

Nun wird ein Ereignis ausgelöst, um zu sehen, wie Event Grid die Nachricht an Ihren Endpunkt weiterleitet. In diesem Artikel erfahren Sie, wie Sie Azure CLI zum Auslösen des Ereignisses verwenden. Alternativ können Sie die Event Grid-Herausgeber-App verwenden.

Zunächst rufen wir die URL und den Schlüssel für das benutzerdefinierte Thema ab. Verwenden Sie auch hier für <topic_name> den Namen Ihres benutzerdefinierten Themas.

endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -g gridResourceGroup --query "key1" --output tsv)

Zur Vereinfachung dieses Artikels verwenden Sie Beispielereignisdaten, die an das benutzerdefinierte Thema gesendet werden können. Üblicherweise werden die Ereignisdaten von einer Anwendung oder einem Azure-Dienst gesendet. CURL ist ein Hilfsprogramm zum Senden von HTTP-Anforderungen. In diesem Artikel wird CURL verwendet, um das Ereignis an das benutzerdefinierte Thema zu senden.

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"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

Die Listener-Anwendung sollte die Ereignismeldung empfangen.

Bereinigen von Ressourcen

Wenn Sie dieses Ereignis weiterverwenden möchten, können Sie die Bereinigung der in diesem Artikel erstellten Ressourcen überspringen. Verwenden Sie andernfalls den folgenden Befehl, um die in diesem Artikel erstellten Ressourcen zu löschen.

az group delete --name gridResourceGroup

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: