Livrer des événements aux webhooks en utilisant des rubriques d’espace de noms – Azure CLI (préversion)

L'article fournit des instructions détaillées pour publier des événements sur Azure Event Grid au format CloudEvents JSON et livrer ces événements à l'aide du modèle de livraison par envoi (push). Pour être plus précis, vous utilisez Azure CLI et Curl pour publier des événements dans une rubrique d’espaces de noms d’Event Grid et envoyer (push) ces événements d’un abonnement aux événements vers la destination de gestionnaire de webhooks. Pour plus d'informations sur le modèle de livraison par envoi (push), consultez Vue d'ensemble de la livraison par envoi (push).

Remarque

L'extension Azure CLI Event Grid ne prend pas encore en charge les espaces de noms et les ressources qu'il contient. Nous utiliserons la ressource Azure CLI pour créer des ressources Event Grid.

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

Prérequis

  • Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.

  • Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.

    • Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.

    • Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.

    • Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.

  • Cet article nécessite la version 2.0.70 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.

Activer le fournisseur de ressources Event Grid

  1. Si vous n’avez jamais utilisé Event Grid dans votre abonnement Azure, vous risquez de devoir 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 un groupe de ressources

Créez un groupe de ressources Azure avec la commande az group create. Nous utilisons ce groupe de ressources pour contenir toutes les ressources créées dans cet article.

Les étapes générales à suivre pour utiliser Cloud Shell pour exécuter des commandes sont les suivantes :

  • Cliquez sur Ouvrir Cloud Shell pour afficher une fenêtre Azure Cloud Shell dans le volet droit.
  • Copiez et collez la commande dans la fenêtre Cloud Shell.
  • Appuyez sur Entrée pour exécuter la commande.
  1. Déclarez une variable pour contenir le nom d'un groupe de ressources Azure. Spécifiez un nom pour le groupe de ressources en le remplaçant <your-resource-group-name> par une valeur de votre choix.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Créez un groupe de ressources. Modifiez l’emplacement comme vous le souhaitez.

    az group create --name $resource_group --location $location
    

Créer un espace de noms

Un espace de noms Event Grid fournit un point de terminaison défini par l’utilisateur sur lequel vous publiez vos événements. L’exemple suivant crée un espace de noms dans votre groupe de ressources à l’aide de Bash dans Azure Cloud Shell. Le nom de l’espace de noms doit être unique, car il fait partie d’une entrée DNS. Un nom d’espace de noms doit respecter les règles suivantes :

  • Il doit contenir entre 3 et 50 caractères.
  • Il doit être unique au niveau régional.
  • Seuls les caractères autorisés sont a-z, A-Z, 0-9 et -
  • Il est préférable de ne pas commencer par des préfixes de mots clés réservés comme Microsoft, System ou EventGrid.
  1. Déclarez une variable pour contenir le nom de votre espace de noms Event Grid. Spécifiez un nom pour l'espace de noms en le remplaçant <your-namespace-name> par une valeur que vous aimez.

    namespace="<your-namespace-name>"
    
  2. Créez un espace de noms. Vous souhaiterez peut-être modifier l’emplacement où il est déployé.

    az eventgrid namespace create -g $resource_group -n $namespace -l $location
    

Créez une rubrique d’espace de noms

Créez une rubrique utilisée pour contenir tous les événements publiés sur le point de terminaison de l'espace de noms.

  1. Déclarez une variable pour contenir le nom de votre sujet d'espace de noms. Spécifiez un nom pour le sujet de l'espace de noms en le remplaçant <your-topic-name> par une valeur que vous aimez.

    topic="<your-topic-name>"
    
  2. Créez votre rubrique d’espace de noms :

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Créer un point de terminaison de message

Avant de nous abonner à la rubrique d’espace de noms, nous allons créer 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 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. Copiez la commande suivante, spécifiez un nom pour l’application web (exemple de visionneuse Event Grid), puis appuyez sur 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 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 $resource_group \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

Le déploiement peut prendre quelques minutes. Une fois le déploiement réussi, affichez votre application web pour vérifier qu’elle s’exécute. Dans un navigateur web, accédez à : https://<your-site-name>.azurewebsites.net. Vous devez voir le site sans messages affichés.

Livrer des événements dans un webhook de la Visionneuse Azure Event Grid

Créez un abonnement à un événement de livraison par envoi (push) dans un espace de noms en utilisant le webhook pour la Visionneuse Azure Event Grid.

  1. Définissez une variable pour contenir le nom de l’abonnement à un événement.

    event_subscription="<your_event_subscription_name>"
    
  2. Remplacez EVENTGRIDWEBSITENAME par le nom du site web de la Visionneuse Event Grid. Par exemple : contosoegridviewer.

    az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
    

Envoyer des événements à la rubrique

Maintenant, envoyez un exemple d'événement au sujet de l'espace de noms en suivant les étapes de cette section.

Répertorier les clés d’accès à l’espace de noms

  1. Obtenez les clés d'accès associées à l'espace de noms que vous avez créé. Vous utilisez l’une d’entre elles pour vous authentifier lors de la publication d’événements. Pour répertorier vos clés, vous avez d'abord besoin de l'ID de ressource d'espace de noms complet. Obtenez-le en exécutant la commande suivante :

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Obtenez la première clé de l’espace de noms :

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Publier un événement

  1. Récupérez le nom d’hôte de l’espace de noms. Vous l’utilisez pour composer le point de terminaison HTTP de l’espace de noms auquel les événements sont envoyés. Les opérations suivantes ont d’abord été disponibles dans la version 2023-06-01-preview de l’API.

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. Créez un exemple d'événement conforme à CloudEvents :

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    L’élément data est la charge utile de votre événement. N’importe quel fichier JSON bien construit peut être placé dans ce champ. Consultez les spécifications CloudEvents pour plus d’informations sur les propriétés (également appelées attributs de contexte) qui peuvent être activées dans un événement.

  3. Utilisez CURL pour envoyer l'événement au sujet. CURL est un utilitaire qui envoie des requêtes HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Vérifier que la Visionneuse Azure Event Grid a reçu l’événement

Vérifiez que l’application web Visionneuse Azure Event Grid montre les événements reçus d’Event Grid.

Capture d’écran qui montre la Visionneuse Azure Event Grid avec un exemple d’événement reçu.

Dans ce démarrage rapide, vous avez utilisé un webhook en tant que gestionnaire d’événements. Pour découvrir plus d’informations sur un démarrage rapide qui utilise un Event Hub Azure comme gestionnaire d’événements, consultez Livrer des événements à Azure Event Hubs en utilisant des rubriques d’espaces de noms.