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
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.
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† |
|
MQTT | Publicar/assinar | Certificado do cliente X.509 | 8883 | N/D |
MQTT |
Publicar/assinar |
Autenticação personalizada |
443† |
|
HTTPS |
Somente publicação |
Signature versão 4 |
443 |
N/D |
HTTPS |
Somente publicação |
Certificado do cliente X.509 |
443† |
|
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)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
Protocolo |
Endpoint ou URL |
---|---|
MQTT |
|
MQTT via WSS |
|
HTTPS |
|
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.
Atributo |
||
---|---|---|
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 |
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 |
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.
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.
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.