Démarrage rapide : Router des événements personnalisés vers un point de terminaison web avec Azure CLI et Event Grid
Dans cet article, vous utilisez l’interface de ligne de commande Azure pour créer une rubrique personnalisée dans Azure Event Grid, vous abonner à cette rubrique personnalisée et déclencher l’événement pour afficher le résultat.
Remarque
Si vous débutez avec Azure Event Grid, consultez Qu’est-ce qu’Azure Event Grid pour obtenir une vue d’ensemble du service avant de suivre ce didacticiel.
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.
Une fois que vous avez fini, vous voyez que les données d’événement ont été envoyées à l’application web.
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.
Créer un groupe de ressources
Les rubriques Event Grid sont des ressources Azure et doivent être placées dans un groupe de ressources Azure. Un groupe de ressources est une collection logique dans laquelle des ressources Azure sont déployées et gérées.
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. Si vous sélectionnez Essayer, la fenêtre Azure Cloud Shell s’affiche dans le volet droit. Sélectionnez ensuite Copier pour copier la commande et collez-la dans la fenêtre Azure Cloud Shell, puis appuyez sur ENTRÉE pour exécuter la commande. Modifiez 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
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
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
estRegistered
, 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 la rubrique personnalisée dans votre groupe de ressources à l’aide de 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 comprendre entre 3 et 50 caractères, et contenir uniquement des valeurs a-z, A-Z, 0-9 et « - »
Copiez la commande suivante, spécifiez un nom pour la rubrique, puis appuyez sur ENTRÉE pour exécuter la commande.
topicname=<your-topic-name>
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 nous abonner à la rubrique personnalisée, 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.
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>
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 gridResourceGroup \ --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.
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/
.
Copiez la commande suivante, remplacez
$sitename
par le nom de l’application web créée à l’étape précédente, puis appuyez sur ENTRÉE pour exécuter la commande.endpoint=https://$sitename.azurewebsites.net/api/updates
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)
Exécutez la commande suivante pour créer un abonnement à la rubrique personnalisée en utilisant le 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.
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. Tout d’abord, il nous faut l’URL et la clé de la rubrique personnalisée.
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 cet article, vous allez utiliser des exemples de données d’événements à envoyer à la rubrique personnalisée. En règle générale, une application ou un service Azure envoie les données d’événements. 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 cet article, utilisez CURL pour envoyer l’événement à la rubrique.
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 envisagez de continuer à utiliser cet événement ou l’application de visionnage d’évènement, ne supprimez pas les ressources créées dans cet article. Sinon, utilisez la commande suivante pour supprimer les ressources créées dans cet article.
az group delete --name gridResourceGroup
Étapes suivantes
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 :
- À propos d’Event Grid
- Acheminer des événements de stockage Blob Azure vers un point de terminaison Web personnalisé
- Surveiller les modifications d’une machine virtuelle avec Azure Event Grid et Azure Logic Apps
- Diffuser en continu des Big Data dans un entrepôt de données
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.