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 ombre del dispositivo e i dati AWS IoT Device Defender sulle violazioni supportano questa funzionalità. I gruppi di oggetti dinamici richiedono l'indicizzazione del parco veicoli 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 di indicizzazione della flotta prima di crearlo. Per ulteriori informazioni, consulta Indicizzazione del parco istanze e Sintassi delle query.

Nota

Le operazioni dinamiche dei gruppi di oggetti vengono misurate nelle operazioni di registro. Per ulteriori informazioni, vedere AWS IoT Core ulteriori dettagli sulla misurazione.

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, definite una stringa di query di ricerca per determinare l'appartenenza al gruppo.

  • I gruppi di oggetti dinamici non possono essere 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 Account AWS è limitato.

  • Non utilizzare informazioni che consentano l'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:

Specificate un gruppo di oggetti dinamico come destinazione per un job

La creazione di un lavoro 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 dinamico, non riceverà il documento di lavoro dal lavoro.

Ad esempio, se il tuo 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%. È possibile creare un gruppo di oggetti dinamico denominato 80 PercentBatteryLife che include solo dispositivi con una durata della batteria superiore all'80% e utilizzarlo come destinazione per il proprio lavoro. Solo i dispositivi che soddisfano i criteri di durata della batteria riceveranno l'aggiornamento del firmware. Quando i dispositivi raggiungono il criterio di durata della batteria dell'80%, vengono automaticamente aggiunti al gruppo di oggetti dinamico e riceveranno l'aggiornamento del firmware.

È inoltre possibile disporre di più modelli di dispositivi con firmware o sistema operativo diversi, il che richiede versioni diverse dei 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 lavori 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 specificazione dei gruppi di oggetti come obiettivi di lavoro, vedere 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 dinamico, 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 scrivere su Amazon DynamoDB, richiamare una funzione Lambda o inviare 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 dinamico vengono rilevati automaticamente per rilevare eventuali violazioni dal profilo di sicurezza definito nel gruppo.

Imposta i livelli di log sui gruppi di oggetti dinamici per osservare i dispositivi con una registrazione dettagliata

È possibile specificare un livello di log su un gruppo di oggetti dinamico. Ciò è utile se si desidera personalizzare solo il livello e i dettagli di registrazione per i dispositivi che soddisfano determinati criteri. Ad esempio, se sospetti che 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 che dispongono di questa versione del firmware, che supponiamo sia memorizzata come attributo di registro o nell'ombra di un dispositivo. È quindi possibile impostare un livello di debug, con l'obiettivo di registrazione definito come questo gruppo di oggetti dinamico. Per ulteriori informazioni sulla registrazione dettagliata, consultate Monitoraggio tramite log. AWS IoT CloudWatch Per ulteriori informazioni su come specificare un livello di registrazione per un gruppo di oggetti specifico, consulta Configurare la registrazione specifica per una risorsa. 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 lo PercentBatteryLife scenario 80, utilizzate il comando create-dynamic-thing-group CLI:

$ 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 cose 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 cose:

{ "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 dinamico, lo stato del gruppo è impostato suBUILDING. Quando il backfill è completo, lo stato diventa ACTIVE. Per controllare lo stato del gruppo di oggetti dinamico, utilizzate il comando DescribeThingGruppo.

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 cose dinamico restituisce attributi specifici dei gruppi di cose dinamici. Gli attributi restituiti di esempio sono QueryString e lo 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 suo 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 impostandoli sulla 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 dinamico 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 dinamico, utilizzate il comando DescribeThingGruppo.

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 thing group dinamici e i thing group statici condividono le seguenti limitazioni:

  • Il numero di attributi che un gruppo di oggetti può avere è 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 di Dynamic Thing Group

I gruppi di oggetti dinamici presentano le seguenti limitazioni:

Indicizzazione del parco istanze

Con il servizio di indicizzazione del parco veicoli abilitato, puoi eseguire query di ricerca sul tuo parco dispositivi. È possibile creare e gestire gruppi di oggetti dinamici dopo il completamento del riempimento dell'indicizzazione della flotta. Il tempo di completamento del processo di riempimento è 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 cose dinamico, è possibile che alcuni elementi siano idonei per l'inclusione in un gruppo di cose dinamico, ma non vi vengano aggiunti. Questo scenario causerà l'esecuzione corretta del 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.

Una voce del CloudWatch registro degli errori viene creata 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, considerate 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Ì: rimuove l'oggetto dal gruppo di oggetti dinamico più recente, registra un errore e aggiunge l'oggetto al gruppo di oggetti dinamico. 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 dinamico non soddisfa più la query di ricerca, l'oggetto viene rimosso dal gruppo di oggetti dinamico. Allo stesso modo, quando un oggetto viene aggiornato per soddisfare la query di ricerca di un gruppo di oggetti dinamico, l'oggetto viene quindi aggiunto al gruppo come descritto in precedenza. Queste aggiunte e rimozioni sono normali e non producono voci di registro di errore.

Con overrideDynamicGroups abilitato, i gruppi statici hanno la priorità sui gruppi dinamici

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

Quando aggiungete un oggetto a un gruppo di oggetti statico, tenete presente 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ò verificarsi 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 overrideDynamicGroups 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 lavoro a un gruppo di oggetti dinamico la cui appartenenza dipende da uno stato intermedio.