Arbeiten mit Event Grid-Triggern und Bindungen in Azure Functions

Azure Functions bietet standardmäßige Integration in Azure Event Grid, indem Trigger und Bindungen verwendet werden. In diesem Artikel erfahren Sie, wie Sie Ihre Event Grid-Trigger und -Bindungen konfigurieren und lokal auswerten. Weitere Informationen zu Definitionen und Beispielen von Event Grid-Triggern und -Bindungen finden Sie in den folgenden Referenzartikeln:

Erstellen eines Ereignisabonnements

Zum Empfangen von Event Grid-HTTP-Anforderungen benötigen Sie ein Abonnement für Ereignisse, die von Event Grid ausgelöst werden. Ereignisabonnements geben die Endpunkt-URL an, die die Funktion aufruft. Wenn Sie ein Ereignisabonnement über die Registerkarte Integration Ihrer Funktion im Azure-Portal erstellen, wird die URL für Sie bereitgestellt. Wenn Sie programmgesteuert ein Ereignisabonnement erstellen oder das Ereignisabonnement aus Event Grid erstellen, müssen Sie den Endpunkt angeben. Die Endpunkt-URL enthält einen Systemschlüssel, den Sie aus den Rest-APIs des Functions-Administrators abrufen müssen.

Abrufen der URL des Webhook-Endpunkts

Der URL-Endpunkt für die durch Event Grid ausgelöste Funktion hängt von der Version der Functions-Runtime ab. Das folgende Beispiel zeigt das versionsabhängige URL-Muster:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

Hinweis

Es gibt eine Version des Blob Storage-Triggers, die auch Ereignisabonnements verwendet. Die Endpunkt-URL für diese Art von Blob Storage-Trigger hat den Pfad /runtime/webhooks/blobs. Der Pfad für einen Event Grid-Trigger wäre dagegen /runtime/webhooks/EventGrid. Einen Vergleich der Optionen für die Verarbeitung von Blobs finden Sie unter Trigger für einen Blobcontainer.

Abrufen des Systemschlüssels

Der URL-Endpunkt, den Sie erstellen, enthält einen Systemschlüsselwert. Der Systemschlüssel ist ein Autorisierungsschlüssel, der spezifisch für den Event Grid-Webhook ist, der in einer Anforderung an die Endpunkt-URL für einen Event Grid-Trigger enthalten sein muss. Im folgenden Abschnitt wird erläutert, wie der Systemschlüssel abgerufen wird.

Sie können auch die Hauptschlüssel für Ihre Funktions-App aus Funktionen>App-Schlüssel im Portal abrufen.

Achtung

Der Hauptschlüssel bietet Administratorzugriff auf Ihre Funktionen-App. Geben Sie diesen Schlüssel nicht an Dritte weiter und verteilen Sie ihn nicht in nativen Clientanwendungen.

Weitere Informationen finden Sie unter Arbeiten mit Zugriffsschüsseln in Azure Functions.

Sie können den Systemschlüssel aus Ihrer Funktions-App abrufen, indem Sie die folgenden Administrator-APIs (HTTP GET) verwenden:

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

Diese REST-API ist eine Administrator-API, d. h. sie erfordert den Hauptschlüssel Ihrer Funktions-App. Verwechseln Sie den Systemschlüssel (zum Aufrufen einer Event Grid-Triggerfunktion) nicht mit dem Masterschlüssel (zum Ausführen von Verwaltungsaufgaben in der Funktions-App). Verwenden Sie zum Abonnieren eines Event Grid-Themas immer den Systemschlüssel.

Beispiel für die Antwort, die den Systemschlüssel enthält:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

Erstellen des Abonnements

Sie können ein Ereignisabonnement entweder im Azure-Portal oder mithilfe der Azure CLI erstellen.

Wählen Sie für Funktionen, die Sie im Azure-Portal mit dem Event Grid-Trigger entwickeln, nacheinander die Optionen Integration, Event Grid-Trigger und Event Grid-Abonnement erstellen aus.

Screenshot: Verbinden eines neuen Ereignisabonnements mit einem Trigger im Portal.

Bei Auswahl dieses Links wird das Portal mit der Seite Ereignisabonnement erstellen geöffnet, auf der der aktuelle Triggerendpunkt bereits definiert ist.

Screenshot: Erstellen eines Ereignisabonnements mit einem bereits definierten Endpunkt.

Weitere Informationen zum Erstellen von Abonnements über das Azure-Portal finden Sie unter Erstellen eines benutzerdefinierten Ereignisses – Azure-Portal in der Event Grid-Dokumentation.

Weitere Informationen zum Erstellen eines Abonnements finden Sie im Schnellstart für Blob Storage oder in den anderen Schnellstarts für Event Grid.

Lokales Testen mit Viewer-Web-App

Zum lokalen Testen eines Event Grid-Triggers müssen Event Grid-HTTP-Anforderungen von ihrem Ursprung in der Cloud an Ihren lokalen Computer gesendet werden. Dies kann erfolgen, indem Anforderungen online erfasst und manuell erneut an Ihren lokalen Computer gesendet werden:

  1. Erstellen Sie eine Viewer-Web-App, die Ereignisnachrichten erfasst.
  2. Erstellen Sie ein Event Grid-Abonnement, mit dem Ereignisse an die Viewer-App gesendet werden.
  3. Generieren Sie eine Anforderung, und kopieren Sie den Anforderungstext von der Viewer-App.
  4. Stellen Sie die Anforderung manuell für die localhost-URL der Event Grid-Triggerfunktion bereit.

Zum Senden einer HTTP-Postanforderung benötigen Sie ein HTTP-Testtool. Stellen Sie sicher, dass Sie ein Tool auswählen, das Ihre Daten schützt. Weitere Informationen finden Sie unter Test Tools für HTTP.

Nach Abschluss der Tests können Sie dasselbe Abonnement für die Produktion verwenden, indem Sie den Endpunkt aktualisieren. Verwenden Sie den Azure CLI-Befehl az eventgrid event-subscription update.

Erstellen einer Viewer-Web-App

Zum einfachen Erfassen von Ereignisnachrichten können Sie eine vorgefertigte Web-App bereitstellen, die die Ereignisnachrichten anzeigt. Die bereitgestellte Lösung umfasst einen App Service-Plan, eine App Service-Web-App und Quellcode von GitHub.

Wählen Sie Deploy to Azure (In Azure bereitstellen), um die Lösung für Ihr Abonnement bereitzustellen. Geben Sie im Azure-Portal Werte für die Parameter an.

Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

Die Bereitstellung kann einige Minuten dauern. Nach erfolgreichem Abschluss der Bereitstellung können Sie Ihre Web-App anzeigen und sich vergewissern, dass sie ausgeführt wird. Navigieren Sie hierzu in einem Webbrowser zu https://<your-site-name>.azurewebsites.net.

Die Website wird angezeigt, aber es wurden noch keine Ereignisse bereitgestellt.

Anzeigen der neuen Website

Erstellen eines Event Grid-Abonnements

Erstellen Sie ein Event Grid-Abonnement des Typs, den Sie testen möchten, und geben Sie die URL Ihrer Web-App als Endpunkt für die Ereignisbenachrichtigung an. Der Endpunkt für Ihre Web-App muss das Suffix /api/updates/ enthalten. Daher lautet die vollständige URL https://<your-site-name>.azurewebsites.net/api/updates.

Informationen zum Erstellen von Abonnements über das Azure-Portal finden Sie unter Erstellen eines benutzerdefinierten Ereignisses – Azure-Portal in der Event Grid-Dokumentation.

Generieren einer Anforderung

Lösen Sie ein Ereignis aus, mit dem HTTP-Datenverkehr für Ihren Web-App-Endpunkt generiert wird. Wenn Sie z.B. ein Blob Storage-Abonnement erstellt haben, können Sie ein Blob hochladen oder löschen. Wenn eine Anforderung in Ihrer Web-App angezeigt wird, kopieren Sie den Anforderungstext.

Die Anforderung zur Abonnementüberprüfung wird zuerst empfangen. Ignorieren Sie sämtliche Überprüfungsanforderungen, und kopieren Sie die Ereignisanforderung.

Kopieren des Anforderungstexts aus Web-App

Manuelles Bereitstellen der Anforderung

Führen Sie die Event Grid-Funktion lokal aus. Die Header Content-Type und aeg-event-type müssen manuell festgelegt werden. Für alle anderen können die Standardwerte beibehalten werden.

Verwenden Sie Ihr HTTP-Testtool, um eine HTTP POST-Anforderung zu erstellen:

  • Legen Sie einen Content-Type: application/json-Header fest.

  • Legen Sie einen aeg-event-type: Notification-Header fest.

  • Fügen Sie die RequestBin-Daten im Anforderungstext ein.

  • Senden Sie eine HTTP POST-Anforderung an den Endpunkt, der den Event Grid-Trigger manuell startet.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

Der functionName-Parameter muss der im FunctionName-Attribut angegebene Name sein.

Mit der Event Grid-Triggerfunktion werden Protokolle ähnlich denen im folgenden Beispiel ausgeführt und angezeigt:

Beispielprotokolle der Event Grid-Triggerfunktion

Nächste Schritte

Weitere Informationen zu Event Grid mit Functions finden Sie in den folgenden Artikeln: