Tutorial: Weiterleiten benutzerdefinierter Ereignisse an Azure Relay Hybrid Connections mit Azure-Befehlszeilenschnittstelle und Event Grid
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.
Hinweis
Wenn Sie neu bei Azure Event Grid sind, lesen Sie Was ist Azure Event Grid?, um einen Überblick über den Dienst zu erhalten, bevor Sie dieses Tutorial durcharbeiten.
Voraussetzungen
- In diesem Artikel wird davon ausgegangen, dass Sie bereits über eine Hybridverbindung und eine Listener-Anwendung verfügen. Informationen zu den ersten Schritten mit Hybridverbindungen finden Sie unter Erste Schritte mit Relay Hybrid Connections – .NET oder Erste Schritte mit Relay Hybrid Connections – Knoten.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. 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.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls 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.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. 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 stellt einen benutzerdefinierten Endpunkt bereit, an dem Sie Ihre Ereignisse posten. 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 (Domain Name System) 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 Hybrid-Verbindung 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 Hybrid-Verbindung und abonniert ein Event Grid-Thema. Das Skript legt den Endpunkttyp auf hybridconnection
fest und verwendet die Hybridverbindungs-ID für den Endpunkt.
relaynsname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>
relayid=$(az relay namespace show --resource-group $relayrg --name $relaynsname --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.
Stellen Sie sicher, dass Sie über Visual Studio 2019 oder höher verfügen.
Klonen Sie das Repository auf Ihren lokalen Computer.
Laden Sie das Projekt „HybridConnectionConsumer“ in Visual Studio.
Ersetzen Sie in „Program.cs“
<relayConnectionString>
und<hybridConnectionName>
mit der Verbindungszeichenfolge und den Namen der Hybridverbindung, die Sie erstellt haben.Kompilieren Sie die Anwendung, und führen Sie sie über Visual Studio aus.
Wichtig
Sie verwenden zur Vereinfachung des Tutorials eine Verbindungszeichenfolge, um sich bei einem Azure Relay-Namespace zu authentifizieren. Es wird empfohlen, die Microsoft Entra ID-Authentifizierung in Produktionsumgebungen zu verwenden. Wenn Sie eine Anwendung verwenden, können Sie die verwaltete Identität für die Anwendung aktivieren und die Identität einer geeigneten Rolle (Azure Relay-Besitzer, Azure Relay-Listener oder Azure Relay-Sender) im Relay-Namespace zuweisen. Weitere Informationen finden Sie unter Authentifizieren einer verwalteten Identität mit Microsoft Entra ID für den Zugriff auf Azure Relay-Ressourcen.
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: