View a markdown version of this page

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.

thingNamesaranno inclusi solo se il client si connette utilizzando la funzionalità Exclusive Thing. Associare un AWS IoT cosa a una connessione client MQTT

Connect/Disconnect eventi

Nota

Con l'indicizzazione del parco AWS IoT dispositivi di Device Management, puoi cercare oggetti, eseguire query aggregate e creare gruppi dinamici in base agli eventi degli oggetti. Connect/Disconnect Per ulteriori informazioni, consulta Indicizzazione del parco istanze.

AWS IoT pubblica un messaggio sui seguenti argomenti MQTT 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 elementi JSON contenuti nei connection/disconnection messaggi pubblicati sull'argomento. $aws/events/presence/connected/clientId

clientId

ID del client che si connette o si disconnette.

Nota

Gli ID client che contengono # o + non ricevono eventi del ciclo di vita.

thingName

Il nome del tuo oggetto IoT. thingNameverrà incluso solo se il client si connette utilizzando la funzionalità esclusiva dell'oggetto.

cliente InitiatedDisconnect

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 Last Will and Testament (LWT) quando si verifica la disconnessione.

Motivo di disconnessione Description Il broker invierà i messaggi LWT
AUTH_ERROR Il client non è riuscito a eseguire l'autenticazione oppure l'autorizzazione non è riuscita. Sì1
CLIENT_INITIATED_DISCONNECT Il client indica che si disconnette. Il client può farlo inviando un pacchetto di DISCONNECT controllo MQTT o un messaggio Close frame se il client utilizza una connessione. WebSocket No
CLIENT_ERROR Il client ha rilevato un errore che causa la disconnessione. Ad esempio, il client viene disconnesso per l'invio di più di 1 pacchetto CONNECT MQTT sulla stessa connessione o se tenta di pubblicare con un payload che supera il limite del 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ì1
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ì
API_INITIATED_DISCONNECT Il client è stato disconnesso tramite l'API. DeleteConnection Sì2
THROTTLED Il client viene disconnesso per il superamento di un limite di throttling. Sì
WEBSOCKET_TTL_EXPIRATION Il client è disconnesso perché a è WebSocket rimasto connesso più a lungo del suo valore di vita. Sì
CUSTOMAUTH_TTL_EXPIRATION Il client è disconnesso perché è stato connesso più a lungo del valore di time-to-live del suo autorizzatore personalizzato. Sì

1 Se il dispositivo ha una connessione attiva prima di ricevere questo errore.

2 Per impedire i messaggi Last Will and Testament (LWT), impostate l'impostazione in modo preventWillMessage=true da sovrascrivere il comportamento di invio LWT predefinito dell'DeleteConnectionAPI.

eventType

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

ipAddress

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

principalIdentifier

Credenziale usata per l'autenticazione. Per i certificati di autenticazione reciproca TLS, si tratta dell'ID 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 permanenti, il numero di versione viene reimpostato su 0 dopo che un client è stato disconnesso per un periodo più lungo del time-to-live (TTL) configurato 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

Secondo le best practice, occorre sempre avere uno stato di attesa implementato per gli eventi del ciclo di vita, inclusi i messaggi Last Will and 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. A questo scopo, è possibile utilizzare Code di ritardo Amazon SQS. Quando un client riceve un LWT o un evento del ciclo di vita, è possibile accodare 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 fallimento del tentativo di connessione

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

$aws/events/presence/connect_failed/clientId

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

clientId

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

Nota

Gli ID client che contengono # o + non ricevono eventi del ciclo di vita.

thingName

Il nome del tuo oggetto IoT. thingNameverrà incluso solo se il client si connette utilizzando la funzionalità esclusiva dell'oggetto.

timestamp

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

eventType

Tipo di evento. Il valore valido èconnect_failed.

connettere FailureReason

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

principalIdentifier

Credenziale usata per l'autenticazione. Per i certificati di autenticazione reciproca TLS, si tratta dell'ID 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. Questo può essere in formato IPv4 o IPv6. 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" }

Subscribe/Unsubscribe eventi

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

$aws/events/subscriptions/subscribed/clientId

or

$aws/events/subscriptions/unsubscribed/clientId

Dove clientId è l'ID client MQTT 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 elementi JSON contenuti nei messaggi di cui è stata eseguita o annullata la sottoscrizione pubblicati negli argomenti $aws/events/subscriptions/subscribed/clientId e $aws/events/subscriptions/unsubscribed/clientId.

clientId

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

Nota

Gli ID client che contengono # o + non ricevono eventi del ciclo di vita.

thingName

Il nome del tuo oggetto IoT. thingNameverrà incluso solo se il client si connette utilizzando la funzionalità esclusiva dell'oggetto.

eventType

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

principalIdentifier

Credenziale usata per l'autenticazione. Per i certificati di autenticazione reciproca TLS, si tratta dell'ID 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

Matrice degli argomenti MQTT sottoscritti dal client.

Nota

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