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.
thingName
sarà incluso solo se il client si connette utilizzando la funzione oggetto esclusiva.
In questo argomento:
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/
- Client connesso al broker di messaggi.clientId
-
$aws/events/presence/disconnected/
- Client disconnesso dal broker di messaggi.clientId
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.
thingName
sarà 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 unClose 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
edisconnected
. - 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/
argomento.clientId
- 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.
thingName
sarà 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
clientId
Dov'è 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/
argomenti and. clientId
$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.
thingName
sarà incluso solo se il client si connette utilizzando la funzione oggetto esclusiva. - eventType
-
Tipo di evento. I valori validi sono
subscribed
eunsubscribed
. - 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.