Groupes d'objets dynamiques - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Groupes d'objets dynamiques

Les groupes d'objets dynamiques sont créés à partir de requêtes de recherche spécifiques dans le registre. Les paramètres de requête de recherche tels que la connectivité des appareils, la création d'ombres sur les appareils et les données relatives aux AWS IoT Device Defender violations le confirment. Les groupes d'objets dynamiques nécessitent l'activation de l'indexation du parc pour indexer, rechercher et agréger les données de vos appareils. Vous pouvez prévisualiser les éléments d'un groupe d'objets dynamique à l'aide d'une requête de recherche d'indexation de flotte avant de le créer. Pour plus d’informations, consultez Indexation de la flotte et Syntaxe de requête.

Note

Les opérations de groupes d'objets dynamiques sont mesurées dans le cadre des opérations de registre. Pour plus d'informations, consultez AWS IoT Core additional metering details.

Voici les raisons qui différencient les groupes d'objets dynamiques des groupes d'objets statiques :

  • L'appartenance des objets n'est pas explicitement définie. Pour créer un groupe d'objets dynamique, définissez une chaîne de requête de recherche afin de déterminer l'appartenance au groupe.

  • Les groupes d'objets dynamiques ne peuvent pas faire partie d'une hiérarchie.

  • Les groupes d’objets dynamiques ne peuvent pas avoir de politiques qui leur sont appliquées.

  • Vous utilisez un ensemble de commandes différent pour créer, mettre à jour et supprimer des groupes d'objets dynamiques. Pour toutes les autres opérations, vous utilisez les mêmes commandes pour les deux types de groupes d'objets.

  • Le nombre de groupes dynamiques par groupe Compte AWS est limité.

  • N'utilisez pas d'informations personnellement identifiables dans le nom de votre groupe d'objets. Le nom de groupe d'objet peut apparaître dans les communications et les rapports non chiffrés.

Pour plus d'informations sur les groupes d'objets statiques, consultez Groupes d’objets statiques.

Cas d'utilisation de groupes d'objets dynamiques

Vous pouvez utiliser des groupes d'objets dynamiques dans les cas d'utilisation suivants :

Spécifier un groupe d'objets dynamique comme cible pour une tâche

La création d'une tâche continue avec un groupe d'objets dynamique comme cible vous permet de cibler automatiquement les appareils lorsqu'ils répondent aux critères souhaités. Les critères peuvent être l'état de connectivité ou tout autre critère stocké dans le registre ou dans le shadow, tel que la version ou le modèle du logiciel. Si un objet n'apparaît pas dans le groupe d'objets dynamique, il ne recevra pas le document correspondant au travail.

Par exemple, si votre parc d'appareils nécessite une mise à jour du microprogramme afin de minimiser le risque d'interruption pendant le processus de mise à jour, et que vous souhaitez uniquement mettre à jour le microprogramme sur les appareils dont l'autonomie de la batterie est supérieure à 80 %. Vous pouvez créer un groupe d'objets dynamique appelé 80 PercentBatteryLife qui inclut uniquement les appareils dont l'autonomie de la batterie est supérieure à 80 % et l'utiliser comme cible pour votre travail. Seuls les appareils répondant à vos critères d'autonomie recevront la mise à jour du microprogramme. Lorsque les appareils atteignent le seuil d'autonomie de la batterie de 80 %, ils sont automatiquement ajoutés au groupe d'objets dynamiques et reçoivent la mise à jour du microprogramme.

Vous pouvez également avoir plusieurs modèles d'appareils dotés de microprogrammes ou de systèmes d'exploitation différents, ce qui nécessite différentes versions des nouvelles mises à jour logicielles. Il s'agit du cas d'utilisation le plus courant pour les groupes dynamiques avec des tâches continues, dans lesquels vous pouvez créer un groupe dynamique pour chaque combinaison de modèle d'appareil, de microprogramme et de système d'exploitation. Vous pouvez ensuite configurer des tâches continues pour chacun de ces groupes dynamiques afin de diffuser les mises à jour logicielles au fur et à mesure que les appareils deviennent membres de ces groupes en fonction des critères définis.

Pour plus d'informations sur la définition de groupes d'objets en tant qu'objectifs de travail, consultez CreateJob.

Utilisez les modifications dynamiques de l'appartenance à un groupe pour effectuer les actions souhaitées

Chaque fois qu'un appareil est ajouté ou supprimé d'un groupe d'objets dynamiques, une notification est envoyée à un sujet MQTT dans le cadre des mises à jour des événements du registre. Vous pouvez configurer AWS IoT Core des règles pour interagir avec les AWS services en fonction des mises à jour dynamiques de l'appartenance aux groupes et prendre les mesures souhaitées. Les actions incluent par exemple l'écriture Amazon DynamoDB, l'appel d'une fonction Lambda ou l'envoi d'une notification à Amazon SNS.

Ajoutez des appareils à un groupe d'objets dynamique pour une détection automatique des violations

AWS IoT Device Defender Les clients de Detect peuvent définir un profil de sécurité sur un groupe d'objets dynamique. Les appareils du groupe d'objets dynamique sont automatiquement détectés en cas de violation par le profil de sécurité défini dans le groupe.

Définissez des niveaux de journalisation sur des groupes d'objets dynamiques afin d'observer les appareils grâce à une journalisation précise

Vous pouvez spécifier un niveau de journalisation pour un groupe d'objets dynamique. Cela est utile si vous souhaitez uniquement personnaliser le niveau de journalisation et les détails pour les appareils répondant à certains critères. Par exemple, si vous pensez que des appareils dotés d'une certaine version de microprogramme sont à l'origine d'erreurs dans le sujet publié d'une règle spécifique, vous pouvez définir une journalisation détaillée pour résoudre ces problèmes. Dans ce cas, vous pouvez créer un groupe dynamique pour tous les appareils dotés de cette version du microprogramme, qui, nous le supposons, est stockée sous forme d'attribut de registre ou dans un espace virtuel. Vous pouvez ensuite définir un niveau de débogage, la cible de journalisation étant définie comme ce groupe d'objets dynamique. Pour plus d'informations sur la journalisation précise, consultez la section Surveillance à AWS IoT l'aide CloudWatch des journaux. Pour plus d'informations sur la manière de spécifier un niveau de journalisation pour un groupe d'objets spécifique, voir Configurer la connexion spécifique aux ressources. AWS IoT

Créer un groupe d'objets dynamique

Utilisez la commande CreateDynamicThingGroup pour créer un groupe d'objets dynamique. Pour créer un groupe d'objets dynamique pour le PercentBatteryLife scénario 80, utilisez la commande create-dynamic-thing-group CLI :

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

N'utilisez pas d'informations personnellement identifiables dans les noms de vos groupes d'objets dynamiques.

La CreateDynamicThingGroup commande renvoie une réponse. La réponse contient le nom de l'index, la chaîne de requête, la version de la requête, le nom du groupe d'objets, l'ID du groupe d'objets et le nom de ressource Amazon (ARN) de votre groupe d'objets :

{ "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 création de groupes d'objets dynamiques ne se fait pas en une seule fois. Le remplissage complet d'un groupe d'objets dynamique prend un certain temps. Lorsque vous créez un groupe d'objets dynamique, le statut du groupe est défini surBUILDING. Une fois le remplissage terminé, l'état passe à ACTIVE. Pour vérifier l'état de votre groupe d'objets dynamique, utilisez la commande DescribeThingGroup.

Décrire un groupe d'objets dynamique

Utilisez la commande DescribeThingGroup pour obtenir des informations sur un groupe d'objets dynamique :

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

La commande DescribeThingGroup renvoie des informations sur le groupe spécifié :

{ "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" }

L'exécution DescribeThingGroup sur un groupe d'objets dynamique renvoie des attributs spécifiques aux groupes d'objets dynamiques. Les exemples d'attributs de retour sont le QueryString et le status.

Le statut d'un groupe d'objets dynamique peut avoir les valeurs suivantes :

ACTIVE

Le groupe d'objets dynamique est prêt à l'emploi.

BUILDING

Le groupe d'objets dynamique est en cours de création et l'appartenance des objets est en cours de traitement.

REBUILDING

L'appartenance au groupe d'objets dynamique est en cours de mise à jour, en fonction de l'ajustement de la requête de recherche du groupe.

Note

Après avoir créé un groupe d'objets dynamique, utilisez-le quel que soit son statut. Seuls les groupes d'objets dynamiques ayant le statut ACTIVE incluent tous les objets qui correspondent à la requête de recherche de ce groupe d'objets dynamique. Les groupes d'objets dynamiques ayant les statuts BUILDING et REBUILDING peuvent ne pas inclure tous les objets correspondant à la requête de recherche.

Mettre à jour un groupe d'objets dynamique

Utilisez la commande UpdateDynamicThingGroup pour mettre à jour les attributs d'un groupe d'objets dynamique, y compris la requête de recherche du groupe. La commande suivante met à jour deux attributs. L'une est la description du groupe d'objets, et l'autre est la chaîne de requête qui modifie les critères d'adhésion pour indiquer que l'autonomie de la batterie est supérieure à 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"

La commande UpdateDynamicThingGroup renvoie une réponse qui contient le numéro de version du groupe après la mise à jour :

{ "version": 2 }

La mise à jour d'un groupe d'objets dynamique ne se fait pas en une seule fois. Le remplissage complet d'un groupe d'objets dynamique prend un certain temps. Lorsque vous mettez à jour un groupe d'objets dynamique, le statut du groupe devient REBUILDING alors que le groupe met à jour ses membres. Une fois le remplissage terminé, l'état passe à ACTIVE. Pour vérifier l'état de votre groupe d'objets dynamique, utilisez la commande DescribeThingGroup.

Supprimer un groupe d'objets dynamique

Utilisez la commande DeleteDynamicThingGroup pour supprimer un groupe d'objets dynamique :

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

La DeleteDynamicThingGroup commande ne génère pas de sortie.

Les commandes qui affichent à quels groupes un objet appartient (par exemple, ListGroupsForThing) peuvent continuer à afficher le groupe pendant que les enregistrements sont mis à jour sur le cloud.

Limitations des groupes d'objets dynamiques et statiques

Les groupes d'objets dynamiques et les groupes d'objets statiques présentent les limites suivantes :

  • Le nombre d'attributs qu'un groupe d'objets peut avoir est limité.

  • Le nombre de groupes auxquels un objet peut appartenir est limité.

  • Vous ne pouvez pas renommer les groupes d'objets.

  • Les noms des groupes d'objets ne peuvent contenir aucun caractère international, comme û, é et ñ.

Limites relatives aux groupes d'objets dynamiques

Les groupes d'objets dynamiques présentent les limites suivantes :

Indexation de la flotte

Lorsque le service d'indexation de flotte est activé, vous pouvez effectuer des requêtes de recherche sur votre parc d'appareils. Vous pouvez créer et gérer des groupes d'objets dynamiques une fois le remblayage d'indexation de la flotte terminé. Le délai d'exécution du processus de remblayage dépend directement de la taille de votre parc d'appareils enregistré auprès du. AWS Cloud Une fois que vous avez activé le service d'indexation de flotte pour les groupes d'objets dynamiques, vous ne pouvez pas le désactiver tant que vous n'avez pas supprimé tous vos groupes d'objets dynamiques.

Note

Si vous disposez d'autorisations pour interroger l'index de la flotte, vous pouvez accéder aux données d'objets dans la totalité de la flotte.

Le nombre de groupes d’objets dynamiques est limité

Le nombre de groupes d'objets dynamiques est limité.

Les commandes réussies peuvent enregistrer les erreurs

Lorsque vous créez ou mettez à jour un groupe d'objets dynamique, il est possible que certains éléments soient éligibles à l'inclusion dans un groupe d'objets dynamique, mais qu'ils n'y soient pas ajoutés. Ce scénario entraînera le succès d'une commande de création ou de mise à jour lors de la journalisation d'une erreur et de la génération d'une AddThingToDynamicThingGroupsFailed métrique. Une seule métrique peut représenter plusieurs entrées de journal.

Une entrée du journal des erreurs est créée dans le CloudWatch journal lorsque les événements suivants se produisent :

  • Un objet éligible ne peut pas être ajouté à un groupe d'objets dynamique.

  • Un objet est supprimé d'un groupe d'objets dynamique pour l'ajouter à un autre groupe.

Lorsqu'un objet peut être ajouté à un groupe d'objets dynamique, tenez compte des points suivants :

  • Est-ce que l’objet est déjà contenu dans autant de groupes que possible ? (Consultez la section limites)

    • NON : L’objet est ajouté au groupe d’objets dynamiques.

    • OUI : L’objet est-il un membre d'un groupe d’objets dynamiques ?

      • NON : L’objet ne peut pas être ajouté au groupe d’objets dynamiques, une erreur est enregistrée et une métrique AddThingToDynamicThingGroupsFailed est générée.

      • OUI : Le groupe d’objets dynamiques à rejoindre est-il plus ancien que les groupes d’objets dynamiques dont l’objet est déjà membre ?

        • NON : L’objet ne peut pas être ajouté au groupe d’objets dynamiques, une erreur est enregistrée et une métrique AddThingToDynamicThingGroupsFailed est générée.

        • OUI : supprimez l'objet du groupe d'objets dynamiques le plus récent, enregistrez une erreur et ajoutez-le au groupe d'objets dynamique. Cela génère une erreur et une métrique AddThingToDynamicThingGroupsFailed pour le groupe d’objets dynamiques duquel l’objet a été supprimé.

Lorsqu'un objet d'un groupe d'objets dynamique ne répond plus à la requête de recherche, il est retiré du groupe d'objets dynamique. De même, lorsqu'un objet est mis à jour pour répondre à la requête de recherche d'un groupe d'objets dynamique, l'objet est ensuite ajouté au groupe comme décrit précédemment. Ces ajouts et suppressions sont normaux et ne produisent pas d'entrées de journal des erreurs.

Si l'attribut overrideDynamicGroups est activé, les groupes statiques sont prioritaires par rapport aux groupes dynamiques

Le nombre de groupes auxquels un objet peut appartenir est limité. Lorsque vous utilisez les commandes AddThingToThingGroupe ou UpdateThing GroupsFor Objet pour mettre à jour l'appartenance à un objet, l'ajout du --overrideDynamicGroups paramètre donne la priorité aux groupes d'objets statiques par rapport aux groupes d'objets dynamiques.

Lorsque vous ajoutez un objet à un groupe d'objets statique, tenez compte des points suivants :

  • Est-ce que l’objet appartient déjà au nombre maximal de groupes ?

    • NON : La chose est ajoutée au groupe d’objets statiques.

    • OUI : Est-ce que l’objet est contenu dans des groupes dynamiques ?

      • NON : L’objet ne peut pas être ajouté au groupe d’objets. La commande déclenche une exception.

      • OUI : Le paramètre --overrideDynamicGroups était-il activé ?

        • NON : L’objet ne peut pas être ajouté au groupe d’objets. La commande déclenche une exception.

        • OUI : L’objet est supprimé du groupe d’objets dynamiques le plus récent, une erreur est enregistrée et une métrique AddThingToDynamicThingGroupsFailed est générée pour le groupe d’objets dynamiques dont l’objet a été supprimé. Ensuite, l’objet est ajouté au groupe d’objets statiques.

Les groupes d'objets dynamiques plus anciens sont prioritaires par rapport aux groupes d'objets plus récents.

Le nombre de groupes auxquels un objet peut appartenir est limité. Lorsqu'une opération de création ou de mise à jour crée une éligibilité de groupe supplémentaire pour un objet et que l'objet a atteint sa limite de groupe, il est possible de le supprimer d'un autre groupe d'objets dynamique pour activer cet ajout. Pour plus d'informations sur la façon de procéder, consultez Les commandes réussies peuvent enregistrer les erreurs et Si l'attribut overrideDynamicGroups est activé, les groupes statiques sont prioritaires par rapport aux groupes dynamiques pour obtenir des exemples.

Lorsqu'un objet est supprimé d'un groupe d'objets dynamique, une erreur est enregistrée et un événement est déclenché.

Vous ne pouvez pas appliquer de politique à des groupes d’objets dynamiques

Le fait de tenter d’appliquer une stratégie à un groupe d’objets dynamiques génère une exception.

L'appartenance à un groupe d'objets dynamique est cohérente à terme

Seul le dernier état d'un objet est évalué pour le registre. Les états intermédiaires peuvent être ignorés s'ils sont mis à jour rapidement. Évitez d'associer une règle ou une tâche à un groupe d'objets dynamique dont l'appartenance dépend d'un état intermédiaire.