Comment utiliser des déclencheurs Event Grid et des liaisons dans Azure Functions

Azure Functions fournit une intégration intégrée à Azure Event Grid à l’aide de déclencheurs et liaisons. Cet article vous montre comment configurer et évaluer localement vos liaisons et déclencheurs Event Grid. Pour plus d’informations sur les définitions et les exemples de liaison de déclencheur Event Grid et de sortie, consultez l’un des articles de référence suivants :

Abonnements à des événements

Pour commencer à recevoir des requêtes HTTP Event Grid, vous avez besoin d’un abonnement aux événements déclenchés par Event Grid. Les abonnements aux événements spécifient l’URL du point de terminaison appelant la fonction. Quand vous créez un abonnement aux événements à partir de l’onglet Intégration de votre fonction dans le portail Azure, l’URL vous est fournie. Quand vous créez un abonnement aux événements par programmation ou à partir d’Event Grid, vous devez fournir le point de terminaison. L’URL du point de terminaison contient une clé système, que vous devez obtenir à partir des API REST d’administrateur Functions.

URL du point de terminaison du webhook

Le point de terminaison d’URL de votre fonction déclenchée par Event Grid dépend de la version du runtime Functions. L’exemple suivant illustre le modèle d’URL spécifique à la version :

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

Remarque

Il existe une version du déclencheur de stockage Blob qui utilise également des abonnements aux événements. L’URL du point de terminaison pour ce type de déclencheur de stockage Blob a un chemin /runtime/webhooks/blobs, tandis que le chemin d’un déclencheur Event Grid serait /runtime/webhooks/EventGrid. Pour obtenir un comparatif des options de traitement de blobs, consultez Déclencheur sur un conteneur d’objets blob.

Clé système

Le point de terminaison d’URL que vous construisez inclut la valeur clé système. La clé système est une clé d’autorisation qui doit être incluse dans l’URL de point de terminaison d’un déclencheur Event Grid. La section suivante explique comment l’obtenir.

Vous pouvez obtenir la clé système à l’aide de l’API suivante (HTTP GET) :

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

Cette API REST est une API d’administration, qui a donc besoin de la clé principale de votre application de fonction. Ne confondez pas la clé système (permettant d’appeler une fonction de déclenchement Event Grid) avec la clé principale (servant à effectuer des tâches d’administration sur l’application de fonction). Veillez à utiliser la clé système pour vous abonner à une rubrique Event Grid.

Voici un exemple de réponse fournissant la clé système :

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

Vous pouvez obtenir la clé principale pour votre application de fonction à partir de l’onglet Paramètres de l’application de fonction dans le portail.

Important

La clé principale fournit un accès administrateur à votre application de fonction. Ne partagez pas cette clé avec des tiers et ne la distribuez pas dans les applications clientes natives.

Pour plus d’informations, consultez la section Clés d’autorisation dans l’article de référence sur les déclencheurs HTTP.

Créer un abonnement d’événement

Vous pouvez créer un abonnement aux événements à partir du portail Azure ou à l’aide de l’interface Azure CLI.

Pour les fonctions développées dans le portail Azure avec le déclencheur Event Grid, sélectionnez Intégration, puis choisissez Event Grid Trigger et sélectionnez Créer un abonnement Event Grid.

Screenshot of connecting to a new event subscription to trigger in the portal.

Ce lien ouvre la page Créer un abonnement aux événements dans le portail avec le point de terminaison du déclencheur actuel déjà défini.

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

Pour plus d’informations sur la création d’abonnements à l’aide du Portail Azure, consultez la section Créer un événement personnalisé - Portail Azure dans la documentation Event Grid.

Pour plus d’informations sur la création d’un abonnement, consultez la section Guide de démarrage rapide sur le Stockage Blob ou les autres guides de démarrage rapide Event Grid.

Tests locaux avec une application web de visionneuse

Pour qu’un déclencheur Event Grid soit testé en local, les requêtes HTTP Event Grid doivent partir de leur origine dans le cloud et arriver sur l’ordinateur local. Vous pouvez pour cela capturer les requêtes en ligne et les renvoyer manuellement sur votre ordinateur local :

  1. Créez une application web de visionneuse qui capture les messages d’événement.
  2. Créez un abonnement Event Grid qui envoie les événements à l’application de visionneuse.
  3. Générez une requête et copiez le corps de la requête à partir de l’application de visionneuse.
  4. Publiez (POST) manuellement la requête sur l’URL localhost de votre fonction de déclenchement Event Grid.

À l’issue des tests, vous pourrez utiliser le même abonnement en production en mettant à jour le point de terminaison. Utilisez la commande Azure CLI az eventgrid event-subscription update.

Vous pouvez également utiliser l’utilitaire ngrok pour transférer les requêtes distantes à vos fonctions exécutées localement. Pour plus d’informations, consultez ce tutoriel.

Créer une application web de visionneuse

Pour simplifier la capture des messages d’événement, vous pouvez déployer une application web prédéfinie qui affiche les messages d’événement. La solution déployée comprend un plan App Service, une offre App Service Web Apps et du code source en provenance de GitHub.

Sélectionnez Déployer sur Azure pour déployer la solution sur votre abonnement. Dans le portail Azure, indiquez des valeurs pour les paramètres.

Button to deploy the Resource Manager template to Azure.

Le déploiement peut prendre quelques minutes. Une fois le déploiement réussi, affichez votre application web pour vérifier qu’elle s’exécute. Dans un navigateur web, accédez à : https://<your-site-name>.azurewebsites.net

Vous voyez le site, mais aucun événement n’est encore posté sur celui-ci.

View new site

Créer un abonnement Event Grid

Créez un abonnement Event Grid du type que vous souhaitez tester et attribuez-lui l’URL de votre application web comme point de terminaison pour la notification d’événement. Le point de terminaison de votre application web doit inclure le suffixe /api/updates/. L’URL complète est donc https://<your-site-name>.azurewebsites.net/api/updates

Pour plus d’informations sur la création d’abonnements à l’aide du portail Azure, consultez la section Créer un événement personnalisé - Portail Azure dans la documentation Event Grid.

Générer une requête

Déclenchez un événement qui génèrera du trafic HTTP sur le point de terminaison de votre application web. Par exemple, si vous avez créé un abonnement au Stockage Blob, chargez ou supprimez un objet blob. Lorsqu’une requête s’affiche dans votre application web, copiez le corps de la requête.

La requête de validation d’abonnement sera reçue la première ; ignorez toutes les requêtes de validation et copiez la requête d’événement.

Copy request body from web app

Publier (POST) manuellement la requête

Exécutez votre fonction Event Grid en local. Vous devez définir les en-têtes Content-Type et aeg-event-type manuellement, tandis que vous pouvez conserver les autres valeurs par défaut.

Utilisez un outil comme Postman ou curl pour créer une requête HTTP POST :

  • Définissez un en-tête Content-Type: application/json.

  • Définissez un en-tête aeg-event-type: Notification.

  • Collez les données RequestBin dans le corps de la requête.

  • Publiez (POST) sur l’URL de votre fonction de déclenchement Event Grid.

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

Le paramètre functionName doit être le nom spécifié dans l’attribut FunctionName.

Les captures d’écran suivantes montrent les en-têtes et le corps de la requête dans Postman :

Headers in Postman

Request body in Postman

La fonction de déclenchement Event Grid s’exécute et affiche des journaux d’activité de ce type :

Sample Event Grid trigger function logs

Étapes suivantes

Pour plus d’informations sur Event Grid avec Functions, consultez les articles suivants :