Uso de directivas de asignación para aprovisionar dispositivos en centros de IoT
Azure IoT Hub Device Provisioning Service (DPS) admite varias directivas de asignación integradas que determinan cómo asigna dispositivos en uno o varios centros de IoT. DPS también incluye compatibilidad con directivas de asignación personalizadas, que permiten crear y usar sus propias directivas de asignación cuando el escenario de IoT requiere funcionalidad no proporcionada por las directivas integradas.
Este artículo le ayuda a comprender cómo usar y administrar directivas de asignación de DPS.
Descripción de las directivas de asignación
Las directivas de asignación determinan cómo asigna DPS dispositivos a un centro de IoT. Cada instancia de DPS tiene una directiva de asignación predeterminada, pero esta directiva se puede invalidar mediante una directiva de asignación establecida en una inscripción. Solo los centros de IoT vinculados a la instancia de DPS pueden participar en la asignación. Si un centro de IoT vinculado participará en la asignación depende de la configuración de la inscripción a la que aprovisiona un dispositivo.
DPS admite cuatro directivas de asignación:
Distribución ponderada uniformemente: los dispositivos se aprovisionan en un centro de IoT mediante un hash ponderado. De forma predeterminada, los centros de IoT vinculados tienen la misma configuración de peso de asignación, por lo que también es probable que tengan dispositivos aprovisionados en ellos. El peso de asignación de un centro de IoT se puede ajustar para aumentar o disminuir su probabilidad de ser asignado. La distribución ponderada uniformemente es la directiva de asignación predeterminada para una instancia de DPS. Si va a aprovisionar dispositivos en un único centro de IoT, se recomienda utilizar esta directiva.
Latencia más baja: los dispositivos se aprovisionan en el centro de IoT con la latencia más baja en el dispositivo. Si varios centros de IoT proporcionan la latencia más baja, DPS aplica hash a los dispositivos en esos centros en función del peso de asignación que tienen configurado.
Configuración estática: los dispositivos se aprovisionan en un único centro de IoT, que se debe especificar en la inscripción.
Personalizado (use la función de Azure): una directiva de asignación personalizada le ofrece más control sobre cómo se asignan los dispositivos a un centro de IoT. Esto se logra mediante el uso de un webhook personalizado en Azure Functions para asignar dispositivos a un centro de IoT. DPS llama al webhook y proporciona toda la información pertinente sobre el dispositivo y la inscripción. El webhook devuelve el centro de IoT y el dispositivo gemelo inicial (opcional) que se utilizan para aprovisionar el dispositivo. Las cargas personalizadas también se pueden pasar desde y hacia el dispositivo. Para más información, consulte Descripción de las directivas de asignación personalizadas. No se puede establecer como directiva predeterminada de la instancia de DPS.
Nota:
En la lista anterior se muestran los nombres de las directivas de asignación tal y como aparecen en Azure Portal. Al establecer la directiva de asignación mediante la API de REST de DPS, la CLI de Azure y los SDK del servicio DPS, se les conoce como se indica a continuación: hash, geolatencia, estática y personalizada.
Hay dos configuraciones en un centro de IoT vinculado que controlan cómo participa en la asignación:
Peso de asignación: establece el peso que tendrá el centro de IoT al participar en directivas de asignación que implican varios centros de IoT. Puede ser un valor entre uno y 1 000. El valor predeterminado es uno (o null).
Con la directiva de asignación de Distribución ponderada uniformemente, los centros de IoT con valores de peso de asignación más altos tienen una mayor probabilidad de seleccionarse en comparación con los que tienen valores de peso más bajos.
Con la directiva de asignación de Latencia más baja, el valor de peso de asignación afectará a la probabilidad de que se seleccione un centro de IoT cuando más de un centro de IoT cumpla el requisito de latencia más bajo.
Con una directiva de asignación Personalizada, si y cómo se usa el valor de peso de asignación dependerán de la lógica del webhook.
Aplicar directiva de asignación: especifica si el centro de IoT participa en la directiva de asignación. El valor predeterminado es Sí (verdadero). Si se establece en No (falso), los dispositivos no se asignarán al centro de IoT. El centro de IoT todavía se puede seleccionar en una inscripción, pero no participará en la asignación. Puede usar esta configuración para quitar temporal o permanentemente un centro de IoT de la participación en la asignación; por ejemplo, si se aproxima al número permitido de dispositivos.
Para más información sobre la vinculación y la gestión de los centros de IoT en su instancia de DPS, consulte Vincular y administrar centros de IoT.
Cuando un dispositivo aprovisiona a través de DPS, el servicio lo asigna a un centro de IoT según las instrucciones siguientes:
Si la inscripción especifica una directiva de asignación, use esa directiva; de lo contrario, use la directiva de asignación predeterminada para la instancia de DPS.
Si la inscripción especifica uno o varios centros de IoT, aplique la directiva de asignación en esos centros de IoT; de lo contrario, aplique la directiva de asignación en todos los centros de IoT vinculados a la instancia de DPS. Tenga en cuenta que si la directiva de asignación es Configuración estática, la inscripción debe especificar un centro de IoT.
Importante
Al cambiar una directiva de asignación o los centros de IoT a los que se aplica, los cambios solo afectan a los registros de dispositivos posteriores. Los dispositivos ya aprovisionados en un centro de IoT no se verán afectados. Si quiere que los cambios se apliquen retroactivamente a estos dispositivos, deberá volver a aprovisionarlos. Para más información, consulte Reaprovisionamiento de dispositivos.
Esta es la directiva de asignación predeterminada para una instancia de DPS
La directiva de asignación predeterminada para la instancia de DPS se usa cuando no se especifica una directiva de asignación en una inscripción. Solo se admite la Distribución ponderada uniformemente, la Latencia más baja y la Configuración estática para la directiva de asignación predeterminada. No se admite la asignación Personalizada. Cuando se crea una instancia de DPS, su directiva predeterminada se establece automáticamente en Distribución ponderada uniformemente.
Nota:
Si establece la Configuración estática como directiva de asignación predeterminada para una instancia de DPS, se debe especificar un centro de IoT vinculado en las inscripciones que se basan en la directiva predeterminada.
Uso de Azure Portal para establecer la directiva de asignación predeterminada
Para establecer la directiva de asignación predeterminada para la instancia de DPS en Azure Portal:
En el menú izquierdo de la instancia de DPS, seleccione Administrar directiva de asignación.
Seleccione el botón de la directiva de asignación que quiere establecer: Latencia más baja, Distribución uniformemente ponderadao Configuración estática. (No se admite la asignación Personalizada para la directiva de asignación predeterminada).
Seleccione Guardar.
Uso de la CLI de Azure para establecer la directiva de asignación predeterminada
Use el comando az iot dps update de la CLI de Azure para establecer la directiva de asignación predeterminada para la instancia de DPS. Se usa --set properties.allocationPolicy
para especificar la directiva. Por ejemplo, el siguiente comando establece la directiva de asignación en Distribución uniformemente ponderada (valor predeterminado):
az iot dps update --name MyExampleDps --set properties.allocationPolicy=hashed
DPS también admite la configuración de la directiva de asignación predeterminada mediante la API de REST de Creación o actualización de recursos DPS, las plantillas de Resource Manager y los SDK de administración de DPS.
Establecimiento de la directiva de asignación y centros de IoT para inscripciones
Las inscripciones individuales y los grupos de inscripción pueden especificar una directiva de asignación y los centros de IoT vinculados a los que se debe aplicar. Si la inscripción no especifica ninguna directiva de asignación, se usa la directiva de asignación predeterminada para la instancia de DPS.
En cualquiera de los casos, se aplican las siguientes condiciones:
Para las directivas de asignación de Distribución ponderada uniformemente, la Latencia más baja y Personalizada, la inscripción puede especificar qué centros de IoT vinculados se deben usar. Si no se selecciona ningún centro de IoT en la inscripción, se usarán todos los centros de IoT vinculados de la instancia de DPS.
Para la Configuración estática, la inscripción debe especificar un único centro de IoT de la lista de centros de IoT vinculados.
En el caso de las inscripciones individuales y los grupos de inscripción, puede especificar una directiva de asignación y los centros de IoT vinculados a los que se aplicará al crear o actualizar una inscripción.
Uso del Azure Portal para administrar la directiva de asignación de inscripción y los centros de IoT
Para establecer la directiva de asignación y seleccionar centros de IoT en una inscripción en el Azure Portal:
En el menú izquierdo de la instancia de DPS, seleccione Administrar inscripciones.
En la página Administrar inscripciones:
Para crear una nueva inscripción, seleccione la pestaña Grupos de inscripción o Inscripciones individuales y luego seleccione Agregar grupo de inscripción o Agregar inscripción individual.
Para actualizar una inscripción existente, selecciónela en la lista en la pestaña Grupos de inscripción o Inscripciones individuales.
En la página Agregar inscripción (en crear) o en la página Detalles de inscripción (al actualizar), seleccione la pestaña Centros de IoT. En esta pestaña, puede seleccionar la directiva de asignación que quiere aplicar a la inscripción y seleccionar los centros de IoT que se deben usar:
Seleccione los centros de IoT a los que se pueden asignar dispositivos en la lista desplegable. Si selecciona la directiva de asignación de configuración Estática, estará limitado a seleccionar un único centro de IoT vinculado. Para todas las demás directivas de asignación, todos los centros de IoT vinculados se seleccionarán de forma predeterminada, pero puede modificar esta selección mediante la lista desplegable. Para que la inscripción use automáticamente centros de IoT vinculados a medida que se agreguen a la instancia de DPS (o se eliminen de la misma), anule la selección de todos los centros de IoT.
Opcionalmente, puede seleccionar el botón Vincular un nuevo centro de IoT para vincular un nuevo centro de IoT a la instancia de DPS y hacer que esté disponible en la lista de centros de IoT que se pueden seleccionar. Para más información sobre cómo vincular un centro de IoT, consulte Agregar un centro de IoT vinculado.
Seleccione la directiva de asignación que desea aplicar a la inscripción. La directiva de asignación predeterminada para la instancia de DPS está seleccionada de forma predeterminada. Para la asignación personalizada, también deberá especificar un webhook de directiva de asignación personalizada en Azure Functions. Para más información, consulte el tutorial Uso de directivas de asignación personalizadas.
Establezca cualquier otra propiedad necesaria para la inscripción y guarde la configuración.
Uso de la CLI de Azure para administrar la directiva de asignación de inscripción y los centros de IoT
Use los comandos az iot dps enrollment create, az iot dps enrollment update, az iot dps enrollment-group create y az iot dps enrollment-group update de la CLI de Azure para crear o actualizar inscripciones individuales o grupos de inscripción.
Por ejemplo, el siguiente comando crea un grupo de inscripción de claves simétricas que usa de forma predeterminada la directiva de asignación predeterminada establecida en la instancia de DPS y todos los centros de IoT vinculados a la instancia de DPS:
az iot dps enrollment-group create --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup
El siguiente comando actualiza el mismo grupo de inscripción para usar la directiva de asignación de Latencia más baja con centros de IoT denominados MyExampleHub y MyExampleHub-2:
az iot dps enrollment-group update --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup --allocation-policy geolatency --iot-hubs "MyExampleHub.azure-devices.net MyExampleHub-2.azure-devices.net"
DPS también admite la configuración de la directiva de asignación y los centros de IoT seleccionados en la inscripción mediante la Creación o actualización de la inscripción individual y las API de REST del Creación o actualización de grupo de inscripción y los SDK del servicio DPS.
Comportamiento de asignación
Tenga en cuenta el siguiente comportamiento al usar directivas de asignación con centro de IoT:
Con la CLI de Azure, la API de REST y los SDK del servicio DPS, puede crear inscripciones sin directiva de asignación. En este caso, DPS usa la directiva predeterminada para la instancia de DPS cuando un dispositivo aprovisiona a través de la inscripción. Cambiar la configuración de directiva predeterminada en la instancia de DPS cambiará cómo se aprovisionan los dispositivos a través de la inscripción.
Con Azure Portal, la configuración de directiva de asignación de la inscripción se rellena previamente con la directiva de asignación predeterminada. Puede mantener esta configuración o cambiarla a otra directiva, pero, al guardar la inscripción, la directiva de asignación se establece en la inscripción. Los cambios posteriores en la directiva de asignación predeterminada del servicio no cambiarán cómo se aprovisionan los dispositivos a través de la inscripción.
Para las directivas de Distribución ponderada uniformemente, Latencia más baja y Personalizada, puede configurar la inscripción para usar todos los centros de IoT vinculados a la instancia de DPS:
Con la CLI de Azure y los SDK del servicio DPS, cree la inscripción sin especificar ningún centro de IoT.
Con Azure Portal, la inscripción se rellena previamente con todos los centros de IoT vinculados a la instancia de DPS seleccionada; anule la selección de todos los centros de IoT antes de guardar la inscripción.
Si no se selecciona ningún centro de IoT en la inscripción, cada vez que un nuevo centro de IoT se vincule a la instancia de DPS, participará en la asignación; y viceversa para un centro de IoT que se quite de la instancia de DPS.
Si se especifican centros de IoT en una inscripción, la configuración de centros de IoT en la inscripción debe actualizarse manualmente o mediante programación para que se agregue un centro de IoT recién vinculado o se quite de la asignación un centro de IoT eliminado.
El cambio de la directiva de asignación o los centros de IoT usados para una inscripción solo afecta a los registros posteriores a través de esa inscripción. Si quiere que los cambios afecten a los registros anteriores, deberá volver a aprovisionar todos los dispositivos registrados anteriormente.
Limitaciones
Existen algunas limitaciones al trabajar con directivas de asignación y puntos de conexión privados. Para más información, consulte Limitaciones de Private Link.
Pasos siguientes
Para más información sobre cómo vincular y administrar centros de IoT vinculados, consulte Administración de centros de IoT vinculados.
Para más información sobre las directivas de asignación personalizadas, consulte Descripción de directivas de asignación personalizadas.
Para ver un ejemplo completo mediante la directiva de asignación de latencia más baja, consulte el tutorial Aprovisionamiento de geolatencia.
Para obtener un ejemplo completo de una directiva de asignación personalizada, consulte Uso de directivas de asignación personalizadas.