Grupos de objetos dinámicos - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Grupos de objetos dinámicos

Los grupos de cosas dinámicos se crean a partir de consultas de búsqueda específicas en el registro. Los parámetros de las consultas de búsqueda, como la conectividad de los dispositivos, la creación de sombras de dispositivos y los datos sobre AWS IoT Device Defender infracciones, lo respaldan. Los grupos de cosas dinámicos requieren que la indexación de flotas esté habilitada para indexar, buscar y agregar los datos de sus dispositivos. Puede obtener una vista previa de los elementos de un grupo de cosas dinámico mediante una consulta de búsqueda de indexación de flotas antes de crearlo. Para obtener más información, consulte Indexación de flotas y Sintaxis de la consulta.

nota

Las operaciones de grupos de cosas dinámicos se miden en operaciones de registro. Para más información, consulte los detalles de medición adicionales de AWS IoT Core.

Los grupos de objetos dinámicos se diferencian de los grupos de objetos estáticos como sigue:

  • La pertenencia de un objeto no se define de forma explícita. Para crear un grupo de cosas dinámico, defina una cadena de consulta de búsqueda para determinar la pertenencia al grupo.

  • Los grupos de objetos dinámicos no pueden formar parte de una jerarquía.

  • Los grupos de objetos dinámicos no pueden tener políticas aplicadas.

  • Puede utilizar un conjunto diferente de comandos para crear, actualizar y eliminar grupos de objetos dinámicos. Para todas las demás operaciones, se utilizan los mismos comandos para ambos tipos de grupos de cosas.

  • El número de grupos dinámicos por grupo Cuenta de AWS es limitado.

  • No utilices información de identificación personal en el nombre de tu grupo de cosas. El nombre del grupo de cosas puede aparecer en comunicaciones e informes no cifrados.

Para obtener más información acerca de los grupos de objetos estáticos, consulte Grupos de objetos estáticos.

Casos de uso de grupos de cosas dinámicos

Puede utilizar grupos de cosas dinámicos para los siguientes casos de uso:

Especifique un grupo de cosas dinámico como objetivo para un trabajo

La creación de un trabajo continuo con un grupo de cosas dinámico como objetivo permite segmentar automáticamente los dispositivos cuando cumplen los criterios deseados. Los criterios pueden ser el estado de conectividad o cualquier criterio almacenado en el registro o en la sombra, como la versión o el modelo del software. Si algo no aparece en el grupo de cosas dinámico, no recibirá el documento de trabajo del trabajo.

Por ejemplo, si tu flota de dispositivos requiere una actualización del firmware para minimizar el riesgo de interrupciones durante el proceso de actualización y solo deseas actualizar el firmware en dispositivos con una duración de batería superior al 80%. Puedes crear un grupo dinámico denominado 80 PercentBatteryLife que solo incluya los dispositivos con una duración de batería superior al 80% y utilizarlo como objetivo para tu trabajo. Solo los dispositivos que cumplan los criterios de duración de la batería recibirán la actualización del firmware. A medida que los dispositivos alcancen el criterio de duración de la batería del 80%, se añadirán automáticamente al grupo dinámico y recibirán la actualización del firmware.

También es posible que tengas varios modelos de dispositivos con un firmware o un sistema operativo diferentes, por lo que es necesario actualizar el software en distintas versiones. Este es el caso de uso más común de los grupos dinámicos con tareas continuas, donde puede crear un grupo dinámico para cada combinación de modelo de dispositivo, firmware y sistema operativo. A continuación, puede configurar trabajos continuos en cada uno de estos grupos dinámicos para enviar las actualizaciones de software a medida que los dispositivos pasen a ser miembros automáticamente de estos grupos en función de los criterios definidos.

Para obtener más información sobre cómo especificar grupos de cosas como objetivos de trabajo, consulte CreateJob.

Utilice los cambios dinámicos en la pertenencia a los grupos para realizar las acciones deseadas

Cada vez que se añade o elimina un dispositivo de un grupo de cosas dinámico, se envía una notificación a un tema de MQTT como parte de las actualizaciones de los eventos del registro. Puede configurar AWS IoT Core reglas para interactuar con los AWS servicios en función de las actualizaciones dinámicas de pertenencia a los grupos y tomar las medidas que desee. Algunos ejemplos de acciones incluyen escribir en Amazon DynamoDB, invocar una función de Lambda o enviar una notificación a Amazon SNS.

Añada dispositivos a un grupo de elementos dinámico para detectar automáticamente las infracciones

AWS IoT Device Defender Los clientes de Detect pueden definir un perfil de seguridad en un grupo de cosas dinámico. El perfil de seguridad definido en el grupo detecta automáticamente las infracciones de los dispositivos del grupo de cosas dinámico.

Establezca niveles de registro en grupos de cosas dinámicos para observar los dispositivos con un registro detallado

Puede especificar un nivel de registro en un grupo de cosas dinámico. Esto resulta útil si solo desea personalizar el nivel de registro y los detalles de los dispositivos que cumplen determinados criterios. Por ejemplo, si sospecha que los dispositivos con una determinada versión de firmware están causando errores en un tema publicado en una regla específica, puede configurar un registro detallado para depurar estos problemas. En este caso, puede crear un grupo dinámico para todos los dispositivos que tengan esta versión de firmware, que suponemos que se almacena como un atributo de registro o en la sombra del dispositivo. A continuación, puede establecer un nivel de depuración, con el objetivo de registro definido como este grupo de cosas dinámico. Para obtener más información sobre el registro detallado, consulte Supervisar el uso de registros. AWS IoT CloudWatch Para obtener más información sobre cómo especificar un nivel de registro para un grupo de cosas específico, consulte Configurar el inicio de sesión específico de un recurso. AWS IoT

Crear un grupo de objetos dinámico

Utilice el comando CreateDynamicThingGroup para crear un grupo de objetos dinámico. Para crear un grupo de cosas dinámico para el PercentBatteryLife escenario 80, utilice el comando create-dynamic-thing-group CLI:

$ aws iot create-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --query-string "attributes.batterylife80"
nota

No utilice información de identificación personal en los nombres de sus grupos de cosas dinámicos.

El CreateDynamicThingGroup comando devuelve una respuesta. La respuesta contiene el nombre del índice, la cadena de consulta, la versión de la consulta, el nombre del grupo de cosas, el ID del grupo de cosas y el nombre de recurso de Amazon (ARN) del grupo de cosas:

{ "indexName": "AWS_Things", "queryVersion": "2017-09-30", "thingGroupName": "80PercentBatteryLife", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/80PercentBatteryLife", "queryString": "attributes.batterylife80\n", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx" }

La creación de grupos de cosas dinámicos no se produce al mismo tiempo. Reponer un grupo de objetos dinámico lleva tiempo. Al crear un grupo de cosas dinámico, el estado del grupo se establece enBUILDING. Cuando termina el proceso de reposición, el estado cambia a ACTIVE. Para comprobar el estado del grupo de cosas dinámico, utilice el comando DescribeThingAgrupar.

Describir un grupo de objetos dinámico

Utilice el comando DescribeThingGroup para obtener información acerca de un grupo de objetos dinámico:

$ aws iot describe-thing-group --thing-group-name "80PercentBatteryLife"

El comando DescribeThingGroup devuelve información acerca del grupo especificado:

{ "status": "ACTIVE", "indexName": "AWS_Things", "thingGroupName": "80PercentBatteryLife", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/80PercentBatteryLife", "queryString": "attributes.batterylife80\n", "version": 1, "thingGroupMetadata": { "creationDate": 1548716921.289 }, "thingGroupProperties": {}, "queryVersion": "2017-09-30", "thingGroupId": "84dd9b5b-2b98-4c65-84e4-be0e1ecf4fd8" }

Si se ejecuta DescribeThingGroup en un grupo de cosas dinámico, se obtienen atributos que son específicos de los grupos de cosas dinámicos. Algunos ejemplos de atributos de retorno son QueryString y status.

El estado de un grupo de objetos dinámico puede tomar los siguientes valores:

ACTIVE

El grupo de objetos dinámico está listo para usarse.

BUILDING

Se está creando el grupo de objetos dinámico y se está procesando la pertenencia de los objetos.

REBUILDING

Se está actualizando la pertenencia al grupo de objetos dinámico tras ajustar la consulta de búsqueda del grupo.

nota

Tras crear un grupo de cosas dinámico, utilícelo independientemente de su estado. Solo los grupos de objetos dinámicos con estado ACTIVE incluyen todos los objetos que coinciden con la consulta de búsqueda para ese grupo de objetos dinámico. Los grupos de objetos dinámicos con estado BUILDING y REBUILDING podrían no incluir todos los objetos coincidentes con la consulta de búsqueda.

Actualizar un grupo de objetos dinámico

Utilice el comando UpdateDynamicThingGroup para actualizar los atributos de un grupo de objetos dinámico, incluida la consulta de búsqueda del grupo. El siguiente comando actualiza dos atributos. Una es la descripción del grupo de cosas y la otra es la cadena de consulta que cambia los criterios de pertenencia a una duración de la batería superior a 85:

$ aws iot update-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --thing-group-properties "thingGroupDescription=\"This thing group contains devices with a battery life greater than 85 percent.\"" --query-string "attributes.batterylife85"

El comando UpdateDynamicThingGroup devuelve una respuesta que contiene el número de versión del grupo después de la actualización:

{ "version": 2 }

La actualización de un grupo de cosas dinámico no se produce de una vez. Reponer un grupo de objetos dinámico lleva tiempo. Al actualizar un grupo de cosas dinámico, el estado del grupo cambia a REBUILDING cuando el grupo actualiza sus miembros. Cuando termina el proceso de reposición, el estado cambia a ACTIVE. Para comprobar el estado del grupo de cosas dinámico, utilice el comando DescribeThingAgrupar.

Eliminar un grupo de objetos dinámico

Para eliminar un grupo de objetos dinámico, use el comando DeleteDynamicThingGroup:

$ aws iot delete-dynamic-thing-group --thing-group-name "80PercentBatteryLife"

El comando DeleteDynamicThingGroup no genera ninguna salida.

Los comandos que muestran a qué grupos pertenece un objeto (por ejemplo, ListGroupsForThing) podrían seguir mostrando el grupo mientras se actualizan los registros en la nube.

Limitaciones de los grupos de cosas dinámicos y estáticos

Los grupos de cosas dinámicos y los grupos de cosas estáticos comparten las siguientes limitaciones:

  • El número de atributos que puede tener un grupo de cosas es limitado.

  • El número de grupos a los que puede pertenecer un objeto es limitado.

  • No se puede cambiar el nombre de los grupos de cosas.

  • Los nombres de grupos de objetos no pueden contener caracteres internacionales, como û, é o ñ.

Limitaciones de los grupos de cosas dinámicos

Los grupos de cosas dinámicos tienen las siguientes limitaciones:

Indexación de flotas

Con el servicio de indexación de flotas activado, puede realizar consultas de búsqueda en su flota de dispositivos. Puede crear y gestionar grupos de elementos dinámicos una vez finalizado el proceso de indexación de la flota. El tiempo de finalización del proceso de recarga se ve directamente afectado por el tamaño de la flota de dispositivos registrada en el. Nube de AWS Tras habilitar el servicio de indexación de flotas para grupos de objetos dinámicos, no podrá deshabilitarlo hasta que se eliminen todos los grupos de objetos dinámicos.

nota

Si tiene los permisos para consultar el índice de la flota, podrá obtener acceso a los datos de los objetos en toda la flota.

El número de grupos de objetos dinámicos es limitado

El número de grupos de cosas dinámicos es limitado.

Comandos correctos pueden registrar errores

Al crear o actualizar un grupo de cosas dinámico, es posible que algunas cosas puedan incluirse en un grupo de cosas dinámico, pero no se agreguen a él. Este escenario provocará que el comando de creación o actualización se ejecute correctamente mientras se registra un error y se genera una AddThingToDynamicThingGroupsFailed métrica. Una sola métrica puede representar varias entradas de registro.

Se crea una entrada de CloudWatch registro de errores en el registro cuando ocurre lo siguiente:

  • No se puede añadir un elemento que cumpla los requisitos a un grupo de objetos dinámico.

  • Se elimina una cosa de un grupo de cosas dinámico para añadirla a otro grupo.

Cuando una cosa pueda añadirse a un grupo de cosas dinámico, tenga en cuenta lo siguiente:

  • ¿Este objeto ya está en el número máximo de grupos posible? (Consulte los límites)

    • NO: el objeto se agrega al grupo de objetos dinámico.

    • SÍ: ¿el objeto es miembro de algún grupo de objetos dinámico?

      • NO: el objeto no se puede agregar al grupo de objetos dinámicos, se registra un error y se genera una métrica AddThingToDynamicThingGroupsFailed.

      • SÍ: ¿el grupo de objetos al que se va a unir es anterior a cualquier otro grupo de objetos dinámico del que el objeto ya sea miembro?

Cuando una cosa de un grupo de cosas dinámico deja de cumplir la consulta de búsqueda, se elimina del grupo de cosas dinámico. Del mismo modo, cuando una cosa se actualiza para cumplir con la consulta de búsqueda de un grupo de cosas dinámico, la cosa se añade al grupo tal y como se ha descrito anteriormente. Estas incorporaciones y eliminaciones son normales y no generan entradas en el registro de errores.

Con overrideDynamicGroups habilitado, los grupos estáticos disfrutan de prioridad sobre los grupos dinámicos.

El número de grupos a los que puede pertenecer un objeto es limitado. Cuando se utilizan los comandos AddThingToThingGrupo o Cosa UpdateThing GroupsFor para actualizar la pertenencia a una cosa, al añadir el --overrideDynamicGroups parámetro se da prioridad a los grupos de cosas estáticos sobre los grupos de cosas dinámicos.

Cuando añada una cosa a un grupo de cosas estático, tenga en cuenta lo siguiente:

  • ¿El objeto ya es miembro del número máximo de grupos?

    • NO: el objeto se agrega al grupo de objetos estático.

    • SÍ: ¿el objeto está en algún grupo dinámico?

      • NO: el objeto no se puede agregar al grupo de objetos. El comando genera una excepción.

      • SÍ: ¿se ha habilitado --overrideDynamicGroups?

        • NO: el objeto no se puede agregar al grupo de objetos. El comando genera una excepción.

        • SÍ: el objeto se elimina del último grupo de objetos dinámico que se creó, se registra un error y se genera una métrica AddThingToDynamicThingGroupsFailed para el grupo de objetos dinámico del que se eliminó el objeto. A continuación, el objeto se agrega al grupo de objetos estáticos.

Los grupos de objetos dinámicos más antiguos tienen prioridad sobre los más nuevos.

El número de grupos a los que puede pertenecer un objeto es limitado. Cuando una operación de creación o actualización crea un grupo adicional apto para una cosa y la cosa ha alcanzado su límite de grupo, se puede eliminar de otro grupo de cosas dinámico para permitir esta adición. Si necesita más información sobre esto, consulte Comandos correctos pueden registrar errores y Con overrideDynamicGroups habilitado, los grupos estáticos disfrutan de prioridad sobre los grupos dinámicos. para ver ejemplos.

Cuando se elimina una cosa de un grupo de cosas dinámico, se registra un error y se produce un evento.

No se pueden aplicar políticas a grupos de cosas dinámicos

Si intenta aplicar una política a un grupo de objetos dinámico, se generará una excepción.

La pertenencia a grupos de objetos dinámicos es coherente a largo plazo.

Para el registro solo se evalúa el estado final de un objeto. Los estados intermedios se pueden omitir si se actualizan rápidamente los estados. Evite asociar una regla o un trabajo a un grupo de cosas dinámico cuya composición dependa de un estado intermedio.