Eventi del ciclo di vita - 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à.

Eventi del ciclo di vita

AWS IoT può pubblicare eventi del ciclo di vita sugli argomenti. MQTT Questi eventi sono disponibili per impostazione predefinita e non possono essere disabilitati.

Nota

È possibile che i messaggi del ciclo di vita non vengano inviati in ordine. Potresti anche ricevere messaggi duplicati.

thingNamesarà incluso solo se il client si connette utilizzando la funzione oggetto esclusiva.

Eventi di connessione/disconnessione

Nota

Con l'indicizzazione del parco veicoli di AWS IoT Device Management, puoi cercare elementi, eseguire query aggregate e creare gruppi dinamici basati su eventi Thing Connect/Disconnect. Per ulteriori informazioni, consulta Indicizzazione del parco istanze.

AWS IoT pubblica un messaggio sui seguenti MQTT argomenti quando un client si connette o si disconnette:

  • $aws/events/presence/connected/clientId - Client connesso al broker di messaggi.

  • $aws/events/presence/disconnected/clientId - Client disconnesso dal broker di messaggi.

Di seguito è riportato un elenco di JSON elementi contenuti nei messaggi di connessione/disconnessione pubblicati sull'argomento. $aws/events/presence/connected/clientId

clientId

ID del client che si connette o si disconnette.

Nota

I client IDs che contengono # o + non ricevono eventi del ciclo di vita.

thingName

Il nome del tuo dispositivo IoT. thingNamesarà incluso solo se il client si connette utilizzando la funzione oggetto esclusiva.

clientInitiatedDisconnect

True se il client ha avviato la disconnessione. In caso contrario, false. Presente solo nei messaggi di disconnessione.

disconnectReason

Il motivo per cui il client viene disconnesso. Presente solo nei messaggi di disconnessione. La tabella seguente contiene valori validi e indica se il broker invierà messaggi di Last Will and Testament (LWT) quando si verifica la disconnessione.

Motivo di disconnessione Descrizione Il broker invierà i messaggi LWT
AUTH_ERROR Il client non è riuscito a eseguire l'autenticazione oppure l'autorizzazione non è riuscita. Sì. Se il dispositivo ha una connessione attiva prima di ricevere questo errore.
CLIENT_INITIATED_DISCONNECT Il client indica che si disconnette. Il client può farlo inviando un pacchetto MQTT DISCONNECT di controllo o un Close frame se il client utilizza una WebSocket connessione. No.
CLIENT_ERROR Il client ha rilevato un errore che causa la disconnessione. Ad esempio, un client verrà disconnesso se invia più di 1 MQTT CONNECT pacchetto sulla stessa connessione o se tenta di pubblicare con un payload che supera il limite di payload. Sì.
CONNECTION_LOST La connessione client-server viene interrotta. Ciò può verificarsi durante un periodo di alta latenza di rete o quando la connessione Internet viene persa. Sì.
DUPLICATE_CLIENTID Il client utilizza un ID client già in uso. In questo caso, il client già connesso verrà disconnesso con questo motivo di disconnessione. Sì.
FORBIDDEN_ACCESS Il client non è autorizzato alla connessione. Ad esempio, un client con un indirizzo IP negato non riesce a connettersi. Sì. Se il dispositivo ha una connessione attiva prima di ricevere questo errore.
MQTT_KEEP_ALIVE_TIMEOUT Se non viene rilevata alcuna comunicazione client-server per 1,5x del tempo keep-alive del client, il client viene disconnesso. Sì.
SERVER_ERROR Disconnesso a causa di problemi imprevisti del server. Sì.
SERVER_INITIATED_DISCONNECT Il server disconnette intenzionalmente un client per motivi operativi. Sì.
THROTTLED Il client viene disconnesso per il superamento di un limite di throttling. Sì.
WEBSOCKET_TTL_EXPIRATION Il client è disconnesso perché a è WebSocket stato connesso più a lungo del suo valore. time-to-live Sì.
CUSTOMAUTH_TTL_EXPIRATION Il client è disconnesso perché è stato connesso più a lungo del time-to-live valore del relativo autorizzatore personalizzato. Sì.
eventType

Tipo di evento. I valori validi sono connected e disconnected.

ipAddress

L'indirizzo IP del client di connessione. Può essere in nostro formatoIPv4. IPv6 Presente solo nei messaggi di connessione.

principalIdentifier

Credenziale usata per l'autenticazione. Per i certificati di autenticazione TLS reciproca, questo è l'ID del certificato. Per altre connessioni, si tratta delle credenziali IAM.

sessionIdentifier

Un identificatore univoco globale AWS IoT che esiste per tutta la durata della sessione.

timestamp

Un'approssimazione del momento in cui si è verificato l'evento.

versionNumber

Numero di versione per l'evento del ciclo di vita. Consiste nell'aumentare in maniera monotona un valore intero lungo per ogni connessione dell'ID client. Il numero di versione può essere utilizzato da un sottoscrittore per dedurre l'ordine degli eventi del ciclo di vita.

Nota

I messaggi di connessione e disconnessione per una connessione client hanno lo stesso numero di versione.

Il numero di versione potrebbe ignorare valori e non è garantito che aumenti di 1 in modo costante per ogni evento.

Se un client non è connesso per circa un'ora, il numero di versione viene reimpostato su 0. Per le sessioni persistenti, il numero di versione viene reimpostato su 0 dopo che un client è stato disconnesso più a lungo di quello configurato time-to-live (TTL) per la sessione persistente.

Un messaggio di connessione ha la seguente struttura.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }

Un messaggio di disconnessione ha la seguente struttura.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }

Gestione delle disconnessioni client

La best practice consiste nell'implementare sempre uno stato di attesa per gli eventi del ciclo di vita, inclusi i messaggi Last Will e Testament (). LWT Quando si riceve un messaggio di disconnessione, il codice deve attendere un periodo di tempo e verificare che un dispositivo è ancora offline prima di effettuare operazioni. Un modo per farlo è utilizzare SQS Delay Queues. Quando un client riceve un evento del ciclo di vita LWT o un evento del ciclo di vita, puoi aggiungere un messaggio (ad esempio, per 5 secondi). Quando il messaggio diventa disponibile e viene elaborato (da Lambda o da un altro servizio), è possibile controllare innanzitutto se il dispositivo è ancora realmente offline prima di effettuare ulteriori operazioni.

Evento di tentativo di connessione fallito

AWS IoT pubblica un messaggio sul seguente MQTT argomento quando un client non è autorizzato a connettersi o quando è configurato un testamento e testamento e il client non è autorizzato a pubblicare su quell'argomento di ultimo testamento.

$aws/events/presence/connect_failed/clientId

Di seguito è riportato un elenco di JSON elementi contenuti nei messaggi di autorizzazione alla connessione pubblicati sull'$aws/events/presence/connect_failed/clientIdargomento.

clientId

L'ID client del client che ha tentato e non è riuscito a connettersi.

Nota

I client IDs che contengono # o + non ricevono eventi del ciclo di vita.

thingName

Il nome del tuo dispositivo IoT. thingNamesarà incluso solo se il client si connette utilizzando la funzione oggetto esclusiva.

timestamp

Un'approssimazione del momento in cui si è verificato l'evento.

eventType

Tipo di evento. Il valore valido èconnect_failed.

connectFailureReason

Il motivo per cui la connessione non riesce. Il valore valido èAUTHORIZATION_FAILED.

principalIdentifier

Credenziale usata per l'autenticazione. Per i certificati di autenticazione TLS reciproca, questo è l'ID del certificato. Per altre connessioni, si tratta delle credenziali IAM.

sessionIdentifier

Un identificatore univoco globale AWS IoT che esiste per tutta la durata della sessione.

ipAddress

L'indirizzo IP del client di connessione. Può essere in IPv4 o IPv6 formato. Presente solo nei messaggi di connessione.

Un messaggio di errore di connessione ha la seguente struttura.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "connect_failed", "connectFailureReason": "AUTHORIZATION_FAILED", "principalIdentifier": "12345678901234567890123456789012", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "ipAddress" : "192.0.2.0" }

Eventi di sottoscrizione/annullamento della sottoscrizione

AWS IoT pubblica un messaggio sul seguente MQTT argomento quando un client sottoscrive o annulla l'iscrizione a un argomento: MQTT

$aws/events/subscriptions/subscribed/clientId

oppure

$aws/events/subscriptions/unsubscribed/clientId

clientIdDov'è l'ID MQTT client che si connette al broker di messaggi. AWS IoT

Il messaggio pubblicato in questo argomento ha la struttura seguente:

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "topics" : ["foo/bar","device/data","dog/cat"] }

Di seguito è riportato un elenco di JSON elementi contenuti nei messaggi sottoscritti e non sottoscritti pubblicati negli $aws/events/subscriptions/subscribed/clientId argomenti and. $aws/events/subscriptions/unsubscribed/clientId

clientId

ID del client che esegue la sottoscrizione o l'annullamento della sottoscrizione.

Nota

I client IDs che contengono # o + non ricevono eventi del ciclo di vita.

thingName

Il nome del tuo dispositivo IoT. thingNamesarà incluso solo se il client si connette utilizzando la funzione oggetto esclusiva.

eventType

Tipo di evento. I valori validi sono subscribed e unsubscribed.

principalIdentifier

Credenziale usata per l'autenticazione. Per i certificati di autenticazione TLS reciproca, questo è l'ID del certificato. Per altre connessioni, si tratta delle credenziali IAM.

sessionIdentifier

Un identificatore univoco globale AWS IoT che esiste per tutta la durata della sessione.

timestamp

Un'approssimazione del momento in cui si è verificato l'evento.

topics

Una serie di MQTT argomenti a cui il cliente si è abbonato.

Nota

È possibile che i messaggi del ciclo di vita non vengano inviati in ordine. Potresti anche ricevere messaggi duplicati.