Puntos de conexión de IoT Hub

Azure IoT Hub expone varios puntos de conexión para admitir los dispositivos y servicios que interactúan con él.

Nota:

Algunas de las características que se mencionan en este artículo, como la mensajería de la nube al dispositivo, los dispositivos gemelos y la administración de dispositivos, solo están disponibles en el nivel estándar de IoT Hub. Para obtener más información sobre los niveles Básico y Estándar o Gratis de IoT Hub, consulte Elección del nivel adecuado de IoT Hub para la solución.

Nombres de IoT Hub

Puede encontrar el nombre de host del centro de IoT que hospeda los puntos de conexión en Azure Portal, en el panel de trabajo Información general del centro de IoT. De manera predeterminada, el nombre DNS de un centro de IoT es similar al ejemplo siguiente:

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

Puntos de conexión de IoT Hub para el desarrollo y la administración

Azure IoT Hub es un servicio multiinquilino que muestra su funcionalidad a diversos actores. En el siguiente diagrama se muestran los diferentes puntos de conexión expuestos por IoT Hub.

Diagrama en el que se muestra la lista de puntos de conexión de IoT Hub integrados.

En la lista siguiente se describen los puntos de conexión:

  • Proveedor de recursos: una interfaz de Azure Resource Manager. Esta interfaz permite que los propietarios de suscripciones de Azure creen y eliminen instancias de IoT Hub para actualizar sus propiedades. Las propiedades de IoT Hub controlan las directivas de acceso compartido de nivel de centro, a diferencia del control de acceso de nivel de dispositivo y las opciones funcionales para la mensajería de la nube al dispositivo y del dispositivo a la nube. El proveedor de recursos también permite exportar identidades de dispositivo.

  • Administración de identidades de dispositivo: un conjunto de puntos de conexión HTTPS REST para administrar las identidades de dispositivo (crear, recuperar, actualizar y eliminar). Las identidades del dispositivo se usan para autenticación de dispositivos y control de acceso.

  • Administración de dispositivos gemelos: un conjunto de punto de conexión de HTTPS REST orientado a servicios para consultar y actualizar dispositivos gemelos (actualización de etiquetas y propiedades).

  • Administración de trabajos: un conjunto de punto de conexión de HTTPS REST orientado a servicios para consultar y administrar trabajos.

  • Puntos de conexión de dispositivo: un conjunto de puntos de conexión para cada dispositivo del registro de identidad. Salvo cuando se indique lo contrario, estos puntos de conexión se exponen a través de los protocolos MQTT v3.1.1, HTTPS 1.1 y AMQP 1.0. AMQP y MQTT también están disponibles sobre WebSockets en el puerto 443. Estos puntos de conexión incluyen lo siguiente:

    • Envío de mensajes del dispositivo a la nube

    • Recepción de mensajes de nube a dispositivo

    • Iniciar cargas de archivo

    • Recuperación y actualización de las propiedades del dispositivo gemelo (no se admite HTTP)

    • Recepción de solicitudes de método directo (no se admite HTTPS)

  • Puntos de conexión de servicio: un conjunto de puntos de conexión que el back-end de solución para comunicarse con los dispositivos. Con una excepción, estos puntos de conexión solo se muestran con los protocolo AMQP y AMQP sobre WebSockets. El punto de conexión de invocación de método directo se muestra en el protocolo HTTPS.

    • Recepción de mensajes de dispositivo a nube: este punto de conexión es el punto de conexión integrado que se describe en los conceptos de enrutamiento de mensajes. Un servicio back-end puede usarse para leer los mensajes de dispositivo a nube enviados por los dispositivos. Además de este punto de conexión integrado, puede crear puntos de conexión personalizados en el centro de IoT.

    • Envío de mensajes de nube a dispositivo y recepción de confirmaciones de entrega

    • Recepción de notificaciones de carga de archivos

    • Invocación de un método directo

En el artículo SDK de Azure IoT Hub, se describen las distintas maneras con las que se puede acceder a estos puntos de conexión.

Todos los puntos de conexión de IoT Hub usan el protocolo TLS y ningún punto de conexión se expone en canales sin cifrar o no seguros.

Importante

La funcionalidad siguiente para los dispositivos que usan la autenticación de la entidad de certificación X.509 no está disponible con carácter general, y se debe habilitar el modo de vista previa:

  • los protocolos HTTPS, MQTT a través de WebSockets y AMQP a través de WebSockets.
  • Cargas de archivos (todos los protocolos).

Estas características están disponibles con carácter general para los dispositivos que usan la autenticación de huella digital X.509. Para obtener más información acerca de la autenticación X.509 con IoT Hub, consulte Certificados X.509 compatibles.

Puntos de conexión personalizados para el enrutamiento de mensajes

Puede vincular los servicios de Azure existentes con sus suscripciones a Azure en el centro de IoT para usarlos como puntos de conexión para el enrutamiento de mensajes. Estos puntos de conexión hacen de puntos de conexión de servicio y se usan como receptores para las rutas de los mensajes. Los dispositivos no pueden escribir directamente en estos puntos de conexión. Para más información sobre el enrutamiento de mensajes, consulte Uso del enrutamiento de mensajes de IoT Hub para enviar mensajes del dispositivo a la nube a distintos puntos de conexión.

En la actualidad, IoT Hub admite los siguientes servicios de Azure como puntos de conexión personalizados:

  • Contenedores de almacenamiento
  • Event Hubs
  • Colas de Service Bus
  • Temas de Service Bus
  • Cosmos DB

Para conocer los límites de los puntos de conexión por centro, consulte Cuotas y limitación.

Punto de conexión integrado

Puede usar la integración y los SDK de Event Hubs estándar para recibir mensajes del dispositivo a la nube desde el punto de conexión integrado (mensajes y eventos). Una vez que se crea cualquier ruta, los datos dejan de fluir al punto de conexión integrado, a menos que se cree una ruta a ese punto de conexión. Aunque no se cree ninguna ruta, se debe habilitar una ruta de reserva para enrutar los mensajes al punto de conexión integrado. La reserva está habilitada de forma predeterminada si crea el centro mediante el portal o la CLI.

Azure Storage como punto de conexión de enrutamiento

Hay dos servicios de almacenamiento a los que IoT Hub puede enrutar mensajes: a cuentas de Azure Blob Storage y Azure Data Lake Storage Gen2 (ADLS Gen2). Ambas usan blobs para su almacenamiento.

IoT Hub admite la escritura de datos en Azure Storage con los formatos Apache Avro y JSON. El valor predeterminado es AVRO. Para usar la codificación JSON, establezca la propiedad contentType en application/json y la propiedad contentEncoding en UTF-8 en las propiedades del sistema del mensaje. Ambos valores no distinguen mayúsculas de minúsculas. Si no está establecida la codificación del contenido, IoT Hub escribe los mensajes en formato codificado base 64.

El formato de codificación solo se puede establecer cuando se configura el punto de conexión de Blob Storage; no se puede editar en un punto de conexión existente.

IoT Hub agrupa los mensajes por lotes y escribe los datos en un almacenamiento cuando el lote llega a cierto tamaño o después de transcurrir cierta cantidad de tiempo. IoT Hub utiliza de forma predeterminada la siguiente convención de nomenclatura de archivos: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}.

Puede usar cualquier convención de nomenclatura de archivos, pero debe usar todos los tokens de la lista. Si ni hay datos que escribir, IoT Hub escribe en un blob vacío.

Se recomienda enumerar los blobs o los archivos e iterar sobre ellos para garantizar que se leen todos sin pasar por alto ninguna partición. El intervalo de partición podría cambiar durante una conmutación por error iniciada por Microsoft o una conmutación por error manual de IoT Hub. Puede usar la API List Blobs para la lista de blobs o la API List ADLS Gen2 para la lista de archivos. Por ejemplo:

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);
        }
    }
}

Para crear una cuenta de almacenamiento compatible con Azure Data Lake Gen2, cree una cuenta de almacenamiento V2 y seleccione Enable hierarchical namespace (Habilitar espacio de nombres jerárquico) en la sección Data Lake Storage Gen2 de la pestaña Avanzado, como se muestra en la imagen siguiente:

Captura de pantalla que muestra cómo seleccionar el almacenamiento de Azure Date Lake Gen2.

Colas y temas de Service Bus como punto de conexión de enrutamiento

Las colas y los temas de Service Bus usados como puntos de conexión de IoT Hub no deben tener habilitadas las opciones Sesiones o Detección de duplicados. Si cualquiera de estas opciones está habilitada, el punto de conexión aparece como Inaccesible en Azure Portal.

Event Hubs como punto de conexión de enrutamiento

Aparte del punto de conexión compatible con Event Hubs integrado, también puede enrutar los datos a puntos de conexión personalizados de tipo Event Hubs.

Azure Cosmos DB como punto de conexión de enrutamiento

Puede enviar datos directamente a Azure Cosmos DB desde IoT Hub. IoT Hub admite la escritura en Cosmos DB en JSON (si se especifica en el tipo de contenido del mensaje) o como binario codificado en base 64.

Para admitir escenarios de gran escala, puede habilitar claves de partición sintéticas para el punto de conexión de Cosmos DB. Como Cosmos DB es un almacén de datos de hiperescala, todos los datos o documentos que se escriban en él deben contener un campo que represente una partición lógica. Cada partición lógica tiene un tamaño máximo de 20 GB. Puede especificar el nombre de la propiedad de clave de partición en Partition key name (Nombre de clave de partición). El nombre de la propiedad de clave de partición se define en el nivel de contenedor y no se puede cambiar una vez que se ha establecido.

Puede configurar el valor de la clave de partición sintética si especifica una plantilla en Partition key template (Plantilla de clave de partición) basada en el volumen de datos estimado. Por ejemplo, en escenarios de fabricación, es posible que la partición lógica se acerque a su límite máximo de 20 GB en un mes. En ese caso, puede definir una clave de partición sintética como una combinación del identificador del dispositivo y el mes. El valor de la clave de partición generada se agrega automáticamente a la propiedad de clave de partición para cada nuevo registro de Cosmos DB, lo que garantiza que se crean particiones lógicas todos los meses para cada dispositivo.

Precaución

Si usa la identidad administrada asignada por el sistema para autenticarse en Cosmos DB, debe usar la CLI de Azure o Azure PowerShell para asignar la definición de rol integrado de Colaborador de datos de Cosmos DB a la identidad. Actualmente no se admite la asignación de roles para Cosmos DB en Azure Portal. Para obtener más información sobre los distintos roles, consulte Configuración del acceso basado en roles en Azure Cosmos DB. Para aprender a asignar roles a través de la CLI, consulte Administración de recursos de rol de SQL de Azure Cosmos DB.

Mantenimiento del punto de conexión

Puede usar la API REST Get Endpoint Health para obtener el estado de mantenimiento de los puntos de conexión. Se recomienda usar las métricas de enrutamiento de IoT Hub relativas a la latencia de mensajes de enrutamiento para identificar y depurar errores cuando el estado del punto de conexión no responda o esté en mal estado, ya que se espera que la latencia sea mayor con el punto de conexión en uno de esos estados. Para obtener más información sobre el uso de métricas de IoT Hub, consulte Supervisión de IoT Hub.

Estado de mantenimiento Descripción
healthy El punto de conexión acepta los mensajes según lo previsto.
unhealthy El punto de conexión no acepta mensajes e IoT Hub está intentando volver a enviarlos.
unknown IoT Hub no intentó enviar mensajes a este punto de conexión.
degraded El punto de conexión está aceptando mensajes más lentamente de lo esperado o se está recuperando de un estado incorrecto.
dead IoT Hub ya no entrega mensajes a este punto de conexión. No se pudieron enviar los mensajes a este punto de conexión.

Pasos siguientes

Más información acerca de estos temas: