Protocolos de comunicação do dispositivo - AWS IoT Core

Protocolos de comunicação do dispositivo

O AWS IoT Core é compatível com dispositivos e clientes que usam os protocolos MQTT e MQTT por WebSocket Secure (WSS) para publicar e assinar mensagens, e dispositivos e clientes que usam o protocolo HTTPS para publicar mensagens. Todos os protocolos são compatíveis com IPv4 e IPv6. Esta seção descreve as diferentes opções de conexão para dispositivos e clientes.

Versões do protocolo TLS

O AWS IoT Core usa TLS versão 1.2 e TLS versão 1.3 para criptografar todas as comunicações. Você pode configurar versões adicionais da política de TLS para seu endpoint definindo as configurações de TLS nas configurações de domínio. Ao conectar dispositivos a clientes AWS IoT Core, os clientes podem enviar a extensão Server Name Indication (SNI), que é necessária para recursos como registro de várias contas, endpoints configuráveis, domínios personalizados e endpoints da VPC. Para obter mais informações, consulte Segurança de transporte no AWS IoT.

Os SDKs de dispositivo da AWS IoT oferecem suporte a MQTT e MQTT via WSS e aos requisitos de segurança das conexões do cliente. Recomendamos usar os SDKs de dispositivo da AWS IoT para conectar clientes à AWS IoT.

Protocolos, mapeamentos de porta e autenticação

A forma como um dispositivo ou cliente se conecta ao agente de mensagens é configurável usando um tipo de autenticação. Por padrão, ou quando nenhuma extensão SNI é enviada, o método de autenticação é baseado no protocolo de aplicativo, na porta e na extensão TLS de negociação de protocolo da camada de aplicativo (ALPN) que os dispositivos usam. A tabela a seguir lista a autenticação esperada com base na porta, porta e ALPN.

Protocolos, autenticação e mapeamentos de porta
Protocolo Operações compatíveis Autenticação Porta Nome do protocolo ALPN

MQTT pelo WebSocket

Publicar/assinar Signature versão 4 443

N/D

MQTT pelo WebSocket

Publicar/assinar Autenticação personalizada 443

N/D

MQTT

Publicar/assinar

Certificado do cliente X.509

443

x-amzn-mqtt-ca

MQTT Publicar/assinar Certificado do cliente X.509 8883 N/D

MQTT

Publicar/assinar

Autenticação personalizada

443

mqtt

HTTPS

Somente publicação

Signature versão 4

443

N/D

HTTPS

Somente publicação

Certificado do cliente X.509

443

x-amzn-http-ca

HTTPS Somente publicação Certificado do cliente X.509 8443 N/D
HTTPS Somente publicação Autenticação personalizada 443 N/D
Application Layer Protocol Negotiation (ALPN)

Ao usar configurações de endpoint padrão, os clientes que se conectam na porta 443 com a autenticação de certificado do cliente X.509 devem implementar a extensão do TLS Application Layer Protocol Negotiation (ALPN) e usar o nome do protocolo ALPN listado em ProtocolNameList da ALPN enviada pelo cliente como parte da mensagem ClientHello.

Na porta 443, o endpoint IoT:Data-ATS é compatível com ALPN x-amzn-http-ca HTTP, mas o endpoint IoT:Jobs não.

Nas portas 8443 HTTPS e 443 MQTT com ALPN x-amzn-mqtt-ca, não é possível usar a autenticação personalizada.

Os clientes se conectam aos endpoints dos dispositivos de sua Conta da AWS. Consulte Dados dos dispositivos de AWS IoT e endpoints de serviço para ver informações sobre como encontrar os endpoints do dispositivo da sua conta.

nota

Os SDKs da AWS não exigem o URL inteiro. Eles exigem apenas o nome do host do endpoint, como o pubsub.py de exemplo do SDK do dispositivo de AWS IoT para Python no GitHub. Transmitir o URL inteiro conforme fornecido na tabela a seguir pode gerar um erro, como nome de host inválido.

Como se conectar ao AWS IoT Core

Protocolo

Endpoint ou URL

MQTT

iot-endpoint

MQTT via WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

Escolher um protocolo de aplicativo para a comunicação do dispositivo

Para a maioria das comunicações dos dispositivos de IoT por meio dos endpoints do dispositivo, convém usar os protocolos Secure MQTT ou MQTT via WebSocket Secure (WSS); no entanto, os endpoints do dispositivo também oferecem suporte a HTTPS.

A tabela a seguir compara como o AWS IoT Core usa os dois protocolos de alto nível (MQTT e HTTPS) para comunicação do dispositivo.

Protocolos de dispositivos AWS IoT (MQTT e HTTPS) lado a lado

Atributo

MQTT

HTTPS

Suporte para publicação/assinatura

Publicação e assinatura

Somente publicação

Compatibilidade com o SDK

Os SDKs dos dispositivos de AWS são compatíveis com os protocolos MQTT e WSS

Não há suporte para SDK, mas você pode usar métodos específicos de linguagem para fazer solicitações HTTPS

Suporte à qualidade de serviço

Níveis 0 e 1 de QoS do MQTT

A QoS é compatível enviando um parâmetro de string de consulta ?qos=qos em que o valor pode ser 0 ou 1. Você pode adicionar essa string de consulta para publicar uma mensagem com o valor de QoS desejado.
Pode receber mensagens perdidas enquanto o dispositivo estava off-line Sim Não

Suporte a campo de clientId

Sim

Não

Detecção de desconexão do dispositivo

Sim

Não

Comunicações seguras

Sim. Consulte Protocolos, mapeamentos de porta e autenticação

Sim. Consulte Protocolos, mapeamentos de porta e autenticação

Definições de tópico

Aplicativo definido

Aplicativo definido

Formato dos dados de mensagem

Aplicativo definido

Aplicativo definido

Sobrecarga do protocolo Menor Mais alto
Consumo de energia Menor Mais alto

Escolher um tipo de autenticação para a comunicação do seu dispositivo

Você pode configurar o tipo de autenticação para seu endpoint de IoT usando endpoints configuráveis. Como alternativa, use a configuração padrão e determine como seus dispositivos são autenticados com a combinação de protocolo de aplicativo, porta e extensão ALPN TLS. O tipo de autenticação que você escolher determina como seus dispositivos serão autenticados ao se conectar ao AWS IoT Core. Existem cinco tipos de autenticação:

certificado X.509

Autentique dispositivos usando certificados de cliente X.509, que AWS IoT Core valida para autenticar o dispositivo. Esse tipo de autenticação funciona com os protocolos Secure MQTT (MQTT over TLS) e HTTPS.

Certificado X.509 com autorizador personalizado

Autentique dispositivos usando certificados de cliente X.509 e execute ações adicionais de autenticação usando um autorizador personalizado, que receberá informações do certificado de cliente X.509. Esse tipo de autenticação funciona com os protocolos Secure MQTT (MQTT over TLS) e HTTPS. Esse tipo de autenticação só é possível usando endpoints configuráveis com autenticação personalizada X.509. Não há opção ALPN.

AWS Signature Version 4 (SigV4)

Autentique dispositivos usando o Cognito ou seu serviço de backend, oferecendo suporte à federação social e corporativa. Esse tipo de autenticação funciona com os protocolos MQTT over WebSocket Secure (WSS) e HTTPS.

Autorizador personalizado

Autentique dispositivos configurando uma função do Lambda para processar as informações de autenticação personalizadas enviadas para o AWS IoT Core. Esse tipo de autenticação funciona com os protocolos Secure MQTT (MQTT over TLS), HTTPS e MQTT over WebSocket Secure (WSS).

Padrão

Autentique dispositivos com base na porta e/ou na extensão de negociação de protocolo da camada de aplicativo (ALPN) que os dispositivos usam. Não há suporte para algumas opções adicionais de autenticação. Para obter mais informações, consulte Protocolos, mapeamentos de porta e autenticação.

A tabela abaixo mostra todas as combinações compatíveis de tipos de autenticação e protocolos de aplicativos.

Combinações com suporte de tipos de autenticação e protocolos de aplicativo
Tipo de autenticação Secure MQTT (MQTT over TLS) MQTT over WebSocket Secure (WSS) HTTPS Padrão
certificado X.509
Certificado X.509 com autorizador personalizado
AWS Signature Version 4 (SigV4)
Autorizador personalizado
Padrão

Limites de duração da conexão

Não é garantido que as conexões HTTPS durem mais do que o tempo necessário para receber e responder às solicitações.

A duração da conexão MQTT depende do atributo de autenticação usado. A tabela a seguir lista a duração máxima da conexão em condições ideais para cada atributo.

Duração da conexão MQTT por atributo de autenticação

Atributo

Duração máxima *

Certificado do cliente X.509

1 a 2 semanas

Autenticação personalizada

1 a 2 semanas

Signature versão 4

Até 24 horas

* Não garantido

Com certificados X.509 e autenticação personalizada, a duração da conexão não tem um limite rígido, mas pode ser de apenas alguns minutos. Interrupções de conexão podem ocorrer por vários motivos. A lista a seguir contém alguns dos motivos mais comuns.

  • Interrupções na disponibilidade de Wi-Fi

  • Interrupções na conexão do provedor de serviços de Internet (ISP)

  • Patches de serviço

  • Implantações de serviços

  • Autoescalabilidade do serviço

  • Host de serviço indisponível

  • Problemas e atualizações do balanceador de carga

  • Erros no lado do cliente,

Seus dispositivos devem implementar estratégias para detectar desconexões e reconectar-se. Para obter mais informações sobre eventos de desconexão e orientações sobre como lidar com eles, consulte Eventos de conexão/desconexão em Eventos de ciclo de vida.