Verwenden einer Funktion als Ereignishandler für Event Grid-Ereignisse

Ein Event Handler ist das Ziel, an dem Azure Event Grid ein Ereignis zur Verarbeitung sendet. Azure konfiguriert automatisch mehrere Services, um Ereignisse zu verarbeiten, und Azure Functions ist eines davon.

Wenn du eine Funktion als Ereignishandler verwendest, führst du benutzerdefinierten Code als Reaktion auf jedes Ereignis aus, ohne Server bereitzustellen oder zu verwalten. So kann Event Grid beispielsweise eine Funktion als Anti-Korruptionsschicht nutzen, die Ereignisse transformiert oder validiert, bevor sie an nachgelagerte Systeme weitergeleitet werden.

Dieser Artikel beschreibt zwei Möglichkeiten, eine Funktion als Ereignishandler zu verwenden, und erklärt, welchen Ansatz verwendet werden sollte.

Um eine Funktion in Azure als Handler für Ereignisse zu verwenden, verfolgen Sie einen der folgenden Ansätze:

  • Verwenden Sie einen Event Grid-Auslöser. Geben Sie Azure Function als den Endpunkttyp an. Dann gib die Funktions-App und die Funktion an, die Ereignisse verwaltet.
  • Verwenden Sie einen HTTP-Trigger. Geben Sie Webhook als Endpunkttyp an. Dann geben Sie die URL für die Funktion an, die Ereignisse behandelt.

Verwenden Sie den ersten Ansatz (Event Grid Trigger). Es hat folgende Vorteile gegenüber dem zweiten Ansatz:

  • Event Grid überprüft Event Grid-Trigger automatisch. Bei generischen HTTP-Triggern müssen Sie die Überprüfungsantwort selbst implementieren.
  • Event Grid passt automatisch die Rate an, mit der es Ereignisse an eine Funktion ausliefert, die ein Event Grid-Ereignis auslöst, basierend auf der wahrgenommenen Geschwindigkeit, mit der die Funktion Ereignisse verarbeiten kann. Dieses Rate-Matching-Feature verhindert Lieferfehler, die aus der Unfähigkeit einer Funktion resultieren, Ereignisse zu verarbeiten, da die Ereignisverarbeitungsrate der Funktion im Laufe der Zeit variieren kann. Um die Effizienz bei hohem Durchsatz zu verbessern, aktivieren Sie Batchverarbeitung für das Ereignisabonnement. Weitere Informationen finden Sie unter Aktivieren von Batchverarbeitung.

Hinweis

  • Wenn Sie einen Event Grid-Trigger verwenden, um ein Event-Abonnement mit einer Azure-Funktion hinzuzufügen, ruft Event Grid den Zugriffsschlüssel für die Zielfunktion mithilfe der Zugangsdaten des Event Grid-Service-Prinzipals ab. Event Grid erhält die Berechtigungen, wenn Sie den Event Grid Resource Provider in Ihrem Azure-Abonnement registrieren.
  • Wenn Sie Ihre Azure-Funktion mit einer Microsoft Entra ID-Anwendung schützen, müssen Sie den generischen Webhook-Ansatz mit dem HTTP-Trigger wählen. Verwenden Sie den Azure-Funktionsendpunkt als Webhook-URL beim Hinzufügen des Abonnements.

Anleitungen

Titel BESCHREIBUNG
Schnellstart: Verarbeiten von Ereignissen mit Funktionen Beschreibt das Senden eines benutzerdefinierten Ereignisses an eine Funktion, damit dieses verarbeitet wird
Tutorial: Streamen von Big Data in ein Data Warehouse Wenn ein Event Hub eine Capture-Datei erstellt, sendet Event Grid ein Ereignis an eine Funktions-App. Die App ruft die Capture-Datei ab und migriert Daten zu einem Data Warehouse.
Tutorial: Beispiele für die Integration von Azure Service Bus in Azure Event Grid Event Grid sendet Nachrichten von einem Service Bus-Thema an eine Funktions-App und eine Logik-App.

REST-API-Beispiel

Das folgende Beispiel zeigt den Anforderungskörper für eine PUT-Operation, die ein Ereignisabonnement mit einer Azure-Funktion als Ereignisbehandler erstellt. Es legt die Ressourcen-ID der Zielfunktion fest und ermöglicht das Batching.

{
    "properties":
    {
        "destination":
        {
            "endpointType": "AzureFunction",
            "properties":
            {
                "resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Web/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
                "maxEventsPerBatch": 10,
                "preferredBatchSizeInKilobytes": 64
            }
        },
        "eventDeliverySchema": "EventGridSchema"
    }
}

Aktivieren von Batchverarbeitung

Für einen höheren Durchsatz aktivieren Sie das Batching im Abonnement. Wenn du das Azure-Portal verwendest, kannst du die maximalen Ereignisse pro Batch und die bevorzugte Batchgröße in Kilobyte beim Erstellen eines Abonnements oder danach festlegen.

Konfigurieren Sie Batch-Einstellungen mit dem Azure-Portal, PowerShell, CLI oder einer Resource Manager-Vorlage.

Azure-Portal

Wenn Sie im Portal ein Abonnement erstellen, wechseln Sie auf der Seite Ereignis Abonnement erstellen zum Reiter Erweiterte Funktionen und setzen Sie Werte für maximale Ereignisse pro Batch und bevorzugte Batchgröße in Kilobyte.

Screenshot des Reiters Erweiterte Funktionen auf der Seite Ereignis-Abonnement erstellen, der die Batch-Einstellungen zeigt.

Aktualisieren Sie diese Werte für ein vorhandenes Abonnement auf der Registerkarte Features der Seite Event Grid Topic.

Screenshot des Features-Reiters auf der Seite Event Grid Topic, der Batch-Einstellungen für ein bestehendes Abonnement zeigt.

Azure Resource Manager-Vorlage

Setzen maxEventsPerBatch und preferredBatchSizeInKilobytes in einer Vorlage für Azure Resource Manager. Weitere Informationen finden Sie unter Microsoft.EventGrid eventSubscriptions-Vorlagenreferenz.

Azure CLI

Verwenden Sie den Befehl, az eventgrid event-subscription create um batchbezogene Einstellungen mit folgenden Parametern zu konfigurieren: --max-events-per-batch oder --preferred-batch-size-in-kilobytes.

Azure PowerShell

Verwenden Sie das cmdlet New-AzEventGridSubscription oder Update-AzEventGridSubscription, um batchbezogene Einstellungen zu konfigurieren. Verwenden Sie den -MaxEventsPerBatch Parameter oder -PreferredBatchSizeInKiloBytes , um Ihre Präferenzen festzulegen.

Eine Liste der unterstützten Ereignishandler finden Sie im Artikel zu Ereignishandlern .