View a markdown version of this page

Gruppo di oggetti dinamici - AWS IoT Core

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à.

Gruppo di oggetti dinamici

I gruppi di oggetti dinamici vengono creati da specifiche query di ricerca nel registro. I parametri delle query di ricerca, come la connettività del dispositivo, la creazione di un'ombra del dispositivo e i dati AWS IoT Device Defender sulle violazioni, supportano questa funzionalità. I gruppi di oggetti dinamici richiedono l'indicizzazione del parco dispositivi abilitata per indicizzare, cercare e aggregare i dati dei dispositivi. Puoi visualizzare in anteprima gli elementi in un gruppo di oggetti dinamico utilizzando una query di ricerca per l'indicizzazione del parco oggetti prima di crearlo. Per ulteriori informazioni, consulta Indicizzazione del parco istanze e Sintassi delle query.

Nota

Le operazioni dei gruppi di oggetti dinamici vengono misurate nelle operazioni di registro. Per ulteriori informazioni, vedere AWS IoT Core ulteriori dettagli sulle misurazioni.

I gruppi di oggetti dinamici differiscono dai gruppi di oggetti statici per le seguenti caratteristiche:

  • L'appartenenza degli oggetti non è esplicitamente definita. Per creare un gruppo di oggetti dinamico, definisci una stringa di query di ricerca per determinare l'appartenenza al gruppo.

  • I gruppi di oggetti dinamici non possono far parte di una gerarchia.

  • I gruppi di oggetti dinamici non possono avere delle policy a loro applicate.

  • È possibile utilizzare un altro set di comandi per creare, aggiornare ed eliminare i gruppi di oggetti dinamici. Per tutte le altre operazioni, si utilizzano gli stessi comandi per entrambi i tipi di gruppi di oggetti.

  • Il numero di gruppi dinamici per gruppo Account AWS è limitato.

  • 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.

Per ulteriori informazioni sui gruppi di oggetti statici, consulta Gruppi di oggetti statici.

Casi d'uso di gruppi di oggetti dinamici

È possibile utilizzare gruppi di oggetti dinamici per i seguenti casi d'uso:

Specifica un gruppo di oggetti dinamici come destinazione per un job

La creazione di un job continuo con un gruppo di oggetti dinamico come destinazione consente di indirizzare automaticamente i dispositivi quando soddisfano i criteri desiderati. I criteri possono essere lo stato della connettività o qualsiasi criterio memorizzato nel registro o nello shadow, ad esempio la versione o il modello del software. Se un oggetto non appare nel gruppo di oggetti dinamici, non riceverà il documento del lavoro dal lavoro.

Ad esempio, se il parco dispositivi richiede un aggiornamento del firmware per ridurre al minimo il rischio di interruzioni durante il processo di aggiornamento e desideri aggiornare il firmware solo su dispositivi con una durata della batteria superiore all'80%. Puoi creare un gruppo di oggetti dinamico chiamato 80 PercentBatteryLife che include solo dispositivi con una durata della batteria superiore all'80% e utilizzarlo come obiettivo per il tuo lavoro. Solo i dispositivi che soddisfano i criteri di durata della batteria riceveranno l'aggiornamento del firmware. Quando i dispositivi raggiungono i criteri di durata della batteria dell'80%, vengono aggiunti automaticamente al gruppo di oggetti dinamici e riceveranno l'aggiornamento del firmware.

È inoltre possibile che siano presenti più modelli di dispositivo con firmware o sistema operativo diversi, che richiedono versioni diverse di nuovi aggiornamenti software. Questo è il caso d'uso più comune per i gruppi dinamici con processi continui, in cui è possibile creare un gruppo dinamico per ogni modello di dispositivo, firmware e combinazione di sistema operativo. È quindi possibile impostare processi continui per ciascuno di questi gruppi dinamici per inviare aggiornamenti software man mano che i dispositivi diventano automaticamente membri di questi gruppi in base ai criteri definiti.

Per ulteriori informazioni sulla specifica dei gruppi di elementi come destinazioni di processo, consulta CreateJob.

Utilizza le modifiche dinamiche all'appartenenza ai gruppi per eseguire le azioni desiderate

Ogni volta che un dispositivo viene aggiunto o rimosso da un gruppo di oggetti dinamici, viene inviata una notifica a un argomento MQTT come parte degli aggiornamenti degli eventi del registro. È possibile configurare AWS IoT Core le regole per interagire con AWS i servizi in base agli aggiornamenti dinamici delle appartenenze ai gruppi e intraprendere le azioni desiderate. Le azioni di esempio includono la scrittura Amazon DynamoDB, il richiamo di una funzione Lambda o l'invio di una notifica ad Amazon SNS.

Aggiungi dispositivi a un gruppo di oggetti dinamico per il rilevamento automatico delle violazioni

AWS IoT Device Defender I clienti di Detect possono definire un profilo di sicurezza su un gruppo di oggetti dinamico. I dispositivi del gruppo di oggetti dinamici vengono rilevati automaticamente in caso di violazioni dal profilo di sicurezza definito nel gruppo.

Imposta i livelli di registro su gruppi di oggetti dinamici per osservare i dispositivi con una registrazione granulare

È possibile specificare un livello di registro su un gruppo di oggetti dinamico. Ciò è utile se si desidera personalizzare il livello e i dettagli di registrazione solo per i dispositivi che soddisfano determinati criteri. Ad esempio, se sospetti che i dispositivi con una determinata versione del firmware stiano causando errori nell'argomento pubblicato di una regola specifica, potresti voler impostare una registrazione dettagliata per eseguire il debug di questi problemi. In questo caso, puoi creare un gruppo dinamico per tutti i dispositivi dotati di questa versione del firmware, che presumiamo sia archiviata come attributo di registro o in un'ombra del dispositivo. È quindi possibile impostare un livello di debug, con l'obiettivo di registrazione definito come questo gruppo di oggetti dinamici. Per ulteriori informazioni sulla registrazione granulare, vedere Monitor using Logs. AWS IoT CloudWatch Per ulteriori informazioni su come specificare un livello di registrazione per un gruppo di oggetti specifico, vedi Configurare l'accesso specifico per le risorse. AWS IoT

Creazione di un gruppo di oggetti dinamico

Utilizza il comando CreateDynamicThingGroup per creare un gruppo di oggetti dinamico. Per creare un gruppo di oggetti dinamico per PercentBatteryLife lo scenario 80, usa il comando CLI: create-dynamic-thing-group

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

Non utilizzate informazioni di identificazione personale nei nomi dei gruppi di oggetti dinamici.

Il CreateDynamicThingGroup comando restituisce una risposta. La risposta contiene il nome dell'indice, la stringa di query, la versione della query, il nome del gruppo di oggetti, l'ID del gruppo di oggetti e l'Amazon Resource Name (ARN) del gruppo di oggetti:

{ "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 creazione di gruppi di oggetti dinamici non avviene contemporaneamente. Il backfill del gruppo di oggetti dinamici richiede tempo per il completamento. Quando si crea un gruppo di oggetti dinamici, lo stato del gruppo è impostato suBUILDING. Quando il backfill è completo, lo stato diventa ACTIVE. Per verificare lo stato del gruppo di oggetti dinamici, utilizzate il DescribeThingGroup comando.

Descrizione di un gruppo di oggetti dinamico

Utilizza il comando DescribeThingGroup per ottenere informazioni su un gruppo di oggetti dinamico:

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

Il comando DescribeThingGroup restituisce le informazioni relative al gruppo specificato:

{ "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'esecuzione DescribeThingGroup su un gruppo di oggetti dinamico restituisce attributi specifici dei gruppi di oggetti dinamici. Esempi di attributi restituiti sono QueryString e status.

Lo stato di un gruppo di oggetti dinamici può utilizzare i seguenti valori:

ACTIVE

Il gruppo di oggetti dinamico è pronto per l'uso.

BUILDING

Il gruppo di oggetti dinamico viene creato e l'appartenenza agli oggetti è in fase di elaborazione.

REBUILDING

L'appartenenza del gruppo di oggetti dinamico viene aggiornata in seguito all'adeguamento della query di ricerca del gruppo.

Nota

Dopo aver creato un gruppo di oggetti dinamico, utilizzatelo indipendentemente dal relativo stato. Solo i gruppi di oggetti dinamici con uno stato ACTIVE includono tutti gli oggetti che corrispondono alle query di ricerca per quel gruppo di oggetti dinamico. I gruppi di oggetti dinamici con gli stati REBUILDING e BUILDING potrebbero non includere tutti gli oggetti che corrispondono alla query di ricerca.

Aggiornamento di un gruppo di oggetti dinamico

Utilizzare il comando UpdateDynamicThingGroup per aggiornare gli attributi di un gruppo di oggetti dinamico, tra cui la query di ricerca del gruppo. Il comando seguente aggiorna due attributi. Uno è la descrizione del gruppo di oggetti e l'altro è la stringa di query che modifica i criteri di appartenenza in base alla durata della batteria > 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"

Il comando UpdateDynamicThingGroup restituisce una risposta che contiene il numero di versione del gruppo dopo l'aggiornamento:

{ "version": 2 }

L'aggiornamento di un gruppo di oggetti dinamici non avviene contemporaneamente. Il backfill del gruppo di oggetti dinamici richiede tempo per il completamento. Quando si aggiorna un gruppo di oggetti dinamico, lo stato del gruppo cambia REBUILDING mentre il gruppo aggiorna la propria appartenenza. Quando il backfill è completo, lo stato diventa ACTIVE. Per verificare lo stato del gruppo di oggetti dinamici, utilizzate il DescribeThingGroup comando.

Eliminazione di un gruppo di oggetti dinamico

Utilizzare il comando DeleteDynamicThingGroup per eliminare un gruppo di oggetti dinamico:

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

Il comando DeleteDynamicThingGroup non produce output.

I comandi che mostrano i gruppi a cui un oggetto appartiene (ad esempio, ListGroupsForThing) potrebbero continuare a segnalare il gruppo mentre i record nel cloud vengono aggiornati.

Limitazioni dei gruppi di oggetti dinamici e statici

I gruppi di oggetti dinamici e i gruppi di oggetti statici condividono le seguenti limitazioni:

  • Il numero di attributi che può avere un gruppo di oggetti è limitato.

  • Il numero di gruppi a cui un oggetto può appartenere è limitato.

  • Non è possibile rinominare i gruppi di oggetti.

  • I nomi dei gruppi di oggetti non possono contenere caratteri internazionali, ad esempio, û, é e ñ.

Limitazioni dei gruppi di oggetti dinamici

I gruppi di oggetti dinamici presentano le seguenti limitazioni:

Indicizzazione del parco veicoli

Con il servizio di indicizzazione del parco veicoli abilitato, puoi eseguire query di ricerca sulla tua flotta di dispositivi. È possibile creare e gestire gruppi di oggetti dinamici una volta completato il backfill di indicizzazione del parco veicoli. Il tempo di completamento del processo di backfill è direttamente influenzato dalle dimensioni del parco dispositivi registrato presso il. Cloud AWS Una volta attivato il servizio di indicizzazione del parco istanze per i gruppi di oggetti dinamici, non è possibile eliminare tutti i gruppi di oggetti dinamici.

Nota

Se si dispone di autorizzazioni per eseguire query all'indice del parco istanze, è possibile accedere ai dati degli oggetti sull'intero parco istanze.

Il numero di gruppi di oggetti dinamici è limitato

Il numero di gruppi di oggetti dinamici è limitato.

I comandi eseguiti in modo corretto possono registrare errori

Quando si crea o si aggiorna un gruppo di oggetti dinamici, è possibile che alcuni elementi siano idonei all'inclusione in un gruppo di oggetti dinamici, ma non vi vengano aggiunti. Questo scenario causerà il corretto comando di creazione o aggiornamento durante la registrazione di un errore e la generazione di una metrica. AddThingToDynamicThingGroupsFailed Una singola metrica può rappresentare più voci di registro.

Nel registro viene creata una voce del CloudWatch registro degli errori quando si verifica quanto segue:

  • Un oggetto idoneo non può essere aggiunto a un gruppo di oggetti dinamico.

  • Un oggetto viene rimosso da un gruppo di oggetti dinamico per aggiungerlo a un altro gruppo.

Quando un oggetto diventa idoneo per essere aggiunto a un gruppo di oggetti dinamico, considera quanto segue:

  • L'oggetto è già nel numero massimo di gruppi in cui può essere? (Consulta limiti)

    • NO: l'oggetto viene aggiunto al gruppo di oggetti dinamico.

    • SÌ: l'oggetto è già membro di altri gruppi di oggetti dinamici?

      • NO: l'oggetto non può essere aggiunto al gruppo di oggetti dinamico, viene registrato un errore e viene generato un parametro AddThingToDynamicThingGroupsFailed.

      • SÌ: il gruppo di oggetti dinamico al quale deve unirsi è più vecchio di qualsiasi gruppo di oggetti dinamico al quale l'oggetto già apparteneva?

        • NO: l'oggetto non può essere aggiunto al gruppo di oggetti dinamico, viene registrato un errore e viene generato un parametro AddThingToDynamicThingGroupsFailed.

        • SÌ: rimuovi l'oggetto dal gruppo di oggetti dinamici più recente, registra un errore e aggiungi l'oggetto al gruppo di oggetti dinamici. Questo genera un errore e un parametro AddThingToDynamicThingGroupsFailed per il gruppo di oggetti dinamico dal quale l'oggetto è stato rimosso.

Quando un oggetto in un gruppo di oggetti dinamici non soddisfa più la query di ricerca, viene rimosso dal gruppo di oggetti dinamici. Analogamente, quando un oggetto viene aggiornato per soddisfare la query di ricerca di un gruppo di oggetti dinamico, l'oggetto viene aggiunto al gruppo come descritto in precedenza. Queste aggiunte e rimozioni sono normali e non producono voci di registro di errore.

Con l'override DynamicGroups abilitato, i gruppi statici hanno la priorità sui gruppi dinamici

Il numero di gruppi a cui un oggetto può appartenere è limitato. Quando si utilizzano UpdateThingGroupsForThing i comandi AddThingToThingGroup o per aggiornare l'appartenenza agli oggetti, l'aggiunta del --overrideDynamicGroups parametro conferisce priorità ai gruppi di oggetti statici rispetto ai gruppi di oggetti dinamici.

Quando aggiungete un oggetto a un gruppo di oggetti statico, considerate quanto segue:

  • L'oggetto appartiene già al numero massimo di gruppi?

    • NO: l'oggetto viene aggiunto al gruppo di oggetti statico.

    • SÌ: l'oggetto è in qualche gruppo dinamico?

      • NO: l'oggetto non può essere aggiunto al gruppo di oggetti. Il comando solleva un'eccezione.

      • SÌ: è stato abilitato --overrideDynamicGroups?

        • NO: l'oggetto non può essere aggiunto al gruppo di oggetti. Il comando solleva un'eccezione.

        • SÌ: l'oggetto viene rimosso dal gruppo di oggetti dinamico creato più di recente, viene registrato un errore e viene generato un parametro AddThingToDynamicThingGroupsFailed per il gruppo di oggetti dinamico da cui è stato rimosso l'oggetto. Quindi, l'oggetto viene aggiunto al gruppo di oggetti statico.

I gruppi di oggetti dinamici precedenti hanno la priorità sui gruppi più recenti

Il numero di gruppi a cui un oggetto può appartenere è limitato. Quando un'operazione di creazione o aggiornamento crea un'ulteriore idoneità di gruppo per un oggetto e l'oggetto ha raggiunto il limite di gruppo, può avvenire la rimozione da un altro gruppo di oggetti dinamico per abilitare questa aggiunta. Per ulteriori informazioni su come ciò si verifica, vedere I comandi eseguiti in modo corretto possono registrare errori e Con l'override DynamicGroups abilitato, i gruppi statici hanno la priorità sui gruppi dinamici per esempi.

Quando un oggetto viene rimosso da un gruppo di oggetti dinamico, viene registrato un errore e viene generato un evento.

Non è possibile applicare policy ai gruppi di oggetti dinamici

Il tentativo di applicazione di una policy a un gruppo di oggetti dinamico genera un'eccezione.

L'appartenenza a un gruppo di oggetti dinamico è consistente finale

Solo lo stato finale di un oggetto è valutato per il registro. Gli stati intermedi possono essere ignorati se vengono aggiornati rapidamente. Evita di associare una regola o un job a un gruppo di oggetti dinamici la cui appartenenza dipende da uno stato intermedio.