Démarrage rapide : Router des événements personnalisés vers un point de terminaison web avec Azure CLI et Event Grid

Dans ce démarrage rapide, vous utilisez l’Azure CLI pour créer un sujet personnalisé dans Azure Event Grid, vous vous abonnez au sujet personnalisé, puis déclenchez un événement d’exemple pour visualiser 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. Cependant, pour simplifier ce démarrage rapide, vous envoyez des événements d’exemple à une application web qui collecte et affiche les messages. Lorsque vous terminez, vous voyez les données de l’événement dans l’application web, comme montré sur l’image suivante :

Capture d’écran montrant l’exemple de visionneuse Event Grid avec un exemple d’événement.

Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

Prérequis

  • Ce démarrage rapide nécessite la version 2.0.70 ou ultérieure de l’Azure CLI. Si vous utilisez Azure Cloud Shell, la dernière version est déjà installée.
  • Si vous débutez sur Azure Event Grid, consultez What's Azure Event Grid pour un aperçu du service avant de commencer ce démarrage rapide.

Créer un groupe de ressources

Les sujets Event Grid sont des ressources Azure que vous devez placer dans un groupe de ressources Azure. Le groupe de ressources est une collection logique dans laquelle vous déployez et gérez les ressources Azure.

Créez un groupe de ressources avec la commande az group create. L’exemple suivant crée un groupe de ressources nommé gridResourceGroup à l’emplacement westus2. Changez le nom du groupe de ressources et l’emplacement si vous le souhaitez.

az group create --name gridResourceGroup --location westus2

Activer le fournisseur de ressources Event Grid

  1. Si c’est la première fois que vous utilisez Event Grid dans votre abonnement Azure, vous devrez peut-être inscrire le fournisseur de ressources Event Grid. Exécutez la commande suivante pour enregistrer le fournisseur :

    az provider register --namespace Microsoft.EventGrid
    
  2. L’inscription peut prendre un certain temps. Pour vérifier l'état, exécutez la commande suivante :

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Lorsque registrationState est Registered, vous êtes prêt à continuer.

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. L’exemple suivant crée le sujet personnalisé dans votre groupe de ressources en utilisant Bash dans Azure Cloud Shell. Remplacez <your-topic-name> par un nom unique pour votre rubrique. Le nom de la rubrique personnalisée doit être unique, car il fait partie de l’entrée DNS (Domain Name System). De plus, il doit faire entre 3 et 50 caractères et ne contenir que les valeurs a-z, A-Z, 0-9 et « - »

  1. Copiez la commande suivante, spécifiez un nom pour le sujet, et sélectionnez Entrée pour exécuter la commande.

    topicname=<your-topic-name>
    
  2. Utilisez la commande az eventgrid topic create pour créer une rubrique personnalisée.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Créer un point de terminaison de message

Avant de vous abonner à la rubrique personnalisée, créez le point de terminaison pour le message de l’é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 démarrage rapide, déployez une application web préconçue 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. Copiez la commande suivante, spécifiez un nom pour l’application web (exemple du Visualizateur de grille d’événements), et sélectionnez Entrée pour exécuter la commande. Remplacez <your-site-name> par un nom unique pour votre application web. Le nom de l’application web doit être unique, car il fait partie de l’entrée DNS.

    sitename=<your-site-name>
    
  2. Exécutez le az deployment group create pour déployer l’application web à l’aide d’un modèle Azure Resource Manager.

    az deployment group create \
      --resource-group gridResourceGroup \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

Le déploiement peut prendre quelques minutes. Une fois le déploiement effectué, consultez votre application web pour vous assurer qu’elle s’exécute. Dans un navigateur web, accédez à : https://<your-site-name>.azurewebsites.net

Vous devriez voir le site sans qu’aucun message ne s’affiche.

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. L’exemple suivant s’abonne à la rubrique personnalisée que vous avez créée et transmet l’URL à partir de votre application web en tant que point de terminaison de la notification d’événement.

Le point de terminaison de votre application web doit inclure le suffixe /api/updates/.

  1. Copiez la commande suivante, remplacez $sitename par le nom de l’application web que vous avez créée à l’étape précédente, et sélectionnez Entrée pour exécuter la commande.

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. Exécutez la commande suivante pour obtenir l’ID de ressource de la rubrique créée.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. Exécutez la commande suivante pour créer un abonnement à la rubrique personnalisée à l’aide du point de terminaison.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint
    

    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 montrant l’exemple du Visualizateur de Grille d’Événements avec un événement de validation d’abonnement.

Envoyer un événement à votre rubrique personnalisée

Nous allons maintenant déclencher un événement pour voir comment Event Grid distribue le message à votre point de terminaison. D’abord, obtenez l’URL et la clé pour le sujet personnalisé.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Pour simplifier ce démarrage rapide, utilisez des données d’événements d’exemple à envoyer au sujet personnalisé. En règle générale, une application ou un service Azure envoie les données d’événement. L’exemple suivant crée des exemples de données d’événements :

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"} ]'

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. Dans ce démarrage rapide, utilisez cURL pour envoyer l’événement au sujet.

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

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.

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

Nettoyer les ressources

Si vous prévoyez de continuer à travailler avec cet événement ou l’application de visualisation d’événements, ne nettoyez pas les ressources que vous avez créées dans ce démarrage rapide. Sinon, utilisez la commande suivante pour supprimer les ressources que vous avez créées dans ce démarrage rapide.

az group delete --name gridResourceGroup --yes --no-wait

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 :

Pour en savoir plus sur la publication et la consommation d’événements d’Event Grid dans différents langages de programmation, voir les exemples suivants :