Utiliser une fonction en tant que gestionnaire d’événements pour des événements Event Grid

Un gestionnaire d’événements est la destination où Azure Event Grid envoie un événement pour traitement. Azure configure automatiquement plusieurs services pour gérer les événements, et Azure Functions en fait partie.

Lorsque vous utilisez une fonction comme gestionnaire d’événements, vous exécutez du code personnalisé en réponse à chaque événement sans provisionner ni gérer les serveurs. Par exemple, Event Grid peut utiliser une fonction comme couche anti-corruption qui transforme ou valide les événements avant de les transmettre aux systèmes en aval.

Cet article décrit les deux façons d’utiliser une fonction comme gestionnaire d’événements et explique quelle approche utiliser.

Dans Azure, pour utiliser une fonction en tant que gestionnaire d’événements, suivez l’une des approches suivantes :

  • Utilisez un déclencheur de grille d’événements. Spécifiez Fonction Azure pour le type de point de terminaison. Ensuite, spécifie l’application de fonction et la fonction qui gère les événements.
  • Utilisez un déclencheur HTTP. Spécifiez Webhook comme Type de point de terminaison. Ensuite, spécifiez l’URL de la fonction qui gère les événements.

Utilisez la première approche (déclencheur de grille d’événements). Elle présente les avantages suivants par rapport à la seconde approche :

  • Event Grid valide automatiquement les déclencheurs Event Grid. Dans le cas des déclencheurs HTTP génériques, vous devez implémenter vous-même la réponse de validation.
  • La Grille d’Événements ajuste automatiquement la vitesse à laquelle elle livre des événements vers une fonction déclenchée par un événement de la Grille d’Événements, en fonction du débit perçu auquel la fonction peut traiter les événements. Cette fonctionnalité d’adaptation du débit évite les erreurs de distribution dues à l’incapacité d’une fonction à traiter des événements, car le taux de traitement des événements de la fonction peut varier au fil du temps. Pour améliorer l’efficacité à un débit élevé, activez le traitement par lot sur l’abonnement aux événements. Pour plus d’informations, consultez Activer le traitement par lot.

Remarque

  • Lorsque vous utilisez un déclencheur Event Grid pour ajouter un abonnement à un événement en utilisant une fonction Azure, Event Grid récupère la clé d'accès de la fonction cible en utilisant les identifiants du principal du service Event Grid. Event Grid reçoit les permissions lorsque vous enregistrez le fournisseur de ressources Event Grid dans votre abonnement Azure.
  • Si vous protégez votre fonction Azure avec une application Microsoft Entra ID, vous devez adopter l’approche générique du webhook en utilisant le déclencheur HTTP. Utilisez le point de terminaison de la fonction Azure comme URL de webhook lors de l’ajout de l’abonnement.

Tutoriels

Intitulé Description
Démarrage rapide : Gérer les événements avec une fonction Envoie un événement personnalisé à une fonction pour traitement.
Tutoriel : Diffuser en continu des Big Data dans un entrepôt de données Lorsqu’un Event Hub crée un fichier Capture, Event Grid envoie un événement à une application de fonction. L’application récupère le fichier Capture et migre les données vers un entrepôt de données.
Tutoriel : Exemples d’intégration d’Azure Service Bus et d’Azure Event Grid Event Grid envoie des messages d’une rubrique Service Bus vers une application de fonction et une application logique.

Exemple d’API REST

L’exemple suivant montre le corps de la requête pour une opération PUT qui crée un abonnement à un événement avec une fonction Azure comme gestionnaire d’événement. Il définit l’identifiant de ressource de la fonction cible et permet le 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"
    }
}

Activer le traitement par lot

Pour un débit plus élevé, activez le batching sur l’abonnement. Si vous utilisez le portail Azure, vous pouvez définir le maximum d’événements par lot et la taille préférée du lot en kilooctets lors de la création d’un abonnement ou après.

Configurez les paramètres batch en utilisant le portail Azure, PowerShell, CLI ou un modèle Resource Manager.

Portail Azure

Lorsque vous créez un abonnement dans le portail, sur la page Créer un abonnement à un événement, passez à l’onglet Fonctionnalités avancées , et définissez les valeurs pour Maximum d’événements par lot et la taille de lot préférée en kilo-octets.

Capture d’écran de l’onglet Fonctionnalités avancées de la page Créer un abonnement à un événement, affichant les paramètres de traitement par lot.

Mettez à jour ces valeurs pour un abonnement existant dans l’onglet Fonctionnalités de la page Thème de la grille d’événements .

Capture d’écran de l’onglet Fonctionnalités sur la page du sujet de la grille d’événements montrant les paramètres de batch pour un abonnement existant.

Modèle Azure Resource Manager

Configurez maxEventsPerBatch et preferredBatchSizeInKilobytes dans un modèle Azure Resource Manager. Pour plus d’informations, consultez la référence du modèle Microsoft.EventGrid eventSubscriptions.

Azure CLI

Utilisez la az eventgrid event-subscription create commande pour configurer les paramètres liés au lot en utilisant les paramètres suivants : --max-events-per-batch ou --preferred-batch-size-in-kilobytes.

Azure PowerShell

Utilisez le cmdlet New-AzEventGridSubscription ou Update-AzEventGridSubscription pour configurer les paramètres liés au batch. Utilisez le -MaxEventsPerBatch paramètre ou -PreferredBatchSizeInKiloBytes pour définir vos préférences.

Pour une liste des gestionnaires d’événements pris en charge, voir l’article Gestionnaires d’événements .