Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
La classificazione degli oggetti in gruppi statici consente di gestire diversi oggetti contemporaneamente. I gruppi di oggetti statici contengono un gruppo di oggetti gestiti utilizzando la console, l'interfaccia a riga di comando o l'API. I gruppi di oggetti dinamici, d'altra parte, contengono oggetti che corrispondono a una query specificata. I gruppi di oggetti statici possono anche contenere altri gruppi di oggetti statici. È possibile creare una gerarchia di gruppi. È possibile collegare una policy a un gruppo padre affinché venga ereditata dai gruppi figlio, oltre che da tutti gli oggetti nel gruppo e nei relativi gruppi figlio. In questo modo, si semplifica il controllo delle autorizzazioni per un numero elevato di oggetti.
Nota
Le policy dei gruppi di oggetti non consentono l'accesso alle operazioni del piano AWS IoT Greengrass dati. Per consentire a un oggetto l'accesso a un'operazione del piano AWS IoT Greengrass dati, aggiungi l'autorizzazione a una AWS IoT policy che alleghi al certificato dell'oggetto. Per ulteriori informazioni, consultare Autenticazione e autorizzazione del dispositivo nella Guida per gli sviluppatori di AWS IoT Greengrass .
Di seguito sono elencate le operazioni che è possibile eseguire con i gruppi di oggetti statici:
-
Creare, descrivere o eliminare un gruppo.
-
Aggiungere un oggetto a un gruppo o a più gruppi.
-
Rimuovere un oggetto da un gruppo.
-
Elencare i gruppi creati.
-
Elencare tutti i gruppi figlio di un gruppo (i relativi discendenti diretti e indiretti).
-
Elencare gli oggetti in un gruppo, inclusi tutti gli oggetti nei relativi gruppi figlio.
-
Elencare tutti i gruppi predecessore di un gruppo (i relativi oggetti padre diretti e indiretti).
-
Aggiungere, eliminare o aggiornare gli attributi di un gruppo. Gli attributi sono coppie nome–valore che è possibile usare per archiviare le informazioni su un gruppo.
-
Collegare o scollegare una policy a o da un gruppo.
-
Elencare le policy collegate a un gruppo.
-
Elencare le policy ereditate da un oggetto (in forza delle policy collegate al relativo gruppo o a uno dei gruppi padre).
-
Configurare le opzioni di logging per gli oggetti in un gruppo. Per informazioni, consulta Configurare la registrazione AWS IoT.
-
Creare processi che vengono inviati ed eseguiti su ogni oggetto in un gruppo e nei relativi gruppi figlio. Per informazioni, consulta AWS IoT Lavori.
Nota
Quando un oggetto è collegato a un gruppo di oggetti statico a cui è associata una AWS IoT Core policy, il nome dell'oggetto deve corrispondere all'ID client.
Di seguito sono elencate alcune limitazioni dei gruppi di oggetti statici:
-
Un gruppo può avere un solo elemento padre diretto.
-
Se un gruppo è figlio di un altro gruppo, specificalo al momento della creazione.
-
Non è possibile modificare il padre di un gruppo in un secondo momento, quindi assicurati di pianificare la gerarchia del gruppo e crea un gruppo padre prima di creare i gruppi figlio in esso contenuti.
-
Il numero di gruppi a cui un oggetto può appartenere è limitato.
-
Non è possibile aggiungere un oggetto a più di un gruppo nella stessa gerarchia. (In altre parole, non è possibile aggiungere un oggetto a due gruppi che condividono uno stesso padre.)
-
Non è possibile rinominare un gruppo.
-
I nomi dei gruppo di oggetti non possono contenere caratteri internazionali, ad esempio, û, é e ñ.
-
Non utilizzare informazioni di identificazione personale nel nome del gruppo di oggetti. Il nome del gruppo di oggetti può essere visualizzato nelle comunicazioni e nei report non crittografati.
Le operazioni di collegamento e scollegamento di policy ai e dai gruppi possono migliorare notevolmente la sicurezza delle operazioni di AWS IoT in diversi modi. Il metodo per dispositivo di collegamento di una policy a un certificato, che viene quindi collegato a un oggetto, richiede molto tempo e rende difficile aggiornare rapidamente le policy o modificarle in un parco istanze di dispositivi. Se si collega una policy al gruppo di oggetti, sono necessarie meno operazioni quando è il momento di ruotare i certificati di un oggetto. Le policy vengono inoltre applicate dinamicamente agli oggetti quando cambia l'appartenenza ai gruppi, quindi non è necessario ricreare un set di autorizzazioni complesso ogni volta che per un dispositivo cambia l'appartenenza a un gruppo.
Creazione di un gruppo di oggetti statico
Utilizza il comando CreateThingGroup per creare un gruppo di oggetti statico.
$ aws iot create-thing-group --thing-group-name LightBulbs
Il comando CreateThingGroup restituisce una risposta che contiene il nome, l'ID e l'ARN del gruppo di oggetti statico:
{
"thingGroupName": "LightBulbs",
"thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx",
"thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs"
}
Nota
Non è consigliabile utilizzare informazioni di identificazione personale nei nomi dei gruppi di oggetti.
Di seguito è illustrato un esempio in cui viene specificato un elemento padre del gruppo di oggetti statico al momento della creazione:
$ aws iot create-thing-group --thing-group-name RedLights --parent-group-name LightBulbs
Come in precedenza, il comando CreateThingGroup restituisce una risposta che contiene il nome del gruppo di oggetti statico e i relativi ID e ARN:
{
"thingGroupName": "RedLights",
"thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx",
"thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights",
}
Importante
Quando crei gerarchie di gruppi, tieni presenti i limiti seguenti:
-
Un gruppo di oggetti può avere un solo elemento padre diretto.
-
Il numero di gruppi figlio diretti che un gruppo di oggetti può avere è limitato.
-
La profondità massima di una gerarchia di gruppi è limitata.
-
Il numero di attributi che un gruppo di oggetti può avere è limitato. Gli attributi sono coppie nome–valore che è possibile usare per archiviare le informazioni su un gruppo. Anche le lunghezze di ciascun nome di attributo e di ogni valore sono limitate.
Descrizione di un gruppo di oggetti
Usa il comando DescribeThingGroup per ottenere informazioni su un gruppo di oggetti:
$ aws iot describe-thing-group --thing-group-name RedLights
Il comando DescribeThingGroup restituisce le informazioni relative al gruppo specificato:
{
"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"
},
}
Aggiunta di un oggetto a un gruppo di oggetti statico
È possibile usare il comando AddThingToThingGroup per aggiungere un oggetto a un gruppo di oggetti statico:
$ aws iot add-thing-to-thing-group --thing-name MyLightBulb --thing-group-name RedLights
Il comando AddThingToThingGroup non produce output.
Importante
È possibile aggiungere un oggetto a un massimo di 10 gruppi. Non è tuttavia possibile aggiungere un oggetto a più di un gruppo nella stessa gerarchia. (In altre parole, non è possibile aggiungere un oggetto a due gruppi che condividono uno stesso padre.)
Se un oggetto appartiene al massimo numero possibile di gruppi di oggetti e almeno uno di questi gruppi è un gruppo di oggetti dinamico, è possibile utilizzare il flag overrideDynamicGroups per far sì che i gruppi statici abbiano la priorità sui gruppi dinamici.
Rimozione di un oggetto da un gruppo di oggetti statico
Usa il comando RemoveThingFromThingGroup per rimuovere un oggetto da un gruppo:
$ aws iot remove-thing-from-thing-group --thing-name MyLightBulb --thing-group-name RedLights
Il comando RemoveThingFromThingGroup non produce output.
Elenco di oggetti in un gruppo di oggetti
Utilizza il comando ListThingsInThingGroup per elencare gli oggetti che appartengono a un gruppo:
$ aws iot list-things-in-thing-group --thing-group-name LightBulbs
Il comando ListThingsInThingGroup restituisce un elenco degli oggetti nel gruppo specificato:
{
"things":[
"TestThingA"
]
}
Il parametro --recursive
permette di elencare gli oggetti appartenenti a un gruppo e quelli nei relativi gruppi figlio:
$ aws iot list-things-in-thing-group --thing-group-name LightBulbs --recursive
{
"things":[
"TestThingA",
"MyLightBulb"
]
}
Nota
Questa operazione è consistente finale
Visualizzazione dell'elenco di gruppi di oggetti
Puoi usare il comando ListThingGroups per elencare i gruppi di oggetti del tuo account:
$ aws iot list-thing-groups
Il ListThingGroups comando restituisce un elenco dei gruppi di cose presenti in Account 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"
}
]
}
Usa i filtri facoltativi per elencare i gruppi con un determinato gruppo padre (--parent-group
) o i gruppi il cui nome inizia con un determinato prefisso (--name-prefix-filter
). Il parametro --recursive
permette di elencare anche tutti i gruppi figlio e non solo i gruppi figlio diretti di un gruppo di oggetti:
$ aws iot list-thing-groups --parent-group LightBulbs
In questo caso, il ListThingGroups comando restituisce un elenco dei gruppi figli diretti del gruppo di cose definito in Account AWS:
{
"childGroups":[
{
"groupName": "RedLights",
"groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights"
}
]
}
Utilizza il parametro --recursive
con il comando ListThingGroups per elencare tutti i gruppi figlio di un gruppo di oggetti, non solo i figli diretti:
$ aws iot list-thing-groups --parent-group LightBulbs --recursive
Il comando ListThingGroups restituisce un elenco di tutti i gruppi figlio del gruppo di oggetti:
{
"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"
}
]
}
Nota
Questa operazione è consistente finale
Elenco dei gruppi per un oggetto
Puoi utilizzare il comando ListThingGroupsForThing per elencare i gruppi diretti a cui appartiene l'oggetto:
$ aws iot list-thing-groups-for-thing --thing-name MyLightBulb
Il comando ListThingGroupsForThing restituisce un elenco dei gruppi di oggetti diretti a cui l'oggetto appartiene:
{
"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"
}
]
}
Aggiornamento di un gruppo di oggetti statico
Usa il comando UpdateThingGroup per aggiornare gli attributi di un gruppo di oggetti statico:
$ aws iot update-thing-group --thing-group-name "LightBulbs" --thing-group-properties "thingGroupDescription=\"this is a test group\", attributePayload=\"{\"attributes\"={\"Owner\"=\"150\",\"modelNames\"=\"456\"}}"
Il comando UpdateThingGroup restituisce una risposta che contiene il numero di versione del gruppo dopo l'aggiornamento:
{
"version": 4
}
Nota
Il numero di attributi che un oggetto può avere è limitato.
Eliminazione di un gruppo di oggetti
Per eliminare un gruppo di oggetti, usa il comando DeleteThingGroup:
$ aws iot delete-thing-group --thing-group-name "RedLights"
Il comando DeleteThingGroup non produce output.
Importante
Se tenti di eliminare un gruppo di oggetti con gruppi di oggetti figlio, viene generato un errore:
A client error (InvalidRequestException) occurred when calling the DeleteThingGroup operation: Cannot delete thing group : RedLights when there are still child groups attached to it.
Prima di eliminare il gruppo, eliminate prima tutti i gruppi di figli.
È possibile eliminare un gruppo con oggetti figlio, ma le autorizzazioni concesse agli oggetti in virtù dell'appartenenza al gruppo non sono più valide. Prima di eliminare un gruppo a cui è collegata una policy, controlla attentamente che la rimozione delle autorizzazioni non comprometta il corretto funzionamento degli oggetti nel gruppo. Inoltre, i comandi che mostrano a quali gruppi appartiene un oggetto (ad esempio,ListGroupsForThing) potrebbero continuare a mostrare il gruppo mentre i record nel cloud vengono aggiornati.
Collegamento di una policy a un gruppo di oggetti statico
Usa il comando AttachPolicy per collegare una policy a un gruppo di oggetti statico e, di conseguenza, a tutti gli oggetti presenti nel gruppo e agli oggetti nei relativi gruppi figlio:
$ aws iot attach-policy \ --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" \ --policy-name "myLightBulbPolicy"
Il comando AttachPolicy non produce output
Importante
È possibile collegare un numero massimo di due policy per un gruppo.
Nota
Non è consigliabile utilizzare informazioni di identificazione personale nei nomi delle policy.
Il parametro --target
può essere l'ARN di un gruppo di oggetti (come indicato sopra), l'ARN di un certificato o un'identità Amazon Cognito. Per ulteriori informazioni su policy, certificati e autenticazione, consulta Autenticazione.
Per ulteriori informazioni, consulta policy AWS IoT Core.
Scollegamento di una policy da un gruppo di oggetti statico
Usa il comando DetachPolicy per scollegare una policy da un gruppo di oggetti e, di conseguenza, da tutti gli oggetti presenti nel gruppo e gli oggetti nei relativi gruppi figlio:
$ aws iot detach-policy --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" --policy-name "myLightBulbPolicy"
Il comando DetachPolicy non produce output.
Elenco di policy collegate a un gruppo di oggetti statico
Usa il comando ListAttachedPolicies per elencare le policy collegate a un gruppo di oggetti statico:
$ aws iot list-attached-policies --target "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights"
Il parametro --target
può essere l'ARN di un gruppo di oggetti (come indicato sopra), l'ARN di un certificato o un'identità Amazon Cognito.
Aggiungi il parametro opzionale --recursive
per includere tutte le policy collegate ai gruppi padre del gruppo.
Il comando ListAttachedPolicies restituisce un elenco di policy:
{
"policies": [
"MyLightBulbPolicy"
...
]
}
Visualizzazione dell'elenco di gruppi per una policy
Usa il comando ListTargetsForPolicy per elencare i target, inclusi i gruppi, a cui una policy è collegata:
$ aws iot list-targets-for-policy --policy-name "MyLightBulbPolicy"
Aggiungi il parametro opzionale --page-size
per specificare il numero massimo di risultati da restituire per ogni query e il parametro number
--marker
nelle chiamate successive per recuperare il set di risultati successivo, se presente.string
Il comando ListTargetsForPolicy restituisce un elenco di target e il token da usare per recuperare ulteriori risultati:
{
"nextMarker": "string",
"targets": [ "string" ... ]
}
Recupero delle policy valide per un oggetto
Usa il comando GetEffectivePolicies per elencare le policy valide per un oggetto, incluse le policy collegate ai gruppi a cui l'oggetto appartiene, indipendentemente dal fatto che il gruppo sia un padre diretto o un predecessore indiretto:
$ aws iot get-effective-policies \ --thing-name "MyLightBulb" \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847"
Usa il parametro --principal
per specificare l'ARN del certificato collegato all'oggetto. Se usi l'autenticazione dell'identità di Amazon Cognito, utilizza il parametro --cognito-identity-pool-id
e, facoltativamente, aggiungi il parametro --principal
per specificare un'identità di Amazon Cognito. Se specifichi solo --cognito-identity-pool-id
, vengono restituite le policy associate al ruolo del pool di identità per gli utenti non autenticati. Se usi entrambi i parametri, vengono restituite le policy associate al ruolo del pool di identità per gli utenti autenticati.
Il parametro --thing-name
è opzionale e può essere usato al posto del parametro --principal
. Quando viene usato, vengono restituite le policy collegate a qualsiasi gruppo a cui l'oggetto appartiene e le policy collegate a qualsiasi gruppo padre di questi gruppi (fino al gruppo root della gerarchia).
Il comando GetEffectivePolicies restituisce un elenco di policy:
{
"effectivePolicies": [
{
"policyArn": "string",
"policyDocument": "string",
"policyName": "string"
}
...
]
}
Test dell'autorizzazione per le operazioni MQTT
Usa il comando TestAuthorization per verificare se un'operazione MQTT (Publish
, Subscribe
) è permessa per un oggetto:
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\"]}"
Usa il parametro --principal
per specificare l'ARN del certificato collegato all'oggetto. Se utilizzi l'autenticazione dell'identità di Amazon Cognito, specifica un'identità di Cognito come --principal
oppure utilizza il parametro --cognito-identity-pool-id
o entrambe le cose. Se specifichi solo --cognito-identity-pool-id
, vengono considerate le policy associate al ruolo del pool di identità per gli utenti non autenticati. Se usi entrambi i parametri, vengono considerate le policy associate al ruolo del pool di identità per gli utenti autenticati.
Specifica una o più operazioni MQTT da testare elencando i set di risorse e i tipi di operazioni dopo il parametro --auth-infos
. Il campo actionType
deve contenere "PUBLISH", "SUBSCRIBE", "RECEIVE" o "CONNECT". Il resources
campo deve contenere un elenco di risorse ARNs. Per ulteriori informazioni, consulta AWS IoT Core politiche.
È possibile testare gli effetti dell'aggiunta di policy specificandole con il parametro --policy-names-to-add
. In alternativa, è possibile testare gli effetti della rimozione di policy con il parametro --policy-names-to-skip
.
Puoi usare il parametro opzionale --client-id
per affinare ulteriormente i risultati.
Il comando TestAuthorization restituisce i dettagli delle operazioni permesse o non permesse per ogni set di query --auth-infos
specificato:
{
"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" ]
}
]
}