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 :

Créer un abonnement d’événement

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.

Obtenir l’URL du point de terminaison 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.

Obtenir la clé système

Le point de terminaison d’URL que vous construisez inclut une valeur de clé système. La clé système est une clé d’autorisation spécifique au webhook Event Grid, qui doit être incluse dans une demande adressée à l’URL du point de terminaison pour un déclencheur Event Grid. La section suivante explique comment l’obtenir.

Vous pouvez également obtenir la clé principale pour votre application de fonction à partir de Fonctions>Clés d’application dans le portail.

Attention

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 Utiliser des clés d’accès dans Azure Functions.

Vous pouvez obtenir la clé système à partir de votre application de fonction à l’aide des API d’administrateur suivantes (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}"
    }
  ]
}

Créer l’abonnement

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.

Capture d’écran montrant l’association entre un nouvel abonnement aux événements et un déclencheur dans le portail.

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.

Capture d’écran montrant la création d’un abonnement aux événements avec le point de terminaison de la fonction déjà défini.

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.

Pour envoyer une requête HTTP POST, vous avez besoin d’un outil de test HTTP. Veillez à choisir un outil qui garde vos données en sécurité. Pour plus d’informations, consultez Outils de test HTTP.

À 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.

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.

Bouton pour déployer le modèle Resource Manager sur 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.

Afficher le nouveau 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.

Copier le corps de la requête à partir de l’application web

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 votre outil de test HTTP 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.

  • Envoyez une requête HTTP POST au point de terminaison qui démarre manuellement le déclencheur 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.

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

Exemple de journaux d’activité d’une fonction de déclenchement Event Grid

Étapes suivantes

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