Router des événements personnalisés vers un point de terminaison Web avec le Portail Azure et Azure Event Grid

Event Grid est un service entièrement géré qui vous permet de facilement gérer des événements dans de nombreux services et applications Azure. Il simplifie la création d’applications pilotées par les événements et serverless. Pour une présentation du service, consultez Vue d’ensemble d’Event Grid.

Dans cet article, vous utilisez le portail Azure pour effectuer les tâches suivantes :

  1. Créez une rubrique personnalisée.
  2. Abonnez-vous à la rubrique personnalisée.
  3. Déclenchez l'événement.
  4. Affichez le résultat. En règle générale, vous envoyez des événements à un point de terminaison qui traite les données d’événement et entreprend des actions. Toutefois, pour simplifier cet article, vous envoyez les événements à une application web qui collecte et affiche les messages.

Prérequis

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

Enregistrer le fournisseur de ressources Event Grid

Si vous n’avez pas déjà utilisé Event Grid auparavant, vous devez inscrire le fournisseur de ressources Event Grid. Si vous avez déjà utilisé Event Grid, passez à la section suivante.

Dans le portail Azure, procédez comme suit :

  1. Sélectionner Abonnements dans le menu de gauche.

  2. Sélectionnez l’abonnement que vous souhaitez utiliser pour Event Grid dans la liste des abonnements.

  3. Dans la page Abonnement, sélectionnez Fournisseurs de ressources dans la section Paramètres du menu de gauche.

  4. Recherchez Microsoft.EventGrid et assurez-vous que l’état est Non inscrit.

  5. Sélectionnez Microsoft.EventGrid dans la liste des fournisseurs.

  6. Sélectionnez Inscrire dans la barre de commandes.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

  7. Actualisez pour vous assurer que l’état de Microsoft.EventGrid est modifié en Inscrit.

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

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. Connectez-vous au portail Azure.

  2. Dans la barre de recherche de la rubrique, tapez Rubriques Event Grid, puis sélectionnez Rubriques Event Grid dans la liste déroulante.

    Screenshot showing the Azure port search bar to search for Event Grid topics.

  3. Dans la page Rubriques Event Grid, sélectionnez + Créer dans la barre d’outils.

    Screenshot showing the Create Topic button on Event Grid topics page.

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

    1. Sélectionnez votre abonnementAzure.

    2. Sélectionnez un groupe de ressources existant ou sélectionnez Créer, puis entrez un nom pour le groupe de ressources.

    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. Au bas de la page, sélectionnez Examiner et créer.

      Create Topic page

    6. Sous l’onglet Vérifier + créer de la page Créer une rubrique, sélectionnez Créer.

      Review settings and create

  5. Une fois le déploiement terminé, sélectionnez Accéder à la ressource pour voir la page Rubrique système Event Grid pour votre rubrique. Ne fermez pas cette page. Vous l’utiliserez plus loin dans le guide de démarrage rapide.

    Screenshot showing the Event Grid topic home page.

    Remarque

    Pour simplifier le démarrage rapide, vous utiliserez uniquement la page Informations de base pour créer une rubrique. Pour obtenir des instructions détaillées sur la configuration des paramètres de résidence des données, de sécurité et de réseau sur d’autres pages de l’Assistant, consultez Créer une rubrique personnalisée.

Créer un point de terminaison de message

Avant de créer un abonnement pour la rubrique personnalisée, créez un point de terminaison pour le message d’événement. En règle générale, le point de terminaison entreprend des actions en fonction des données d’événement. Pour simplifier ce guide de démarrage rapide, vous allez 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.

  1. Dans la page de l’article, 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.

  2. Dans la page Déploiement personnalisé, procédez comme suit :

    1. Pour Groupe de ressources, sélectionnez le groupe de ressources que vous avez créé lors de la création du compte de stockage. Il sera plus facile pour vous de nettoyer une fois que vous aurez terminé le didacticiel en supprimant le groupe de ressources.

    2. Pour Nom du site, entrez un nom pour l’application web.

    3. Pour Nom du plan d’hébergement, entrez un nom pour le plan App Service à utiliser pour l’hébergement de l’application web.

    4. Sélectionnez Revoir + créer.

      Screenshot showing the Custom deployment page.

  3. Dans la page Vérifier + créer, sélectionnez Créer.

  4. Le déploiement peut prendre quelques minutes. Sélectionnez Alertes (icône représentant une cloche) dans le portail, puis Accéder au groupe de ressources.

    Screenshot showing the successful deployment message with a link to navigate to the resource group.

  5. Dans la page Groupe de ressources, dans la liste des ressources, sélectionnez l’application web que vous avez créée. Vous pouvez également voir le plan App Service et le compte de stockage dans cette liste.

    Screenshot that shows the Resource Group page with the deployed resources.

  6. Dans la page App Service de votre application web, sélectionnez l’URL pour accéder au site web. L’URL doit être au format suivant : https://<your-site-name>.azurewebsites.net.

    Screenshot that shows the App Service page with the link to the site highlighted.

  7. Confirmez que vous voyez le site, mais qu’aucun événement n’a encore été posté sur celui-ci.

    Screenshot that shows the Event Grid Viewer sample app.

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.

    Add event subscription button

  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 Webhook pour Type de point de terminaison.

    3. Choisissez Sélectionner un point de terminaison.

      Provide event subscription values

    4. Pour le point de terminaison du webhook, indiquez l’URL de votre application web et ajoutez api/updates à l’URL de la page d’accueil. Sélectionnez Confirmer la sélection.

      Provide endpoint URL

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

  3. Affichez à nouveau votre application web, et notez qu’un événement de validation d’abonnement lui a été envoyé. Sélectionnez l’icône en forme d’œil pour développer les données d’événements. Event Grid envoie l’événement de validation pour que le point de terminaison puisse vérifier qu’il souhaite recevoir des données d’événement. L’application web inclut du code pour valider l’abonnement.

    Screenshot of the Event Grid Viewer app with the Subscription Validated event.

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. Cloud Shell s’ouvre dans le volet inférieur du navigateur web.

    Select Cloud Shell icon

  2. Sélectionnez Bash dans l’angle supérieur gauche de la fenêtre Cloud Shell.

    Screenshot that shows the Cloud Shell with Bash selected in the top-left corner.

  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. Vous publiez des exemples d’événements sur ce point de terminaison de rubrique.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --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. Il s’agit de la clé primaire de la rubrique Event Grid. Pour récupérer cette clé à partir du portail Azure, basculez vers l’onglet Clés d’accès de la page Rubrique Event Grid. Pour être en mesure de poster un événement dans une rubrique personnalisée, vous avez besoin de la clé d’accès.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --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 : Dans la commande, l’en-tête aeg-sas-key est défini sur la clé d’accès que vous avez obtenue précédemment.

    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/). Cloud Shell s’ouvre dans le volet inférieur du navigateur web.

    Select Cloud Shell icon

  2. Dans Cloud Shell, 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.

  3. 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 :

    Groupe de ressources :

    $resourceGroupName = "<resource group name>"
    

    Nom de la rubrique Event Grid :

    $topicName = "<topic name>"
    
  4. 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
    
  5. 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)+"]"
    
  6. 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 dans la visionneuse Event Grid

Vous avez déclenché l’événement, et Event Grid a envoyé le message au point de terminaison configuré lors de l’abonnement. Affichez votre application web pour voir l’événement que vous venez d’envoyer.

Event Grid Viewer

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.

    Screenshot that shows the Resource Groups page.

  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.

    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 personnalisés, 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.