Freigeben über


Senden von Ereignissen mithilfe von Azure Event Grid und Azure Relay an Webhooks, die in privaten Zielen gehostet werden

In diesem Artikel erfahren Sie, wie Sie Ereignisse von Azure Event Grid mithilfe von Azure Relay in Webhooks empfangen, die in privaten Zielen gehostet werden, z. B. lokalen Servern oder virtuellen Computern.

Azure Relay ist ein Dienst, der es Ihnen ermöglicht, Dienste in einem Unternehmensnetzwerk sicher in der öffentlichen Cloud bereitzustellen, ohne dass eine Firewallverbindung geöffnet werden muss oder tiefgreifende Veränderungen an der Netzwerkinfrastruktur des Unternehmens vorgenommen werden müssen.

Azure Relay unterstützt Hybridverbindungen, eine sichere Weiterentwicklung der vorhandenen Azure Relay-Funktion mit offenem Protokoll, das auf jeder beliebigen Plattform und in jeder beliebigen Sprache implementiert werden kann, die über eine grundlegende WebSocket-Funktion mit der Möglichkeit verfügt, Datenverkehr über ein von Azure Event Grid initiiertes Relay zu akzeptieren. Weitere Informationen finden Sie unter Leitfaden zum Azure Relay-Hybridverbindungsprotokoll.

Empfangen von Ereignissen aus den grundlegenden Ressourcen von Event Grid in Webhooks in privaten Zielen

In diesem Abschnitt finden Sie die grundlegenden Schritte zum Empfangen von Ereignissen von Event Grid-Standardressourcen in Webhooks, die mithilfe von Azure Relay in privaten Zielen gehostet werden.

  1. Erstellen Sie eine Azure Relay-Ressource. Sie können die Azure-Portal-, Azure CLI- oder Azure Resource Manager-Vorlagen verwenden, um einen Relay-Namespace und eine Hybridverbindung zu erstellen. Weitere Informationen finden Sie unter Erstellen von Azure Relay-Namespaces und Hybridverbindungen mithilfe des Azure-Portals.

    Hinweis

    Stellen Sie sicher, dass Sie die Option Clientautorisierung erforderlich aktiviert haben. Diese Option stellt sicher, dass nur autorisierte Clients eine Verbindung mit Ihrem Hybridverbindungsendpunkt herstellen können. Sie können das Azure-Portal oder Azure CLI verwenden, um die Clientautorisierung zu aktivieren und die Regeln für die Clientautorisierung zu verwalten. Weitere Informationen finden Sie unter Sichere Azure Relay-Hybridverbindungen.

  2. Implementieren Sie den Listener für die Azure Relay-Hybridverbindung.

    • Option 1: Sie können das Azure Relay SDK für .NET verwenden, um einen Listener für die Hybridverbindung programmgesteuert zu erstellen und die eingehenden Anforderungen zu verarbeiten. Weitere Informationen finden Sie unter Azure Relay-Hybridverbindungen: HTTP-Anforderungen in .NET.
    • Option 2: Azure Relay Bridge. Sie können Azure Relay Bridge verwenden, ein plattformübergreifendes Befehlszeilentool, mit dem TCP-Tunnel ohne VPN zwischen beliebigen Hosts erstellt werden können. Sie können die Azure Relay Bridge als Docker-Container oder als eigenständige ausführbare Datei ausführen. Weitere Informationen finden Sie unter Azure Relay Bridge.
  3. Stellen Sie sicher, dass Ihr Listener für die Hybridverbindung verbunden ist. Mit dem folgenden Azure CLI-Befehl können Sie die Hybridverbindungen in Ihrem Namespace auflisten und ihren Status überprüfen.

    az relay hyco list --resource-group [resource-group-name] --namespace-name [namespace-name]. You should see a "listenerCount" attribute in the properties of your hybrid connection.
    
  4. Erstellen Sie ein Azure Event Grid-Systemthema. Sie können die Azure-Portal-, Azure CLI- oder Azure Resource Manager-Vorlagen verwenden, um ein Systemthema zu erstellen, das einem Azure-Dienst entspricht, der über Ereignisse wie Speicherkonten, Event Hubs oder Azure-Abonnements verfügt. Weitere Informationen finden Sie unter Systemthemen in Azure Event Grid.

  5. Erstellen Sie ein Ereignisabonnement für das Systemthema. Sie können die Azure-Portal-, Azure CLI- oder Azure Resource Manager-Vorlagen verwenden, um ein Ereignisabonnement zu erstellen, das die Filterkriterien und den Zielendpunkt für die Ereignisse definiert. Wählen Sie in diesem Fall die Azure Relay-Hybridverbindung als Endpunkttyp aus, und stellen Sie die Verbindungszeichenfolge Ihrer Hybridverbindung bereit. Weitere Informationen finden Sie unter Azure Relay-Hybridverbindung als Ereignishandler.

Überlegungen für das Verwenden von Webhooks zum Erhalten von Ereignissen aus Azure Event Grid

Stellen Sie sicher, dass der Überprüfungshandshake für Cloudereignisse implementiert ist. Hier sehen Sie den Beispielcode in C#, der veranschaulicht, wie Sie den während der Abonnementerstellung erforderlichen Handshake für das Cloudereignisschema überprüfen. Sie können diesen Beispielcode als Referenz verwenden, um Ihre eigene Überprüfungshandshake-Logik in Ihrer bevorzugten Sprache zu implementieren.

if (context.Request.HttpMethod == "OPTIONS" && context.Request.Url.PathAndQuery == _settings!.relayWebhookPath)
{
                context.Response.StatusCode = HttpStatusCode.OK;
                context.Response.StatusDescription = "OK";

                var origin = context.Request.Headers["Webhook-Request-Origin"];
                context.Response.Headers.Add("Webhook-Allowed-Origin", origin);
                using (var sw = new StreamWriter(context.Response.OutputStream))
                {
                                sw.WriteLine("OK");
                }

                context.Response.Close();
}

Wenn Sie Ereignisse von der Azure Relay Bridge an Ihren lokalen Webhook weiterleiten möchten, können Sie den folgenden Befehl verwenden:

.\azbridge.exe -x "AzureRelayConnectionString" -H [HybridConnectionName]:[http/https]/localhost:[ApplicationPort] -v