Eventos de ciclo de vida - AWS IoT Core

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.

thingNamesó será incluído se o cliente estiver se conectando usando o recurso exclusivo.

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/clientId – Um cliente se conectou apenas ao agente de mensagens.

  • $aws/events/presence/disconnected/clientId – Um cliente se desconectou do agente de mensagens.

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. thingNamesó 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 ou Close 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 ou disconnected.

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/clientId tópico.

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. thingNamesó 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. thingNamesó 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 ou unsubscribed.

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.