Espaces de rubrique dans la fonctionnalité broker MQTT d’Azure Event Grid
Un espace de rubrique représente plusieurs rubriques par le biais d’un ensemble de modèles de rubrique. Les modèles de rubrique sont une extension des filtres MQTT qui prennent en charge les variables, ainsi que les caractères génériques MQTT. Chaque espace de rubrique représente les rubriques MQTT que le même ensemble de clients doit utiliser pour communiquer.
Les espaces de rubrique sont utilisés pour simplifier la gestion du contrôle d’accès en vous permettant d’accorder un accès de publication ou d’abonnement à un groupe de rubriques à la fois au lieu de gérer l’accès pour chaque rubrique individuelle. Pour publier ou vous abonner à une rubrique MQTT, vous devez :
- Créer une ressource cliente pour chaque client qui doit communiquer via MQTT.
- Créer un groupe de clients qui inclut les clients qui ont besoin d’un accès pour publier ou s’abonner sur la même rubrique MQTT.
- Créer un espace de rubrique qui inclut un modèle de rubrique qui représente le filtre de rubrique/rubrique prévu.
- Créer une liaison d’autorisation pour accorder au groupe de clients l’accès à la publication ou à l’abonnement à l’espace de rubrique.
Filtre de rubrique MQTT :
Un filtre de rubrique MQTT est une rubrique MQTT qui peut inclure des caractères génériques pour un ou plusieurs de ses segments, ce qui lui permet de faire correspondre plusieurs rubriques MQTT. Il est utilisé pour simplifier les demandes d’abonnement, car un filtre de rubrique peut correspondre à plusieurs rubriques.
La fonctionnalité broker MQTT prend en charge tous les caractères génériques MQTT définis par la spécification MQTT comme suit :
- + : qui correspond à un seul segment.
- Par exemple, le filtre de rubrique : « machines/+/alert » correspond aux rubriques suivantes :
- machines/temp/alerte
- machines/humidity/alert
- Par exemple, le filtre de rubrique : « machines/+/alert » correspond aux rubriques suivantes :
- # : qui correspond à zéro ou plusieurs segments à la fin de la rubrique.
- Par exemple, le filtre de rubrique : « machines/# » correspond aux rubriques suivantes :
- machines
- machines/temp
- machines/humidité
- machines/temp/alert, etc.
- Par exemple, le filtre de rubrique : « machines/# » correspond aux rubriques suivantes :
Pour plus d’informations sur les caractères génériques, consultez l’article Caractères génériques de rubrique dans la spécification MQTT.
Modèles de rubrique
Les modèles de rubrique sont une extension des filtres MQTT qui prennent en charge les variables, ainsi que les caractères génériques MQTT. La configuration des espaces de rubrique fournit également un contrôle d’accès granulaire en vous permettant de contrôler l’autorisation de chaque client au sein d’un groupe de clients à publier ou à s’abonner à sa propre rubrique. En savoir plus sur la façon dont les modèles de rubrique fournissent un contrôle d’accès granulaire.
Configuration de l’espace de rubrique :
Les espaces de rubrique peuvent regrouper jusqu’à 10 modèles de rubriques. Les modèles de rubrique prennent en charge les caractères génériques MQTT (+ et #) et les variables suivantes :
- ${client.authenticationName} : cette variable représente le nom d’authentification du client. En savoir plus sur les noms d’ authentification client.
- ${client.attributes.x} : cette variable représente un attribut attribué à un client lors de la création/mise à jour du client, tel que « x » serait égal à la chaîne exacte de la clé d’attribut. Par exemple, si un client a l’attribut, un modèle de rubrique « area/${client.attributes.area}/telemetry » permet uniquement aux clients avec l’attribut client > « area:section1 » de publier sur la rubrique MQTT « area/section1/telemetry ». En savoir plus sur les attributs client.
Remarque :
Les rubriques qui commencent par $ sont réservées à une utilisation interne.
Une variable peut représenter une partie d’un segment ou un segment entier, mais ne peut pas couvrir plusieurs segments. Par exemple, un modèle de rubrique peut inclure « machines/${client.authenticationName|. factory1}/temp » qui correspond aux rubriques « machines/machine1.factory1/temp », « machines/machine2.factory1/temp », etc.
Les modèles de rubrique utilisent des caractères spéciaux $ et | et ceux-ci doivent être échappés différemment en fonction de l’interpréteur de commandes utilisé. Dans PowerShell, $ peut être échappé avec vehicles/${dollar}télémétrie/#. Si vous utilisez PowerShell, vous pouvez échapper ces caractères spéciaux, comme illustré dans les exemples suivants :
"vehicles/${client.authenticationName|dollar}/#"
vehicles/${client.authenticationName"|"dollar}/#
Configuration du portail Azure :
Procédez comme suit pour créer un espace de rubriques :
- Accédez à votre espace de noms dans le Portail Azure.
- Sous Espaces de rubriques, sélectionnez +Espace de rubrique.
- Attribuez un nom à votre espace de rubrique.
Notes
- Le nom de l’espace de rubrique doit contenir entre 3 et 50 caractères.
- Le nom de l’espace de rubrique peut inclure des caractères alphanumériques, des traits d’union(-) et aucun espace.
- Ajoutez au moins un modèle de rubrique en sélectionnant +Ajouter un modèle de rubrique.
- Sélectionnez Créer.
Configuration d’Azure CLI :
Utilisez les commandes suivantes pour créer un espace de rubrique :
az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]
Remarque
La propagation des mises à jour de la configuration de l’espace de rubrique peut prendre quelques minutes.
Étapes suivantes :
En savoir plus sur l’autorisation et l’authentification :