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 montrant l’enregistrement du fournisseur Microsoft.EventGrid avec l’abonnement Azure.

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

    Image montrant l’enregistrement réussi du fournisseur Microsoft.EventGrid avec l’abonnement 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. 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.

    Capture d'écran montrant la barre de recherche du port Azure pour rechercher les rubriques Event Grid.

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

    Capture d'écran montrant le bouton Créer une rubrique sur la page rubriques Event Grid.

  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.

      Page Créer une rubrique

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

      Vérifier les paramètres et créer

  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.

    Capture d’écran de la page d’hébergement de la rubrique Event Grid.

    Notes

    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.

    Bouton pour déployer le modèle Resource Manager sur Azure.

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

    1. Pour Groupe de ressources, sélectionnez un groupe de ressources existant ou créez-en un.

    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.

      Capture d’écran montrant la page Déploiement personnalisé.

  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.

    Capture d’écran montrant le message indiquant que le déploiement a réussi avec un lien pour accéder au groupe de ressources.

  5. Dans la page Groupe de ressources, dans la liste des ressources, sélectionnez l’application web (contosoegriviewer dans l’exemple suivant) que vous avez créée.

    Capture d’écran montrant la page Groupe de ressources avec les ressources déployées.

  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.

    Capture d’écran montrant la page App Service avec le lien vers le site mis en évidence.

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

    Capture d’écran montrant l’exemple d’application Event Grid Viewer.

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.

    Bouton d’ajout d’abonnement aux événements

  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.

      Fournir des valeurs d’abonnement à un événement

    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.

      Fournir une URL du point de terminaison

    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.

    Capture d’écran de l’application Event Grid Viewer avec l’événement Abonnement validé.

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.

    Icône Sélectionner Cloud Shell

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

    Capture d’écran montrant Cloud Shell avec Bash sélectionné en haut à gauche.

  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.

    Icône Sélectionner Cloud Shell

  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.

Visionneuse Event Grid

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.

    Capture d’écran montrant la page 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.

    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.