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 statiques
Les groupes d'objets permettent de gérer plusieurs objets simultanément en les classant dans des groupes. Les groupes d'objets statiques contiennent un groupe d'objets gérés à l'aide de la consoleCLI, ou duAPI. Les groupes d’objets dynamiques, en revanche, contiennent des objets qui correspondent à une requête spécifiée. Les groupes d’objets statiques peuvent également contenir d'autres groupes d’objets statiques — vous pouvez créer une hiérarchie de groupes. Vous pouvez attacher à un groupe parent une stratégie dont héritent tous ses groupes enfants et tous les objets du groupe, ainsi que leurs groupes enfants. Cela facilite le contrôle des autorisations pour les grands nombres d'objets.
Note
Les politiques relatives aux groupes d'objets n'autorisent pas l'accès aux opérations du plan de AWS IoT Greengrass données. Pour autoriser un objet à accéder à une opération de plan de AWS IoT Greengrass données, ajoutez l'autorisation à une AWS IoT politique que vous associez au certificat de l'objet. Pour de plus amples informations, veuillez consulter Authentification et autorisation de l'appareil dans le AWS IoT Greengrass guide du développeur.
Voici ce que vous pouvez faire avec les groupes d'objets statiques :
-
Créer, décrire ou supprimer un groupe.
-
Ajouter un objet à un ou plusieurs groupes.
-
Supprimer un objet d'un groupe.
-
Répertorier les groupes que vous avez créés.
-
Répertorier tous les groupes enfants d'un groupe (ses descendants directs et indirects).
-
Répertorier les objets d'un groupe, y compris tous les objets de ses groupes enfants.
-
Répertorier tous les groupes ascendants d'un groupe (ses parents directs et indirects).
-
Ajouter, supprimer ou mettre à jour les attributs d'un groupe. Les attributs sont des paires nom-valeur que vous pouvez utiliser afin de stocker des informations relatives à un groupe.
-
Attacher une stratégie à un groupe ou la détacher de celui-ci.
-
Répertorier les stratégies attachées à un groupe.
-
Répertorier les stratégies dont un objet hérite (en fonction des stratégies attachées à son groupe ou à l'un de ses groupes parents).
-
Configurer les options de journalisation des objets d'un groupe. Consultez Configuration de la AWS IoT journalisation.
-
Créer des tâches qui sont envoyées vers et exécutées sur chaque objet d'un groupe et de ses groupes enfants. Consultez AWS IoT Emplois.
Note
Lorsqu'un objet est attaché à un groupe d'objets statique auquel une AWS IoT Core politique est attachée, le nom de l'objet doit correspondre à l'ID du client.
Voici quelques restrictions relatives aux groupes d'objets statiques :
-
Un groupe peut avoir un parent direct au maximum.
-
Si un groupe est un enfant d'un autre groupe, indiquez-le au moment de sa création.
-
Vous ne pouvez pas modifier le parent d'un groupe ultérieurement. Veillez donc à planifier votre hiérarchie de groupe et à créer un groupe parent avant de créer les groupes enfants qu'il contient.
-
Le nombre de groupes auxquels un objet peut appartenir est limité.
-
Vous ne pouvez pas ajouter un objet à plusieurs groupes de la même hiérarchie. (En d'autres termes, vous ne pouvez pas ajouter un objet à deux groupes qui partagent un même parent).
-
Vous ne pouvez pas renommer un groupe.
-
Les noms des groupes d'objets ne peuvent contenir aucun caractère international, comme û, é et ñ.
-
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.
Le fait d'attacher des stratégies aux groupes ou de les détacher de ceux-ci vous permet d'améliorer la sécurité des opérations AWS IoT de nombreuses façons importantes. La méthode par appareil qui consiste à attacher une stratégie à un certificat, qui est lui-même attaché ensuite à un objet, prend du temps et complique la mise à jour ou la modification rapide des stratégies pour tout un parc d'appareils. Le fait d'attacher une stratégie au groupe de l'objet permet d'éviter certaines étapes lors de la rotation des certificats pour un objet. De plus, les stratégies sont appliquées dynamiquement aux objets lorsqu'elles changent d'appartenance à un groupe, ce qui signifie que vous n'avez pas besoin de recréer un ensemble complexe d'autorisations chaque fois qu'un appareil change d'appartenance dans un groupe.
Créer un groupe d’objets statiques
Utilisez la commande CreateThingGroup pour créer un groupe d'objets statiques.
$ aws iot create-thing-group --thing-group-name LightBulbs
La CreateThingGroup commande renvoie une réponse contenant le nom, l'ID du groupe d'objets statique et ARN :
{ "thingGroupName": "LightBulbs", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }
Note
Nous vous déconseillons d'utiliser des informations personnelles identifiables dans le nom de vos groupes d'objets.
Voici un exemple qui spécifie un parent du groupe d'objets statiques lors de sa création :
$ aws iot create-thing-group --thing-group-name RedLights --parent-group-name LightBulbs
Comme précédemment, la CreateThingGroup commande renvoie une réponse contenant le nom, l'ID du groupe d'objets statique et ARN :
{ "thingGroupName": "RedLights", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", }
Important
Gardez à l'esprit les limites suivantes lorsque vous créez des hiérarchies de groupes d’objets :
-
Un groupe d’objets ne peut avoir qu'un seul parent direct.
-
Le nombre de groupes d’enfants directs qu'un groupe d’objets peut avoir est limité.
-
Le nombre maximal de niveaux d'une hiérarchie de groupes d'objets est limité.
-
Le nombre d'attributs qu'un groupe d’objets peut avoir est limité. Les attributs sont des paires nom-valeur que vous pouvez utiliser afin de stocker des informations relatives à un groupe. La longueur du nom de chaque attribut et de chaque valeur est également limitée.
Décrire un groupe d'objets
Pour obtenir des informations sur un groupe d'objets, vous pouvez utiliser la commande DescribeThingGroup :
$ aws iot describe-thing-group --thing-group-name RedLights
La commande DescribeThingGroup renvoie des informations sur le groupe spécifié :
{ "thingGroupName": "RedLights", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", "thingGroupId": "12345678abcdefgh12345678ijklmnop12345678", "version": 1, "thingGroupMetadata": { "creationDate": 1478299948.882 "parentGroupName": "Lights", "rootToParentThingGroups": [ { "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ShinyObjects", "groupName": "ShinyObjects" }, { "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs", "groupName": "LightBulbs" } ] }, "thingGroupProperties": { "attributePayload": { "attributes": { "brightness": "3400_lumens" }, }, "thingGroupDescription": "string" }, }
Ajouter un objet à un groupe d’objets statiques
Vous pouvez utiliser la commande AddThingToThingGroup pour ajouter un objet à un groupe d’objets statiques :
$ aws iot add-thing-to-thing-group --thing-name MyLightBulb --thing-group-name RedLights
La commande AddThingToThingGroup ne génère pas de sortie.
Important
Vous pouvez ajouter un objet à un maximum de 10 groupes. Mais vous ne pouvez pas ajouter un objet à plusieurs groupes de la même hiérarchie. (En d'autres termes, vous ne pouvez pas ajouter un objet à deux groupes qui partagent un même parent.)
Si un objet appartient à autant de groupes d'objets que possible et qu'un ou plusieurs de ces groupes est un groupe d'objets dynamiques, vous pouvez utiliser l'indicateur overrideDynamicGroups pour que les groupes statiques soient prioritaires par rapport aux groupes dynamiques.
Supprimer un objet d'un groupe d’objet statiques
Vous pouvez utiliser la commande RemoveThingFromThingGroup pour supprimer un objet d'un groupe :
$ aws iot remove-thing-from-thing-group --thing-name MyLightBulb --thing-group-name RedLights
La commande RemoveThingFromThingGroup ne génère pas de sortie.
Répertorier les objets d'un groupe d'objets
Vous pouvez utiliser la commande ListThingsInThingGroup pour répertorier les objets appartenant à un groupe :
$ aws iot list-things-in-thing-group --thing-group-name LightBulbs
La commande ListThingsInThingGroup renvoie une liste des objets d'un groupe donné :
{ "things":[ "TestThingA" ] }
Le paramètre --recursive
vous permet de répertorier les objets appartenant à un groupe et ceux figurant dans ses groupes enfants :
$ aws iot list-things-in-thing-group --thing-group-name LightBulbs --recursive
{ "things":[ "TestThingA", "MyLightBulb" ] }
Note
Cette opération est cohérente à terme
Répertorier les groupes d'objets
Vous pouvez utiliser la commande ListThingGroups pour répertorier les groupes d’objets de votre compte :
$ aws iot list-thing-groups
La ListThingGroups commande renvoie une liste des groupes d'objets de votre Compte AWS :
{ "thingGroups": [ { "groupName": "LightBulbs", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }, { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "RedLEDLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLEDLights" }, { "groupName": "RedIncandescentLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedIncandescentLights" } { "groupName": "ReplaceableObjects", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ReplaceableObjects" } ] }
Utilisez les filtres facultatifs pour répertorier les groupes ayant un groupe donné comme parent (--parent-group
) ou ceux dont le nom commence par un préfixe spécifique (--name-prefix-filter
). Le paramètre --recursive
vous permet de répertorier tous les groupes enfants, et pas seulement les groupes enfants directs d'un groupe d'objets :
$ aws iot list-thing-groups --parent-group LightBulbs
Dans ce cas, la ListThingGroups commande renvoie une liste des groupes enfants directs du groupe d'objets défini dans votre Compte AWS :
{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" } ] }
Utilisez le paramètre --recursive
avec la commande ListThingGroups pour répertorier tous les groupes enfants d'un groupe d'objets, et pas seulement les enfants directs :
$ aws iot list-thing-groups --parent-group LightBulbs --recursive
La commande ListThingGroups renvoie une liste de tous les groupes enfants du groupe d'objets :
{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "RedLEDLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLEDLights" }, { "groupName": "RedIncandescentLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedIncandescentLights" } ] }
Note
Cette opération est cohérente à terme
Répertorier les groupes d'un objet
Vous pouvez utiliser la commande ListThingGroupsForThing pour répertorier les objets appartenant à un groupe :
$ aws iot list-thing-groups-for-thing --thing-name MyLightBulb
La ListThingGroupsForThing commande renvoie une liste des groupes d'objets auxquels appartient un objet :
{ "thingGroups":[ { "groupName": "LightBulbs", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }, { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "ReplaceableObjects", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ReplaceableObjects" } ] }
Mettre à jour un groupe d’objets statiques
Vous pouvez utiliser la commande UpdateThingGroup afin de mettre à jour les attributs d'un groupe d'objets statiques :
$ aws iot update-thing-group --thing-group-name "LightBulbs" --thing-group-properties "thingGroupDescription=\"this is a test group\", attributePayload=\"{\"attributes\"={\"Owner\"=\"150\",\"modelNames\"=\"456\"}}"
La commande UpdateThingGroup renvoie une réponse qui contient le numéro de version du groupe après la mise à jour :
{ "version": 4 }
Note
Le nombre d'attributs qu'un objet peut avoir est limité.
Supprimer un groupe d'objets
Pour supprimer un groupe d'objets, utilisez la commande DeleteThingGroup :
$ aws iot delete-thing-group --thing-group-name "RedLights"
La commande DeleteThingGroup ne génère pas de sortie.
Important
Si vous essayez de supprimer un groupe d'objets qui comporte des groupes d'objets enfants, vous recevez une erreur :
A client error (InvalidRequestException) occurred when calling the DeleteThingGroup operation: Cannot delete thing group : RedLights when there are still child groups attached to it.
Avant de supprimer le groupe, supprimez d'abord tous les groupes d'enfants.
Vous pouvez supprimer un groupe qui a des objets enfants, mais les autorisations accordées aux objets par appartenance au groupe ne s'appliqueront plus. Avant de supprimer un groupe auquel une stratégie est attachée, vérifiez que la suppression de ces autorisations n'empêchera pas les objets du groupe de fonctionner correctement. En outre, les commandes qui indiquent à quels groupes appartient un objet (par exempleListGroupsForThing) peuvent continuer à afficher le groupe pendant la mise à jour des enregistrements dans le cloud.
Attacher une stratégie à un groupe d’objets statiques
Vous pouvez utiliser la commande AttachPolicy pour attacher une stratégie à un groupe d'objets statiques et, par extension, à tous les objets de ce groupe et de ses groupes enfants :
$ aws iot attach-policy \ --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" \ --policy-name "myLightBulbPolicy"
La commande AttachPolicy ne génère pas de sortie
Important
Vous pouvez attacher au maximum deux stratégies à un groupe.
Note
Nous vous déconseillons d'utiliser des informations personnelles identifiables dans le nom de votre politique.
Le --target
paramètre peut être un groupe d'objets ARN (comme ci-dessus), un certificat ARN ou une identité Amazon Cognito. Pour plus d'informations sur les stratégies, les certificats et l'authentification, consultez Authentification.
Pour plus d'informations, consultez AWS IoT Core Stratégies .
Détacher une stratégie d'un groupe d’objets statiques
Vous pouvez utiliser la commande DetachPolicy pour détacher une stratégie d'un groupe d'objets et, par extension, de tous les objets de ce groupe et de ses groupes enfants :
$ aws iot detach-policy --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" --policy-name "myLightBulbPolicy"
La commande DetachPolicy ne génère pas de sortie.
Répertorier les stratégies attachées à un groupe d'objets statiques
Vous pouvez utiliser la commande ListAttachedPolicies pour répertorier les stratégies attachées à un groupe d’objets statiques :
$ aws iot list-attached-policies --target "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights"
Le --target
paramètre peut être un groupe d'objets ARN (comme ci-dessus), un certificat ARN ou une identité Amazon Cognito.
Ajoutez le paramètre facultatif --recursive
afin d'inclure toutes les stratégies attachées aux groupes parents du groupe.
La commande ListAttachedPolicies renvoie une liste de stratégies :
{ "policies": [ "MyLightBulbPolicy" ... ] }
Répertorier les groupes d'une stratégie
Vous pouvez utiliser la commande ListTargetsForPolicy afin de répertorier les cibles, y compris tous les groupes éventuels, auxquelles une stratégie est attachée :
$ aws iot list-targets-for-policy --policy-name "MyLightBulbPolicy"
Ajoutez le paramètre facultatif --page-size
afin de spécifier le nombre maximal de résultats renvoyés par chaque demande, et le paramètre number
--marker
sur les appels suivants afin d'extraire l'ensemble de résultats suivant, le cas échéant.string
La commande ListTargetsForPolicy renvoie une liste des cibles et des jetons à utiliser pour extraire davantage de résultats :
{ "nextMarker": "string", "targets": [ "string" ... ] }
Obtenir des stratégies efficaces pour un objet
Vous pouvez utiliser la commande GetEffectivePolicies afin de répertorier les stratégies en vigueur pour un objet, y compris les stratégies attachées aux groupes auxquels l'objet appartient (que le groupe soit un parent direct ou un ancêtre indirect) :
$ aws iot get-effective-policies \ --thing-name "MyLightBulb" \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847"
Utilisez le --principal
paramètre pour spécifier ARN le certificat attaché à l'objet. Si vous avez opté pour l'authentification d'identité Amazon Cognito, utilisez le --cognito-identity-pool-id
paramètre et ajoutez si nécessaire --principal
Amazon Cognitole paramètre afin de spécifier une identité . Si vous spécifiez uniquement le --cognito-identity-pool-id
, les stratégies associées à ce rôle du pool d'identités pour les utilisateurs non authentifiés sont renvoyées. Si vous utilisez les deux, les stratégies associées à ce rôle du pool d'identités pour les utilisateurs authentifiés sont renvoyées.
Le paramètre --thing-name
est facultatif et peut être utilisé à la place du paramètre --principal
. Lorsqu'il est utilisé, les stratégies attachées aux groupes auxquels l'objet appartient et les stratégies attachées aux groupes parents de ces groupes (jusqu'au groupe racine dans la hiérarchie) sont renvoyées.
La commande GetEffectivePolicies renvoie une liste de stratégies :
{ "effectivePolicies": [ { "policyArn": "string", "policyDocument": "string", "policyName": "string" } ... ] }
Autorisation de test pour les MQTT actions
Vous pouvez utiliser la TestAuthorization commande pour vérifier si une MQTTaction (Publish
,Subscribe
) est autorisée pour un objet :
aws iot test-authorization \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847" \ --auth-infos "{\"actionType\": \"PUBLISH\", \"resources\": [ \"arn:aws:iot:us-east-1:123456789012:topic/my/topic\"]}"
Utilisez le --principal
paramètre pour spécifier ARN le certificat attaché à l'objet. Si vous utilisez l'authentification d'identité Amazon Cognito, spécifiez une identité Cognito comme --principal
ou utilisez le --cognito-identity-pool-id
paramètre , ou les deux. Si vous spécifiez uniquement le paramètre --cognito-identity-pool-id
, les stratégies associées à ce rôle du pool d'identités pour les utilisateurs non authentifiés sont appliquées. Si vous utilisez les deux, les stratégies associées à ce rôle du pool d'identités pour les utilisateurs authentifiés sont appliquées.
Spécifiez une ou plusieurs MQTT actions que vous souhaitez tester en répertoriant les ensembles de ressources et les types d'actions en fonction du --auth-infos
paramètre. Le actionType
champ doit contenir PUBLISH « », SUBSCRIBE « », RECEIVE « » ou « CONNECT ». Le resources
champ doit contenir une liste de ressourcesARNs. Pour plus d’informations, consultez AWS IoT Core politiques.
Vous pouvez tester les conséquences de l'ajout des stratégies en les spécifiant avec le paramètre --policy-names-to-add
. Ou vous pouvez tester les conséquences de la suppression des stratégies en les spécifiant avec le paramètre --policy-names-to-skip
.
Vous pouvez utiliser le paramètre facultatif --client-id
pour affiner vos résultats.
La commande TestAuthorization renvoie des détails sur les actions qui ont été autorisées ou refusées pour chaque ensemble de requêtes --auth-infos
que vous avez spécifié :
{ "authResults": [ { "allowed": { "policies": [ { "policyArn": "string", "policyName": "string" } ] }, "authDecision": "string", "authInfo": { "actionType": "string", "resources": [ "string" ] }, "denied": { "explicitDeny": { "policies": [ { "policyArn": "string", "policyName": "string" } ] }, "implicitDeny": { "policies": [ { "policyArn": "string", "policyName": "string" } ] } }, "missingContextValues": [ "string" ] } ] }