Démarrage rapide : Router des événements personnalisés vers une fonction Azure avec Event Grid

Azure Event Grid est un service d’événement pour le cloud. Azure Functions est l’un des gestionnaires d’événements pris en charge. Dans cet article, vous utilisez le Portail Azure pour créer une rubrique personnalisée, vous abonner à cette rubrique et déclencher l’événement pour afficher le résultat. Vous envoyez les événements à une fonction Azure.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Créer une application de fonction Azure

  1. Connectez-vous au portail Azure.

  2. Dans le menu de navigation de gauche, sélectionnez Tous les services.

  3. Sélectionnez Calcul dans la liste des Catégories.

  4. Pointez (ne sélectionnez pas) la souris sur Application de fonction, puis sélectionnez +.

    Capture d’écran montrant la sélection de Créer un lien pour une application de fonction

  5. Dans la page De base de l’assistant de création de l’application de fonction, procédez comme suit :

    1. Sélectionnez votre abonnement Azure dans lequel vous souhaitez créer l’application de fonction.

    2. Créez un groupe de ressources ou sélectionnez-en un.

    3. Spécifiez un nom pour l’application de fonction.

    4. Sélectionnez .NET pour pile de runtime.

    5. Pour Version, sélectionnez 6 (LTS), modèle in-process.

    6. Sélectionnez la région la plus proche de vous.

    7. Sélectionnez Suivant : Stockage en bas de la page.

      Capture d’écran montrant l’onglet Informations de base sur Créer une page d’application de fonction

  6. Dans la page Stockage, créez un nouveau compte de stockage ou sélectionnez un compte de stockage existant à associer à l’application de fonction, puis sélectionnez Vérifier + créer en bas de la page.

    Capture d’écran montrant l’onglet Stockage de la page Créer une application de fonction.

  7. Sur la page Évaluer + créer, évaluez les paramètres, puis sélectionnez Créer, en bas de la page pour créer l’application de fonction.

  8. Une fois le déploiement réussi, sélectionnez Accéder à la ressource pour naviguer à la page d’accueil de l’application de fonction.

Créer une fonction

Avant de nous abonner à la rubrique personnalisée, créez une fonction pour gérer les événements.

  1. Dans la page Application de fonction, dans la section Créer dans le portail Azure, sélectionnez le lien Créer une fonction dans le volet droit.

    Capture d’écran montrant la sélection du lien Créer une fonction

  2. Dans la page Créer une fonction, effectuez les étapes suivantes :

    1. Dans la section Sélectionner un modèle, dans la zone de filtre ou de recherche, tapez Azure Event Grid déclencheur.

    2. Sélectionnez Azure Event Grid modèle Déclencheur dans la liste des modèles.

    3. Sélectionnez Suivant au bas de la page.

      Capture d’écran montrant sélection du déclencheur Event Grid.

    4. Dans la page Détails du modèle, entrez un nom pour la fonction. Dans cet exemple, il s’agit de HandleEventsFunc.

    5. Sélectionnez Créer.

      Capture d’écran montrant la page Détails du modèle.

  3. Dans la page Fonction pour HandleEventsFunc, sélectionnez Code + Test dans le menu de navigation gauche, remplacez le code par le code suivant, puis sélectionnez Enregistrer dans la barre de commandes.

    #r "Azure.Messaging.EventGrid"
    #r "System.Memory.Data"
    
    using Azure.Messaging.EventGrid;
    using System;
    
    public static void Run(EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation(eventGridEvent.Data.ToString());
    }        
    

    Image montrant la sélection du menu Code + test pour une fonction Azure.

  4. Sélectionnez Surveiller dans le menu de gauche et passez à l’onglet Journaux. Gardez cette fenêtre ou cet onglet du navigateur ouvert afin de pouvoir consulter les informations sur les événements reçus.

    Capture d’écran montrant la vue Surveiller de la fonction Azure

Créer une rubrique personnalisée

Une rubrique Event Grid fournit un point de terminaison défini par l’utilisateur vers lequel vous envoyez vos événements.

  1. Dans un nouvel onglet de la fenêtre du navigateur Web, connectez-vous à Portail Azure.

  2. Dans la barre de recherche de la rubrique, recherchez Rubriques Event Grid, puis sélectionnez Rubriques Event Grid.

    Image montrant la sélection de Rubriques Event Grid

  3. Dans la page Rubriques Event Grid, sélectionnez + Créer dans la barre de commandes.

    Capture d’écran montrant le bouton Créer pour créer un sujet d’Azure Event Grid

  4. Dans la page Créer une rubrique, procédez comme suit :

    1. Sélectionnez votre abonnement Azure.

    2. Sélectionnez le même groupe de ressources que celui des étapes précédentes.

    3. Donnez un nom unique à la rubrique personnalisée. Le nom de la rubrique doit être unique, car elle est représentée par une entrée DNS. N’utilisez pas le nom indiqué dans l’image. Au lieu de cela, créez votre propre nom : il doit comprendre entre 3 et 50 caractères, et contenir uniquement des valeurs a-z, A-Z, 0-9 et « - ».

    4. Sélectionnez un emplacement pour la rubrique Event Grid.

    5. Sélectionnez Revoir + créer.

      Capture d’écran montrant la page Créer une rubrique.

    6. Dans la page Vérifier +créer, passez en revue les paramètres, puis sélectionnez Créer.

  5. Une fois la rubrique personnalisée créée, sélectionnez le lien Accéder à la ressource pour voir la page Rubrique Event Grid suivante pour la rubrique que vous avez créée.

    Image montrant la page d’accueil de votre rubrique personnalisée Event Grid.

S’abonner à une rubrique personnalisée

Vous vous abonnez à une rubrique Event Grid pour indiquer à Event Grid les événements qui vous intéressent, et où les envoyer.

  1. Maintenant, dans la page Rubrique Event Grid de votre rubrique personnalisée, sélectionnez + Abonnement aux événements sur la barre d’outils.

    Image montrant la sélection de l’option Ajouter un abonnement à un événement dans la barre d’outils.

  2. Dans la page Créer un abonnement aux événements, effectuez les étapes suivantes :

    1. Entrez un nom pour l’abonnement aux événements.

    2. Sélectionnez Fonction Azure pour le Type de point de terminaison.

    3. Choisissez Configurer un point de terminaison.

      Image montrant les valeurs d’abonnement à un événement.

    4. Pour le point de terminaison de la fonction, sélectionnez l’abonnement Azure et le groupe de ressources dans lequel se trouve votre application de fonction, puis sélectionnez cette dernière, ainsi que la fonction que vous avez créée précédemment. Sélectionnez Confirmer la sélection.

      Image montrant la page Sélectionner une fonction Azure qui présente la sélection de la fonction que vous avez créée précédemment.

    5. Cette étape est facultative, mais recommandée pour les scénarios de production. Dans la page Créer un abonnement aux événements, basculez vers l’onglet fonctionnalités avancées et définissez des valeurs pour Nb max. d’événements par lot et Taille de lot par défaut en kilo-octets.

      Le traitement par lot peut vous offrir un débit élevé. Pour Nb max. d’événements par lot, définissez le nombre maximal d’événements qu’un abonnement doit inclure dans un lot. La taille de lot par défaut définit la limite supérieure par défaut de la taille de lot en kilo-octets, mais peut être dépassée si un seul événement est supérieur à ce seuil.

      Image montrant les paramètres de traitement par lot pour un abonnement à un événement.

    6. Dans la page Créer un abonnement aux événements, sélectionnez Créer.

Envoyer un événement à votre rubrique

Nous allons maintenant déclencher un événement pour voir comment Event Grid distribue le message à votre point de terminaison. Utilisez Azure CLI ou PowerShell pour envoyer un événement de test à votre rubrique personnalisée. En règle générale, une application ou un service Azure envoie les données d’événements.

Le premier exemple utilise Azure CLI. Il obtient l’URL et la clé de la rubrique personnalisée, ainsi que les exemples de données d’événements. Utilisez le nom de votre rubrique personnalisée pour <topic name>. Des exemples de données d’événement sont créés. L’élément data du fichier JSON est la charge utile de l’événement. N’importe quel fichier JSON bien construit peut être placé dans ce champ. Vous pouvez aussi utiliser le champ objet pour un routage et un filtrage avancés. CURL est un utilitaire qui envoie des requêtes HTTP.

Azure CLI

  1. Dans le portail Azure, sélectionnez Cloud Shell. Sélectionnez Bash dans l’angle supérieur gauche de la fenêtre Cloud Shell.

    Image montrant la fenêtre Cloud Shell - Bash

  2. Définissez les variables topicname et resourcegroupname qui seront utilisées dans les commandes.

    Remplacez TOPICNAME par le nom de votre sujet Event Grid.

    topicname="TOPICNAME"
    

    Remplacez par RESOURCEGROUPNAME le nom du groupe de ressources Azure qui contient la rubrique Event Grid.

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. Exécutez la commande suivante afin d’obtenir le point de terminaison pour la rubrique : Après avoir copié et collé la commande, et avant de l’exécuter, mettez à jour le nom de la rubrique et le nom du groupe de ressources.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Exécutez la commande suivante afin d’obtenir la clé pour la rubrique personnalisée  : Après avoir copié et collé la commande, et avant de l’exécuter, mettez à jour le nom de la rubrique et le nom du groupe de ressources.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Copiez l’instruction suivante avec la définition de l’événement, puis appuyez sur Entrée.

    event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
    
  6. Exécutez la commande Curl suivante pour publier l’événement :

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

Le deuxième exemple utilise PowerShell pour effectuer des étapes similaires.

  1. Dans le portail Azure, sélectionnez Cloud Shell (ou accédez à https://shell.azure.com/). Sélectionnez PowerShell en haut à gauche de la fenêtre Cloud Shell. Consultez l’exemple d’image de fenêtre Cloud Shell dans la section Azure CLI.

  2. Définissez les variables suivantes. Après avoir copié et collé la commande, et avant de l’exécuter, mettez à jour le nom de la rubrique et le nom du groupe de ressources :

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. Exécutez les commandes suivantes afin d’obtenir le point de terminaison et les clés pour la rubrique :

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. Préparez l’événement. Copiez et exécutez les instructions dans la fenêtre Cloud Shell.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  5. Utilisez l’applet de commande Invoke-WebRequest pour envoyer l’événement.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Vérifier que la fonction a reçu l’événement

Vous avez déclenché l’événement, et Event Grid a envoyé le message au point de terminaison configuré lors de l’abonnement.

  1. Dans la page Surveiller de votre fonction Azure, vous voyez un appel.

    Capture d’écran montrant l’onglet Appels de la page Surveiller.

  2. Sélectionnez l’appel pour voir les détails.

    Capture d’écran montrant les détails de l’appel.

  3. Vous pouvez également utiliser l’onglet Journaux dans le volet droit pour voir les messages journalisés lorsque vous publiez des événements sur le point de terminaison de la rubrique.

    Image montrant la vue de supervision de la fonction Azure avec un journal.

Nettoyer les ressources

Si vous envisagez de continuer à utiliser cet événement, ne supprimez pas les ressources créées dans cet article. Dans le cas contraire, supprimez les ressources créées avec cet article.

  1. Sélectionnez Groupes de ressources dans le menu de gauche. Si vous ne voyez pas cette option dans le menu de gauche, sélectionnez Tous les services dans ce menu, puis sélectionnez Groupes de ressources.

  2. Sélectionnez le groupe de ressources pour lancer la page Groupe de ressources.

  3. Sélectionnez Supprimer le groupe de ressources sur la barre d’outils.

  4. Confirmez la suppression en entrant le nom du groupe de ressources, puis sélectionnez Supprimer.

    Groupes de ressources

    L’autre groupe de ressources que vous voyez dans l’image a été créé et utilisé par la fenêtre Cloud Shell. Supprimez-le si vous n’envisagez pas d’utiliser la fenêtre Cloud Shell.

Étapes suivantes

Maintenant que vous savez créer des rubriques et des abonnements d’événements, vous pouvez en apprendre davantage sur Event Grid et ce qu’il peut vous offrir :

Consultez les exemples suivants pour en savoir plus sur la publication d’événements sur Event Grid et leur consommation avec différents langages de programmation.