Démarrage rapide : Router des événements personnalisés vers une fonction Azure avec Event GridQuickstart: Route custom events to an Azure Function with Event Grid

Azure Event Grid est un service de gestion d’événements pour le cloud.Azure Event Grid is an eventing service for the cloud. Azure Functions est l’un des gestionnaires d’événements pris en charge.Azure Functions is one of the supported event handlers. 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.In this article, you use the Azure portal to create a custom topic, subscribe to the custom topic, and trigger the event to view the result. Vous envoyez les événements à une fonction Azure.You send the events to an Azure Function.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

Créer une fonction AzureCreate Azure Function

Avant de nous abonner à la rubrique personnalisée, créez une fonction pour gérer les événements.Before subscribing to the custom topic, create a function to handle the events.

  1. Créez une application de fonction à l’aide des instructions indiquées dans Créer une application de fonction.Create a function app using instructions from Create a function app.

  2. Créez une fonction à l’aide du déclencheur Event Grid.Create a function using the Event Grid Trigger. Si vous utilisez ce déclencheur pour la première fois, vous devrez peut-être cliquer sur Installer pour installer l’extension.Select If this is your first time using this trigger, you may have to click 'Install' to install the extension.

    1. Dans la page Application de fonction, sélectionnez Fonctions dans le menu de gauche, recherchez Event Grid dans les modèles, puis sélectionnez Déclencheur Azure Event Grid.On the Function App page, select Functions on the left menu, search for Event Grid in templates, and then select Azure Event Grid trigger.

      Sélectionner le déclencheur Event Grid

  3. Dans la page Nouvelle fonction, entrez un nom pour la fonction, puis sélectionnez Créer une fonction.On the New Function page, enter a name for the function, and select Create Function.

    Page Nouvelle fonction

  4. Utilisez la page Code + test pour voir le code existant de la fonction et le mettre à jour.Use the Code + Test page to see the existing code for the function and update it.

Activer le fournisseur de ressources Event GridEnable Event Grid resource provider

Si vous n’avez jamais utilisé Event Grid dans votre abonnement Azure, vous devrez peut-être inscrire le fournisseur de ressources Event Grid.If you haven't previously used Event Grid in your Azure subscription, you may need to register the Event Grid resource provider.

Dans le portail Azure :In the Azure portal:

  1. Sélectionnez Abonnements dans le menu de gauche.Select Subscriptions on the left menu.
  2. Sélectionnez l’abonnement que vous utilisez pour Event Grid.Select the subscription you're using for Event Grid.
  3. Dans le menu de gauche, sous Paramètres, sélectionnez Fournisseurs de ressources.On the left menu, under Settings, select Resource providers.
  4. Recherchez Microsoft.EventGrid.Find Microsoft.EventGrid.
  5. Si l’inscription n’est pas encore faite, sélectionnez S’inscrire.If not registered, select Register.

L’inscription peut prendre un certain temps.It may take a moment for the registration to finish. Sélectionnez Actualiser pour mettre à jour l’état.Select Refresh to update the status. Lorsque l’état est Inscrit, vous êtes prêt à continuer.When Status is Registered, you're ready to continue.

Créer une rubrique personnaliséeCreate a custom topic

Une rubrique de grille d’événement fournit un point de terminaison défini par l’utilisateur vers lequel vous envoyez vos événements.An event grid topic provides a user-defined endpoint that you post your events to.

  1. Connectez-vous au portail Azure.Sign in to Azure portal.

  2. Sélectionnez Tous les services dans le menu de navigation gauche, recherchez Event Grid, puis sélectionnez Rubriques Event Grid.Select All services on the left navigational menu, search for Event Grid, and select Event Grid Topics.

    Sélectionner Rubriques Event Grid

  3. Dans la page Rubriques Event Grid, sélectionnez + Ajouter dans la barre d’outils.On the Event Grid Topics page, select + Add on the toolbar.

    Bouton d’ajout de rubrique Event Grid

  4. Dans la page Créer une rubrique, procédez comme suit :On the Create Topic page, follow these steps:

    1. Donnez un nom unique à la rubrique personnalisée.Provide a unique name for the custom topic. Le nom de la rubrique doit être unique, car elle est représentée par une entrée DNS.The topic name must be unique because it's represented by a DNS entry. N’utilisez pas le nom indiqué dans l’image.Don't use the name shown in the 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 « - ».Instead, create your own name - it must be between 3-50 characters and contain only values a-z, A-Z, 0-9, and "-".

    2. Sélectionnez votre abonnement Azure.Select your Azure subscription.

    3. Sélectionnez le même groupe de ressources que celui des étapes précédentes.Select the same resource group from the previous steps.

    4. Sélectionnez un emplacement pour la rubrique Event Grid.Select a location for the event grid topic.

    5. Conservez la valeur par défaut Schéma Event Grid pour le champ Schéma d’événement.Keep the default value Event Grid Schema for the Event Schema field.

      Page Créer une rubrique

    6. Sélectionnez Create (Créer).Select Create.

  5. Une fois la rubrique personnalisée créée, vous voyez la notification de réussite.After the custom topic has been created, you see the successful notification. Sélectionnez Accéder au groupe de ressources.Select Go to resource group.

    Voir la notification de réussite

  6. Dans la page Groupe de ressources, sélectionnez la rubrique Event Grid.On the Resource Group page, select the event grid topic.

    Sélectionner la ressource Rubrique Event Grid

  7. La page Rubrique Event Grid associée à votre grille d’événement apparaît.You see the Event Grid Topic page for your event grid. Ne fermez pas cette page.Keep this page open. Vous l’utiliserez plus loin dans le guide de démarrage rapide.You use it later in the quickstart.

    Page d’accueil de la rubrique Event Grid

S’abonner à une rubrique personnaliséeSubscribe to custom topic

Vous vous abonnez à une rubrique Event Grid pour indiquer à Event Grid les événements qui vous intéressent, et où les envoyer.You subscribe to an event grid topic to tell Event Grid which events you want to track, and where to send the events.

  1. Maintenant, dans la page Rubrique Event Grid de votre rubrique personnalisée, sélectionnez + Abonnement aux événements sur la barre d’outils.Now, on the Event Grid Topic page for your custom topic, select + Event Subscription on the toolbar.

    Ajouter un abonnement à un événement

  2. Dans la page Créer un abonnement aux événements, effectuez les étapes suivantes :On the Create Event Subscription page, follow these steps:

    1. Entrez un nom pour l’abonnement aux événements.Enter a name for the event subscription.

    2. Sélectionnez Fonction Azure pour le Type de point de terminaison.Select Azure Function for the Endpoint type.

    3. Choisissez Sélectionner un point de terminaison.Choose Select an endpoint.

      Fournir des 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.For the function endpoint, select the Azure Subscription and Resource Group your Function App is in and then select the Function App and function you created earlier. Sélectionnez Confirmer la sélection.Select Confirm Selection.

      Fournir une URL du point de terminaison

    5. Cette étape est facultative, mais recommandée pour les scénarios de production.This step is optional, but recommended for production scenarios. 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.On the Create Event Subscription page, switch to the Advanced Features tab, and set values for Max events per batch and Preferred batch size in kilobytes.

      Le traitement par lot peut vous offrir un débit élevé.Batching can give you high-throughput. Pour Nb max. d’événements par lot, définissez le nombre maximal d’événements qu’un abonnement doit inclure dans un lot.For Max events per batch, set maximum number of events that a subscription will include in a batch. 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.Preferred batch size sets the preferred upper bound of batch size in kilo bytes, but can be exceeded if a single event is larger than this threshold.

      Activer le traitement par lot

    6. Dans la page Créer un abonnement aux événements, sélectionnez Créer.On the Create Event Subscription page, select Create.

Envoyer un événement à votre rubriqueSend an event to your topic

Nous allons maintenant déclencher un événement pour voir comment Event Grid distribue le message à votre point de terminaison.Now, let's trigger an event to see how Event Grid distributes the message to your endpoint. Utilisez Azure CLI ou PowerShell pour envoyer un événement de test à votre rubrique personnalisée.Use either Azure CLI or PowerShell to send a test event to your custom topic. En règle générale, une application ou un service Azure envoie les données d’événements.Typically, an application or Azure service would send the event data.

Le premier exemple utilise Azure CLI.The first example uses Azure CLI. Il obtient l’URL et la clé de la rubrique personnalisée, ainsi que les exemples de données d’événements.It gets the URL and key for the custom topic, and sample event data. Utilisez le nom de votre rubrique personnalisée pour <topic name>.Use your custom topic name for <topic name>. Des exemples de données d’événement sont créés.It creates sample event data. L’élément data du fichier JSON est la charge utile de l’événement.The data element of the JSON is the payload of your event. N’importe quel fichier JSON bien construit peut être placé dans ce champ.Any well-formed JSON can go in this field. Vous pouvez aussi utiliser le champ objet pour un routage et un filtrage avancés.You can also use the subject field for advanced routing and filtering. CURL est un utilitaire qui envoie des requêtes HTTP.CURL is a utility that sends HTTP requests.

Azure CLIAzure CLI

  1. Dans le portail Azure, sélectionnez Cloud Shell.In the Azure portal, select Cloud Shell. Sélectionnez Bash dans l’angle supérieur gauche de la fenêtre Cloud Shell.Select Bash in the top-left corner of the Cloud Shell window.

    Cloud Shell - Bash

  2. 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.Run the following command to get the endpoint for the topic: After you copy and paste the command, update the topic name and resource group name before you run the command.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  3. 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.Run the following command to get the key for the custom topic: After you copy and paste the command, update the topic name and resource group name before you run the command.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  4. Copiez l’instruction suivante avec la définition de l’événement, puis appuyez sur Entrée.Copy the following statement with the event definition, and press ENTER.

    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"} ]'
    
  5. Exécutez la commande Curl suivante pour publier l’événement :Run the following Curl command to post the event:

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

Azure PowerShellAzure PowerShell

Le deuxième exemple utilise PowerShell pour effectuer des étapes similaires.The second example uses PowerShell to perform similar steps.

  1. Dans le portail Azure, sélectionnez Cloud Shell (ou accédez à https://shell.azure.com/).In the Azure portal, select Cloud Shell (alternatively go to https://shell.azure.com/). Sélectionnez PowerShell en haut à gauche de la fenêtre Cloud Shell.Select PowerShell in the top-left corner of the Cloud Shell window. Consultez l’exemple d’image de fenêtre Cloud Shell dans la section Azure CLI.See the sample Cloud Shell window image in the Azure CLI section.

  2. Définissez les variables suivantes.Set the following variables. 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 :After you copy and paste each command, update the topic name and resource group name before you run the command:

    $resourceGroupName = <resource group name>
    $topicName = <topic name>
    
  3. Exécutez les commandes suivantes afin d’obtenir le point de terminaison et les clés pour la rubrique :Run the following commands to get the endpoint and the keys for the topic:

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

    $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.Use the Invoke-WebRequest cmdlet to send the event.

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

Vérifier dans la visionneuse Event GridVerify in the Event Grid Viewer

Vous avez déclenché l’événement, et Event Grid a envoyé le message au point de terminaison configuré lors de l’abonnement.You've triggered the event, and Event Grid sent the message to the endpoint you configured when subscribing. Accédez à la fonction déclenchée par Event Grid et ouvrez les journaux.Navigate to your Event Grid triggered function and open the logs. Vous devez voir une copie de la charge utile de données de l’événement dans les journaux.You should see a copy of the data payload of the event in the logs. Si vous n’ouvrez pas d’abord la fenêtre Journaux, ou si vous n’appuyez pas sur Reconnexion, essayez à nouveau d’envoyer un événement de test.If you don't make sure you open the logs window first, or hit reconnect, and then try sending a test event again.

Journal des déclenchements de fonctions réussis

Nettoyer les ressourcesClean up resources

Si vous envisagez de continuer à utiliser cet événement, ne supprimez pas les ressources créées dans cet article.If you plan to continue working with this event, don't clean up the resources created in this article. Dans le cas contraire, supprimez les ressources créées avec cet article.Otherwise, delete the resources you created in this article.

  1. Sélectionnez Groupes de ressources dans le menu de gauche.Select Resource Groups on the left menu. 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.If you don't see it on the left menu, select All Services on the left menu, and select Resource Groups.

  2. Sélectionnez le groupe de ressources pour lancer la page Groupe de ressources.Select the resource group to launch the Resource Group page.

  3. Sélectionnez Supprimer le groupe de ressources sur la barre d’outils.Select Delete resource group on the toolbar.

  4. Confirmez la suppression en entrant le nom du groupe de ressources, puis sélectionnez Supprimer.Confirm deletion by entering the name of the resource group, and select Delete.

    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.The other resource group you see in the image was created and used by the Cloud Shell window. Supprimez-le si vous n’envisagez pas d’utiliser la fenêtre Cloud Shell.Delete it if you don't plan to use the Cloud Shell window later.

Étapes suivantesNext steps

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 :Now that you know how to create topics and event subscriptions, learn more about what Event Grid can help you do: