As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Eventos de ciclo de vida
AWS IoT pode publicar eventos do ciclo de vida sobre os MQTT tópicos. Esses eventos estão disponíveis por padrão e não podem ser desativados.
nota
As mensagens de ciclo de vida podem ser enviadas fora de ordem. Você pode receber mensagens duplicadas.
thingName
só será incluído se o cliente estiver se conectando usando o recurso exclusivo.
Neste tópico:
Eventos de conexão/desconexão
nota
Com a indexação de frotas do AWS IoT Device Management, você pode pesquisar coisas, executar consultas agregadas e criar grupos dinâmicos com base em eventos de conexão/desconexão. Para obter mais informações, consulte Indexação de frota.
AWS IoT publica uma mensagem nos seguintes MQTT tópicos quando um cliente se conecta ou desconecta:
-
$aws/events/presence/connected/
– Um cliente se conectou apenas ao agente de mensagens.clientId
-
$aws/events/presence/disconnected/
– Um cliente se desconectou do agente de mensagens.clientId
A seguir está uma lista dos JSON elementos contidos nas mensagens de conexão/desconexão publicadas no tópico. $aws/events/presence/connected/
clientId
- clientId
-
O ID do cliente que se conecta ou que se desconecta.
nota
Clientes IDs que contêm # ou + não recebem eventos de ciclo de vida.
- thingName
-
O nome da sua coisa de IoT.
thingName
só será incluído se o cliente estiver se conectando usando o recurso exclusivo. - clientInitiatedDisconnect
-
Verdadeiro se o cliente iniciou a desconexão. Caso contrário, falso. Encontrado apenas em mensagens de desconexão.
- disconnectReason
-
A razão pela qual o cliente está se desconectando. Encontrado apenas em mensagens de desconexão. A tabela a seguir contém valores válidos e se o corretor enviará mensagens de Last Will and Testament (LWT) quando a desconexão ocorrer.
Motivo da desconexão Descrição O corretor enviará as LWT mensagens AUTH_ERROR
Falha ao autenticar o cliente, ou a autorização falhou. Sim. Se o dispositivo tiver uma conexão ativa antes de receber esse erro. CLIENT_INITIATED_DISCONNECT
O cliente indica que ele se desconectará. O cliente pode fazer isso enviando um pacote MQTT DISCONNECT
de controle ouClose frame
se o cliente estiver usando uma WebSocket conexão.Não. CLIENT_ERROR
O cliente fez algo errado que faz com que ele se desconecte. Por exemplo, um cliente será desconectado por enviar mais de um MQTT CONNECT
pacote na mesma conexão ou se o cliente tentar publicar com uma carga que exceda o limite de carga útil.Sim. CONNECTION_LOST
A conexão cliente-servidor é cortada. Isso pode acontecer durante um período de alta latência de rede ou quando a conexão com a Internet é perdida. Sim. DUPLICATE_CLIENTID
O cliente está usando um ID de cliente que já está em uso. Nesse caso, o cliente que já está conectado será desconectado com esse motivo de desconexão. Sim. FORBIDDEN_ACCESS
O cliente não tem permissão para ser conectado. Por exemplo, um cliente com um endereço IP negado falhará ao se conectar. Sim. Se o dispositivo tiver uma conexão ativa antes de receber esse erro. MQTT_KEEP_ALIVE_TIMEOUT
Se não houver nenhuma comunicação cliente-servidor para 1,5x do tempo keep-alive do cliente, o cliente será desconectado. Sim. SERVER_ERROR
Desconectado devido a problemas inesperados no servidor. Sim. SERVER_INITIATED_DISCONNECT
O servidor desconecta intencionalmente um cliente por razões operacionais. Sim. THROTTLED
O cliente é desconectado por exceder um limite de controle. Sim. WEBSOCKET_TTL_EXPIRATION
O cliente está desconectado porque a está conectado WebSocket há mais tempo do que seu time-to-live valor. Sim. CUSTOMAUTH_TTL_EXPIRATION
O cliente está desconectado porque está conectado há mais tempo do que o time-to-live valor de seu autorizador personalizado. Sim. - eventType
-
O tipo de evento. Os valores válidos são
connected
oudisconnected
. - ipAddress
-
O endereço IP do cliente que está se conectando. Isso pode estar em IPv4 nosso IPv6 formato. Encontrado somente em mensagens de conexão.
- principalIdentifier
-
A credencial usada para autenticar. Para certificados de autenticação TLS mútua, essa é a ID do certificado. Para outras conexões, são as credenciais do IAM.
- sessionIdentifier
-
Um identificador globalmente exclusivo AWS IoT que existe durante toda a sessão.
- timestamp
-
Uma estimativa de quando o evento ocorreu.
- versionNumber
-
O número de versão para o evento de ciclo de vida. Esse é um valor inteiro longo que cresce monotonicamente para cada conexão do ID do cliente. O número da versão pode ser usado por um assinante para inferir a ordem dos eventos de ciclo de vida.
nota
As mensagens de conexão e desconexão para uma conexão do cliente têm o mesmo número de versão.
O número da versão pode ignorar valores e não há garantia de que ele aumente de forma consistente em 1 para cada evento.
Se um cliente não permanecer conectado por aproximadamente uma hora, o número da versão será redefinido como 0. Para sessões persistentes, o número da versão é redefinido para 0 após um cliente ter sido desconectado por mais tempo do que o configurado time-to-live (TTL) para a sessão persistente.
Uma mensagem de conexão tem a seguinte estrutura.
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }
Uma mensagem de desconexão tem a seguinte estrutura.
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }
Gerenciamento de desconexões de clientes
A melhor prática é sempre ter um estado de espera implementado para eventos do ciclo de vida, incluindo mensagens de Last Will e Testament (LWT). Quando uma mensagem de desconexão é recebida, seu código deve aguardar um período e verificar se um dispositivo ainda está offline antes de realizar uma ação. Uma maneira de fazer isso é usando SQSDelay Queues. Quando um cliente recebe um evento de ciclo de vida LWT ou um evento de ciclo de vida, você pode enfileirar uma mensagem (por exemplo, por 5 segundos). Quando essa mensagem se torna disponível e é processada (pelo Lambda ou outro serviço), você pode primeiro verificar se o dispositivo ainda está off-line antes de realizar outras ações.
Evento de falha na tentativa de conexão
AWS IoT publica uma mensagem no MQTT tópico a seguir quando um cliente não está autorizado a se conectar ou quando um último testamento e testamento são configurados e o cliente não está autorizado a publicar nesse tópico do último testamento.
$aws/events/presence/connect_failed/
clientId
A seguir está uma lista dos JSON elementos contidos nas mensagens de autorização de conexão publicadas no $aws/events/presence/connect_failed/
tópico.clientId
- clientId
-
O ID do cliente que tentou se conectar e falhou.
nota
Clientes IDs que contêm # ou + não recebem eventos de ciclo de vida.
- thingName
-
O nome da sua coisa de IoT.
thingName
só será incluído se o cliente estiver se conectando usando o recurso exclusivo. - timestamp
-
Uma estimativa de quando o evento ocorreu.
- eventType
-
O tipo de evento. O valor válido é
connect_failed
. - connectFailureReason
-
O motivo pelo qual a conexão falha. O valor válido é
AUTHORIZATION_FAILED
. - principalIdentifier
-
A credencial usada para autenticar. Para certificados de autenticação TLS mútua, essa é a ID do certificado. Para outras conexões, são as credenciais do IAM.
- sessionIdentifier
-
Um identificador globalmente exclusivo AWS IoT que existe durante toda a sessão.
- ipAddress
-
O endereço IP do cliente que está se conectando. Isso pode estar em IPv4 nosso IPv6 formato. Encontrado somente em mensagens de conexão.
Uma mensagem de falha de conexão tem a seguinte estrutura.
{ "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" }
Eventos de assinatura/cancelamento de assinatura
AWS IoT publica uma mensagem no MQTT tópico a seguir quando um cliente assina ou cancela a assinatura de um tópico: MQTT
$aws/events/subscriptions/subscribed/
clientId
or
$aws/events/subscriptions/unsubscribed/
clientId
Onde clientId
está o ID MQTT do cliente que se conecta ao agente de AWS IoT
mensagens.
A mensagem publicada para este tópico tem a seguinte estrutura:
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "topics" : ["foo/bar","device/data","dog/cat"] }
A seguir está uma lista dos JSON elementos contidos nas mensagens assinadas e não assinadas publicadas nos tópicos e. $aws/events/subscriptions/subscribed/
clientId
$aws/events/subscriptions/unsubscribed/
clientId
- clientId
-
O ID do cliente que assina ou que cancela a assinatura.
nota
Clientes IDs que contêm # ou + não recebem eventos de ciclo de vida.
- thingName
-
O nome da sua coisa de IoT.
thingName
só será incluído se o cliente estiver se conectando usando o recurso exclusivo. - eventType
-
O tipo de evento. Os valores válidos são
subscribed
ouunsubscribed
. - principalIdentifier
-
A credencial usada para autenticar. Para certificados de autenticação TLS mútua, essa é a ID do certificado. Para outras conexões, são as credenciais do IAM.
- sessionIdentifier
-
Um identificador globalmente exclusivo AWS IoT que existe durante toda a sessão.
- timestamp
-
Uma estimativa de quando o evento ocorreu.
- tópicos
-
Uma série de MQTT tópicos nos quais o cliente se inscreveu.
nota
As mensagens de ciclo de vida podem ser enviadas fora de ordem. Você pode receber mensagens duplicadas.