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:

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.

Endpunkt-URL des Webhooks

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.

Systemschlüssel

Der URL-Endpunkt, den Sie erstellen, enthält den Systemschlüsselwert. Der Systemschlüssel ist ein Autorisierungsschlüssel, der in der Endpunkt-URL für einen Event Grid-Trigger eingefügt werden muss. Im folgenden Abschnitt wird erläutert, wie der Systemschlüssel abgerufen wird.

Sie können den Systemschlüssel mithilfe der folgenden API (HTTP GET) abrufen:

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}"
    }
  ]
}

Sie erhalten den Hauptschlüssel für Ihre Funktionen-App über die Registerkarte Funktionen-App-Einstellungen im Portal.

Wichtig

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 Autorisierungsschlüssel im Referenzartikel zu HTTP-Triggern.

Erstellen eines Ereignisabonnements

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 of connecting to a new event subscription to trigger in the portal.

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

Screenshot of creating an event subscription with the function endpoint already defined.

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.

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.

Sie können auch das ngrok-Hilfsprogramm verwenden, um Remoteanforderungen an Ihre lokal ausgeführten Funktionen weiterzuleiten. Weitere Informationen finden Sie in diesem Tutorial.

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.

Button to deploy the Resource Manager template to 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.

View new site

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.

Copy request body from 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 ein Tool wie z.B. Postman oder cURL, 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.

  • Stellen Sie die Anforderung für die URL der Event Grid-Triggerfunktion bereit.

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

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

In den folgenden Screenshots sind die Header und der Anforderungstext in Postman dargestellt:

Headers in Postman

Request body in Postman

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

Sample Event Grid trigger function logs

Nächste Schritte

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