Points de terminaison IoT Hub

Azure IoT Hub expose différents points de terminaison pour prendre en charge les appareils et les services qui interagissent avec lui.

Remarque

Certaines des fonctionnalités mentionnées dans cet article, comme la messagerie cloud-à-appareil, les jumeaux d’appareil et la gestion des appareils, sont disponibles uniquement dans le niveau Standard d’IoT Hub. Pour plus d’informations sur les niveaux de base et standard/gratuit d’IoT Hub, consultez Choisir le niveau IoT Hub correspondant à votre solution.

Noms IoT Hub

Vous pouvez trouver le nom d’hôte d’un hub IoT dans le portail Azure, dans le volet Vue d’ensemble de votre hub IoT. Par défaut, le nom DNS d’un hub IoT ressemble à l’exemple suivant :

{your iot hub name}.azure-devices.net

Points de terminaison IoT Hub pour le développement et la gestion

Azure IoT Hub est un service multilocataire qui propose ses fonctionnalités à différents acteurs. Le schéma qui suit illustre les différents points de terminaison proposés par IoT Hub.

Diagramme montrant la liste des points de terminaison IoT Hub intégrés.

La liste ci-dessous décrit les points de terminaison :

  • Fournisseur de ressources : une interface Azure Resource Manager. Cette interface permet aux propriétaires d’abonnement Azure de créer et de supprimer des IoT Hubs et de mettre à jour les propriétés IoT Hub. Les propriétés des hubs IoT régissent les stratégies d’accès partagé au niveau du hub, par opposition au contrôle d’accès au niveau de l’appareil, et les options fonctionnelles pour les messages cloud-à-appareil et appareil-à-cloud. Le fournisseur de ressources IoT Hub vous permet également d’exporter les identités des appareils.

  • Gestion d’identité de l’appareil : un ensemble de points de terminaison HTTPS REST afin de gérer les identités des appareils (par exemple pour les opérations de création, de récupération, de mise à jour et de suppression). Les identités des appareils sont utilisées pour l’authentification et le contrôle d’accès des appareils.

  • Gestion des jumeaux d’appareil : un ensemble de points de terminaison REST HTTPS orientés service pour interroger et mettre à jour les jumeaux d’appareil (mise à jour des étiquettes et des propriétés).

  • Gestion des travaux : un ensemble de points de terminaison REST HTTPS orientés service pour interroger et gérer les travaux.

  • Points de terminaison d’appareil : un ensemble de points de terminaison pour chaque appareil dans le registre des identités. Sauf indication contraire, ces points de terminaison sont exposés en utilisant les protocoles MQTT v3.1.1, HTTPS 1.1 et AMQP 1.0. Les protocoles AMQP et MQTT sont également disponibles sur WebSockets sur le port 443. Ces points de terminaison d’appareil comprennent :

    • Envoyer des messages appareil-à-cloud

    • Recevoir des messages cloud-à-appareil

    • Initiation des chargements de fichier

    • Récupérer et mettre à jour les propriétés du jumeau d’appareil (le protocole HTTPS n’est pas pris en charge)

    • Recevoir des requêtes de méthode directe (le protocole HTTPS n’est pas pris en charge)

  • Points de terminaison de service : un ensemble de points de terminaison pour que votre back end de solution puisse communiquer avec vos appareils. À une exception près, ces points de terminaison sont uniquement exposés au moyen des protocoles AMQP et AMQP sur WebSockets. Le point de terminaison d’appel de méthode directe est exposé via le protocole HTTPS.

    • Recevoir des messages appareil-à-cloud : ce point de terminaison est le point de terminaison intégré abordé dans les concepts de routage des messages. Il peut être utilisé par un backend pour lire les messages appareil-à-cloud envoyés par vos appareils. Vous pouvez créer des points de terminaison sur votre IoT Hub en plus de ce point de terminaison prédéfini.

    • Envoyer des messages cloud-à-appareil et recevoir des accusés de remise

    • Recevoir les notifications de chargement de fichier

    • Appeler une méthode directe

L’article Kits Azure IoT Hub SDK décrit les différentes méthodes permettant d’accéder à ces points de terminaison.

Tous les points de terminaison IoT Hub utilisent le protocole TLS, et aucun point de terminaison n’est jamais exposé sur des canaux non chiffrés/non sécurisés.

Important

Les fonctionnalités suivantes pour les appareils qui utilisent l’authentification par l’autorité de certification X.509 ne sont pas encore disponibles, et le mode aperçu doit être activé :

  • protocoles HTTPS, MQTT sur WebSockets, et AMQP sur WebSockets.
  • Chargements de fichiers (tous les protocoles).

Ces fonctionnalités sont généralement disponibles sur les appareils qui utilisent l’authentification par empreinte X.509. Pour en savoir plus sur l’authentification X.509 avec IoT Hub, consultez les certificats X.509 pris en charge.

Points de terminaison personnalisés pour le routage des messages

Vous pouvez lier des services Azure existants dans vos abonnements Azure à votre hub IoT pour qu’ils jouent le rôle de points de terminaison pour le routage des messages. Ces points de terminaison de service jouent le rôle de points de terminaison de service et sont utilisés pour les routages de message. Les appareils ne peuvent pas écrire directement sur ces points de terminaison. Pour en savoir plus sur le routage de messages, consultez Utiliser le routage des messages IoT Hub pour envoyer des messages appareil-à-cloud à différents points de terminaison.

IoT Hub prend actuellement en charge les services Azure suivants comme points de terminaison personnalisés :

  • Conteneurs de stockage
  • Event Hubs
  • Files d'attente Service Bus
  • Rubriques de Service Bus
  • Cosmos DB

Pour connaître les limites des points de terminaison par hub, consultez Quotas et limitation.

Point de terminaison intégré

Vous pouvez utiliser l’intégration et les SDK standard Event Hubs pour recevoir des messages appareil-à-cloud du point de terminaison intégré (messages/événements). Une fois qu’un itinéraire est créé, les données cessent de circuler vers le point de terminaison intégré, sauf si un itinéraire est créé vers ce point de terminaison. Même si aucun itinéraire n’est créé, un itinéraire de secours doit être activé pour acheminer les messages vers le point de terminaison intégré. L’itinéraire de secours est activé par défaut si vous créez votre hub à l’aide du portail ou de l’interface de ligne de commande.

Stockage Azure en tant que point de terminaison de routage

il existe deux services de stockage IoT Hub qui peuvent acheminer des messages vers : les comptes Stockage Blob Azure et Data Lake Storage Gen2 Azure (ADLS Gen2). Les deux utilisent des objets Blob pour leur stockage.

IoT Hub prend en charge l’écriture de données sur le Stockage Azure au format Apache Avro ainsi qu’au format JSON. La valeur par défaut est AVRO. Pour utiliser l’encodage JSON, définissez la propriété contentType sur application/json et la propriété contentEncoding sur UTF-8 dans les propriétés système du message. Ces deux valeurs sont insensibles à la casse. Si l’encodage du contenu n’est pas défini, IoT Hub écrit les messages dans un format encodé en base 64.

Le format d’encodage ne peut être défini qu’au moment de configurer le point de terminaison du stockage d’objets blob. Il ne peut pas être modifié pour un point de terminaison existant.

IoT Hub regroupe les messages dans des lots et écrit les données dans un stockage quand le lot atteint une certaine taille ou après un certain laps de temps. IoT Hub utilise par défaut la convention d’affectation de noms de fichiers suivante : {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}.

Vous pouvez utiliser n’importe quelle convention de nommage des fichiers, mais vous devez utiliser tous les jetons listés. IoT Hub écrit dans un objet blob vide s’il n’y a aucune donnée à écrire.

Nous vous recommandons de répertorier les objets blob ou les fichiers, puis d’exécuter une itération sur ces derniers, afin de garantir que tous les objets blob ou les fichiers seront lus, sans avoir à faire de suppositions concernant la partition. La plage de partition peut changer pendant un basculement initié par Microsoft ou pendant un basculement manuel IoT Hub. Vous pouvez utiliser l’API Lister les blobs pour énumérer la liste des objets blob ou l’API Lister ADLS Gen2 API pour lister les fichiers. Exemple :

public void ListBlobsInContainer(string containerName, string iothub)
{
    var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
    var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    if (cloudBlobContainer.Exists())
    {
        var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
        foreach (IListBlobItem item in results)
        {
            Console.WriteLine(item.Uri);
        }
    }
}

Pour créer un compte de stockage compatible avec Azure Data Lake Gen2, créez un compte de stockage V2 et sélectionnez Activer l’espace de noms hiérarchique dans la section Data Lake Storage Gen2 de l’onglet Avancé, comme illustré dans l’image suivante :

Capture d’écran montrant comment sélectionner stockage Azure Date Lake Gen2.

Files d’attente et rubriques Service Bus en tant que point de terminaison de routage

Les options Sessions ou Détection des doublons ne doivent pas être activées pour les files d’attente et rubriques Service Bus utilisées comme points de terminaison IoT Hub. Si l’une de ces options est activée, le point de terminaison s’affiche comme Inaccessible dans le portail Azure.

Event Hubs en tant que point de terminaison de routage

En plus du point de terminaison compatible Event Hubs intégré, vous pouvez router des données vers des points de terminaison personnalisés de type Event Hubs.

Azure Cosmos DB en tant que point de terminaison de routage

Vous pouvez envoyer des données directement à Azure Cosmos DB à partir d’IoT Hub. IoT Hub prend en charge l’écriture dans Cosmos DB au format JSON (si spécifié dans le type de contenu du message) ou en tant que binaire codé en base 64.

Pour prendre en charge les scénarios à grande échelle, vous pouvez activer des clés de partition synthétiques pour le point de terminaison Cosmos DB. Cosmos DB étant un magasin de données hyperscale, toutes les données et tous les documents qui y sont consignés doivent contenir un champ représentant une partition logique. Chaque partition logique a une taille maximale de 20 Go. Vous pouvez spécifier le nom de la propriété de la clé de partition dans Nom de la clé de partition. Le nom de la propriété de la clé de partition est défini au niveau du conteneur et ne peut pas être modifié une fois qu’il a été défini.

Vous pouvez configurer la valeur de la clé de partition synthétique en spécifiant un modèle dans Modèle de clé de partition en fonction de votre volume de données estimé. Par exemple, dans les scénarios industriels, votre partition logique peut approcher sa limite maximale de 20 Go en un mois. Dans ce cas, vous pouvez définir une clé de partition synthétique qui combine l’ID de l’appareil et le mois. La valeur de la clé de partition générée est automatiquement ajoutée à la propriété de la clé de partition pour chaque nouvel enregistrement Cosmos DB, ce qui garantit la création de partitions logiques chaque mois pour chaque appareil.

Attention

Si vous utilisez l’identité managée affectée par le système pour l’authentification auprès de Cosmos DB, vous devez utiliser Azure CLI ou Azure PowerShell pour attribuer la définition de rôle intégré Contributeur de données intégré Cosmos DB à l’identité. L’attribution de rôle pour Cosmos DB n’est actuellement pas prise en charge à partir du portail Azure. Pour plus de détails sur les différents rôles, consultez Configurer l’accès en fonction du rôle pour Azure Cosmos DB. Pour comprendre l'attribution des rôles via l'interface CLI, voir Gérer les ressources de rôles SQL Azure Cosmos DB.

État d’intégrité des points de terminaison

Vous pouvez utiliser l’API REST Get Endpoint Health pour obtenir l’état d’intégrité des points de terminaison. Nous vous recommandons d’utiliser les métriques de routage IoT Hub associées à la latence de routage des messages pour identifier et déboguer des erreurs lorsque le point de terminaison est inactif ou n’est pas sain, car nous nous attendons à ce que la latence soit plus élevée lorsque le point de terminaison se trouve dans l’un des états indiqués ci-dessous. Pour en savoir plus sur l’utilisation des métriques IoT Hub, consultez Surveiller IoT Hub.

État d’intégrité Description
healthy Le point de terminaison accepte des messages comme prévu.
unhealthy Le point de terminaison n’accepte pas les messages et IoT Hub effectue une nouvelle tentative d’envoyer des messages à ce point de terminaison.
unknown IoT Hub n’a pas tenté de remettre des messages à ce point de terminaison.
degraded Le point de terminaison accepte les messages plus lentement que prévu ou récupère d’un état non sain.
dead IoT Hub ne remet plus de messages à ce point de terminaison. Les nouvelles tentatives d’envoi de messages à ce point de terminaison ont échoué.

Étapes suivantes

En savoir plus sur ces rubriques :