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 :
- Vue d’ensemble des liaisons Azure Event Grid
- Déclencheur Azure Event Grid pour Azure Functions
- Liaison de sortie Azure Event Grid pour Azure Functions
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.
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.
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 :
- Créez une application web de visionneuse qui capture les messages d’événement.
- Créez un abonnement Event Grid qui envoie les événements à l’application de visionneuse.
- Générez une requête et copiez le corps de la requête à partir de l’application de visionneuse.
- 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.
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.
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.
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.
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 :
Étapes suivantes
Pour plus d’informations sur Event Grid avec Functions, consultez les articles suivants :