Tutoriel : utiliser des rubriques d’espace de noms pour acheminer des messages MQTT vers Azure Event Hubs (Azure CLI)
Dans ce tutoriel, vous allez apprendre à utiliser une rubrique d’espace de noms pour acheminer les données de clients MQTT vers Azure Event Hubs. Les étapes principales sont les suivantes :
Prérequis
- Si vous n’en avez pas, créez un compte gratuit Azure avant de commencer.
- Si vous débutez avec Event Grid, lisez la Vue d’ensemble d’Event Grid avant de commencer ce tutoriel.
- Inscrivez le fournisseur de ressources Event Grid en suivant les étapes décrites dans Inscrire le fournisseur de ressources Event Grid.
- Vérifiez que le port 8883 est ouvert dans votre pare-feu. L’exemple dans ce tutoriel utilise le protocole MQTT, lequel communique sur le port 8883. Ce port pourrait être bloqué dans certains environnements réseau professionnels et scolaires.
Lancer Cloud Shell
Connectez-vous au portail Azure.
Sélectionnez le lien pour lancer Cloud Shell.
Basculez vers Bash.
Créer un espace de noms Event Grid et une rubrique
Pour créer un espace de noms Event Grid et une rubrique dans l’espace de noms, copiez le script suivant dans un éditeur, remplacez les espaces réservés par des valeurs réelles et exécutez les commandes.
Paramètre substituable | Commentaires |
---|---|
RESOURCEGROUPNAME |
Indiquez un nom pour le groupe de ressources à créer. |
EVENTGRIDNAMESPACENAME |
Indiquez le nom de l’espace de noms Event Grid. |
REGION |
Indiquez l’emplacement dans lequel vous souhaitez créer les ressources. |
NAMESPACETOPICNAME |
Indiquez un nom pour la rubrique d’espace de noms. |
rgName="RESOURCEGROUPNAME"
nsName="EVENTGRIDNAMESPACENAME"
location="REGION"
nsTopicName="NAMESPACETOPICNAME"
az group create -n $rgName -l $location
az eventgrid namespace create -g $rgName -n $nsName -l $location --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
az eventgrid namespace topic create -g $rgName --name $nsTopicName --namespace-name $nsName
Création d’un espace de noms Event Hubs et d’un concentrateur d’événements
Pour créer un espace de noms Event Hubs et un hub d’événements dans l’espace de noms, remplacez les espaces réservés par des valeurs réelles et exécutez les commandes suivantes. Ce hub d’événements est utilisé comme gestionnaire d’événements dans l’abonnement aux événements que vous créez dans ce tutoriel.
Paramètre substituable | Commentaires |
---|---|
EVENTHUBSNAMESPACENAME |
Indiquez un nom pour l’espace de noms Event Hubs à créer. |
EVENTHUBNAME |
Indiquez le nom de l’instance Event Hubs (hub d’événements) à créer dans l’espace de noms Event Hubs. |
ehubNsName="EVENTHUBSNAMESPACENAME`"
ehubName="EVENTHUBNAME"
az eventhubs namespace create --resource-group $rgName --name $ehubNsName
az eventhubs eventhub create --resource-group $rgName --namespace-name $ehubNsName --name $ehubName
Autoriser l’espace de noms Event Grid à envoyer des événements au hub d’événements
Exécutez la commande suivante pour ajouter le principal de service de l’espace de noms Event Grid au rôle Expéditeur de données Azure Event Hubs sur l’espace de noms Event Hubs. De cette façon, l’espace de noms Event Grid et les ressources qu’il contient peuvent envoyer des événements au hub d’événements dans l’espace de noms Event Hubs.
egNamespaceServicePrincipalObjectID=$(az ad sp list --display-name $nsName --query [].id -o tsv)
namespaceresourceid=$(az eventhubs namespace show -n $ehubNsName -g $rgName --query "{I:id}" -o tsv)
az role assignment create --assignee $egNamespaceServicePrincipalObjectID --role "Azure Event Hubs Data Sender" --scope $namespaceresourceid
Créer un abonnement aux événements avec Event Hubs comme point de terminaison
Pour créer un abonnement aux événements pour la rubrique d’espace de noms créée précédemment, remplacez les espaces réservés par des valeurs réelles et exécutez les commandes suivantes. Cet abonnement est configuré pour utiliser le hub d’événements comme gestionnaire d’événements.
Paramètre substituable | Commentaires |
---|---|
EVENTSUBSCRIPTIONNAME |
Indiquez un nom pour l’abonnement aux événements pour la rubrique d’espace de noms. |
eventSubscriptionName="EVENTSUBSCRIPTIONNAME"
eventhubresourceid=$(az eventhubs eventhub show -n $ehubName --namespace-name $ehubNsName -g $rgName --query "{I:id}" -o tsv)
az resource create --api-version 2023-06-01-preview --resource-group $rgName --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $eventSubscriptionName --parent namespaces/$nsName/topics/$nsTopicName --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventhubresourceid\"}}}}}}"
Configurer le routage dans l’espace de noms Event Grid
Exécutez les commandes suivantes pour activer le routage sur l’espace de noms afin d’acheminer les messages ou les événements vers la rubrique d’espace de noms créée précédemment. L’abonnement aux événements sur cette rubrique d’espace de noms transfère ces événements au hub d’événements configuré en tant que gestionnaire d’événements.
routeTopicResourceId=$(az eventgrid namespace topic show -g $rgName --namespace-name $nsName -n $nsTopicName --query "{I:id}" -o tsv)
az eventgrid namespace create -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$routeTopicResourceId}"
Créer un client, un espace de rubrique et des liaisons d’autorisation
Créez à présent un client pour envoyer quelques messages à des fins de test. Dans cette étape, vous créez un client, un espace de rubrique avec une rubrique ainsi que des liaisons d’éditeur et d’abonné.
Pour obtenir des instructions détaillées, consultez Démarrage rapide : publier des messages MQTT sur un espace de noms Event Grid et s’y abonner avec Azure CLI.
Paramètre substituable | Commentaires |
---|---|
CLIENTNAME |
Indiquez un nom pour le client qui envoie quelques messages de test. |
CERTIFICATETHUMBPRINT |
Empreinte du certificat du client. Consultez le guide de démarrage rapide ci-dessus pour obtenir des instructions sur la création d’un certificat et l’extraction d’une empreinte. Utilisez la même empreinte dans l’outil MQTTX pour envoyer des messages de test. |
TOPICSPACENAME |
Indiquez un nom pour l’espace de rubrique à créer. |
PUBLSHERBINDINGNAME |
Indiquez un nom pour la liaison d’éditeur. |
SUBSCRIBERBINDINGNAME |
Indiquez un nom pour la liaison d’abonné. |
clientName="CLIENTNAME"
clientAuthName="client1-authnID"
clientThumbprint="CERTIFICATETHUMBPRINT"
topicSpaceName="TOPICSPACENAME"
publisherBindingName="PUBLSHERBINDINGNAME"
subscriberBindingName="SUBSCRIBERBINDINGNAME"
az eventgrid namespace client create -g $rgName --namespace-name $nsName -n $clientName --authentication-name $clientAuthName --client-certificate-authentication "{validationScheme:ThumbprintMatch,allowed-thumbprints:[$clientThumbprint]}"
az eventgrid namespace topic-space create -g $rgName --namespace-name $nsName -n $topicSpaceName --topic-templates ['contosotopics/topic1']
az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $publisherBindingName --client-group-name '$all' --permission publisher --topic-space-name $topicSpaceName
az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $subscriberBindingName --client-group-name '$all' --permission subscriber --topic-space-name $topicSpaceName
Envoyer des messages avec MQTTX
Utilisez MQTTX pour envoyer quelques messages de test. Pour obtenir des instructions pas à pas, consultez le guide de démarrage rapide Publier une rubrique MQTT et s’y abonner.
Vérifiez que le hub d’événements a reçu ces messages dans la page Vue d’ensemble de votre espace de noms Event Hubs.
Afficher les messages MQTT acheminés dans Event Hubs à l’aide d’une requête Stream Analytics
Accédez à l’instance Event Hubs (Event Hub) dans votre abonnement aux événements dans le Portail Azure. Traitez les données de votre Event Hub avec Stream Analytics. Pour obtenir plus d’informations, consultez Traiter des données d’Azure Event Hubs avec Stream Analytics – Azure Event Hubs | Microsoft Learn. Vous pouvez voir les messages MQTT dans la requête.
Étapes suivantes
Si vous souhaitez obtenir des exemples de code, accédez à ce référentiel GitHub.