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á.
Configurar e solucionar problemas do AWS IoT Greengrass com dispositivos cliente
Criado por Marouane Sefiani e Akalanka De Silva () AWS
Ambiente: PoC ou piloto | Tecnologias: IoT | AWSserviços: AWS IoT Greengrass; IoT Core AWS |
Resumo
AWSO IoT Greengrass é um serviço de nuvem e tempo de execução de borda de código aberto para criar, implantar e gerenciar software de Internet das Coisas (IoT) em dispositivos periféricos. Os casos de uso AWS do IoT Greengrass incluem:
Casas inteligentes onde um gateway AWS IoT Greengrass é usado como um hub para automação residencial
Fábricas inteligentes nas quais o AWS IoT Greengrass pode facilitar a ingestão e o processamento local de dados do chão de fábrica
AWSO IoT Greengrass pode atuar como um ponto final de MQTT conexão seguro e autenticado para outros dispositivos periféricos (também conhecidos como dispositivos clientes), que, de outra forma, normalmente se conectariam diretamente ao IoT Core. AWS Esse recurso é útil quando os dispositivos cliente não têm acesso direto à rede ao endpoint AWS IoT Core.
Você pode configurar o AWS IoT Greengrass para uso com dispositivos clientes nos seguintes casos de uso:
Para dispositivos clientes enviarem dados para o AWS IoT Greengrass
Para que o AWS IoT Greengrass encaminhe dados para o IoT Core AWS
Para aproveitar os recursos avançados do mecanismo de regras AWS do IoT Core
Esses recursos exigem a instalação e a configuração dos seguintes componentes no dispositivo AWS IoT Greengrass:
MQTTcorretor
MQTTponte
Autenticação do dispositivo cliente
Detector IP
Além disso, as mensagens publicadas dos dispositivos clientes devem estar no JSON formato ou no formato Protobuf (Protobuf
Esse padrão descreve como instalar e configurar esses componentes necessários e fornece dicas de solução de problemas e práticas recomendadas.
Pré-requisitos e limitações
Pré-requisitos
Uma AWS conta ativa
Dois dispositivos clientes executando o Python 3.7 ou superior
Um dispositivo principal executando o Java Runtime Environment (JRE) versão 8 ou posterior e o Amazon Corretto 11 ou Open 11
JDK
Limitações
Você deve escolher uma AWS região em que o AWS IoT Core esteja disponível. Para ver a lista atual de regiões do AWS IoT Core, consulte AWSServiços por
região. O dispositivo principal deve ter pelo menos 172 MB RAM e 512 MB de espaço em disco.
Arquitetura
O diagrama a seguir mostra a arquitetura da solução desse padrão.
A arquitetura inclui:
Dois dispositivos clientes. Cada dispositivo contém uma chave privada, um certificado de dispositivo e um certificado de autoridade de certificação (CA - certificate authority) raiz. O dispositivo AWS IoTSDK, que contém um MQTT cliente, também é instalado em cada dispositivo cliente.
Um dispositivo principal que tem o AWS IoT Greengrass implantado com os seguintes componentes:
MQTTcorretor
MQTTponte
Autenticação do dispositivo cliente
Detector IP
Essa arquitetura oferece suporte aos seguintes cenários:
Os dispositivos clientes podem usar seus MQTT clientes para se comunicarem uns com os outros por meio do MQTT agente do dispositivo principal.
Os dispositivos clientes também podem se comunicar com o AWS IoT Core na nuvem por meio do MQTT agente do dispositivo principal e da MQTT ponte.
AWSO IoT Core na nuvem pode enviar mensagens para dispositivos clientes por meio do cliente de MQTT teste e da MQTT ponte e MQTT agente do dispositivo principal.
Para obter mais informações sobre as comunicações entre dispositivos cliente e o dispositivo principal, consulte a seção Informações adicionais.
Ferramentas
AWSserviços
AWSO IoT Greengrass é um serviço de nuvem e tempo de execução de ponta da Internet das Coisas (IoT) de código aberto que ajuda você a criar, implantar e gerenciar aplicativos de IoT em seus dispositivos.
AWSO IoT Core fornece comunicação segura e bidirecional para dispositivos conectados à Internet se conectarem à nuvem. AWS
AWSO IoT Device SDK
é um kit de desenvolvimento de software que inclui bibliotecas de código aberto, guias para desenvolvedores com amostras e guias de portabilidade para que você possa criar produtos ou soluções de IoT inovadores nas plataformas de hardware de sua escolha. AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
Práticas recomendadas
A carga útil das mensagens dos dispositivos clientes deve estar no formato Protobuf JSON ou no formato Protobuf para aproveitar os recursos avançados do mecanismo de regras do AWS IoT Core, como transformação e ações condicionais.
Configure a MQTT ponte para permitir a comunicação bidirecional.
Configure e implante o componente detector de IP no AWS IoT Greengrass para garantir que os endereços IP do dispositivo principal sejam incluídos no campo nome alternativo do assunto (SAN) do certificado do agente. MQTT
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure o AWS IoT Greengrass em seu dispositivo principal. | Instale o software AWS IoT Greengrass Core seguindo as instruções no guia do desenvolvedor. | AWS IoT Greengrass |
Verifique o status da sua instalação. | Use o comando a seguir para verificar o status do serviço AWS IoT Greengrass em seu dispositivo principal:
A saída esperada do comando é:
| Geral AWS |
Configure uma IAM política e anexe-a à função de serviço do Greengrass. |
| Geral AWS |
Configure e implante os componentes necessários no dispositivo AWS principal do IoT Greengrass. | Configure e implante os seguintes componentes:
| AWS IoT Greengrass |
Confirme se a MQTT ponte permite comunicação bidirecional. | Para retransmitir MQTT mensagens entre dispositivos cliente e o AWS IoT Core, configure e implante MQTT o componente bridge e especifique os tópicos a serem retransmitidos. Veja um exemplo abaixo:
| AWS IoT Greengrass |
Confirme se o componente de autenticação permite que os dispositivos cliente se conectem e publiquem ou assinem tópicos. | A
| AWS IoT Greengrass |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Instale o AWS dispositivo IoT. SDK | Instale o dispositivo AWS IoT SDK nos dispositivos cliente. Para obter uma lista completa dos idiomas compatíveis e dos associadosSDKs, consulte a documentação do AWSIoT Core. Por exemplo, o dispositivo AWS IoT para SDK Python SDK está localizado em. GitHub
Como alternativa, você pode instalar o a SDK partir do repositório de origem:
| AWSIoT geral |
Crie uma coisa. |
| AWSNúcleo de IoT |
Baixe o certificado CA do dispositivo principal do Greengrass. | Se você espera que o dispositivo principal do Greengrass funcione em ambientes off-line, você precisa disponibilizar o certificado CA principal do Greengrass para que o dispositivo cliente possa verificar o certificado do MQTT agente (que é emitido pela CA principal do Greengrass). Portanto, é importante obter uma cópia desse certificado. Use uma das abordagens a seguir:
| Geral AWS |
Copie as credenciais nos dispositivos do cliente. | Copie o certificado CA principal do Greengrass, o certificado do dispositivo e a chave privada nos dispositivos do cliente. | Geral AWS |
Associe dispositivos cliente ao dispositivo principal. | Associe dispositivos clientes a um dispositivo principal para que eles possam descobrir o dispositivo principal. Os dispositivos cliente podem então usar a descoberta do Greengrass API para recuperar informações de conectividade e certificados para seus dispositivos principais associados. Para obter mais informações, consulte Associar dispositivos cliente na documentação do AWS IoT Greengrass.
Os dispositivos cliente que você associou agora podem usar a descoberta do Greengrass API para descobrir esse dispositivo principal. | AWS IoT Greengrass |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Envie dados de um dispositivo cliente para outro dispositivo cliente. | Use o MQTT cliente em seu dispositivo para publicar uma mensagem sobre o | Geral AWS |
Envie dados do dispositivo cliente para o AWS IoT Core. | Use o MQTT cliente em seu dispositivo para publicar uma mensagem sobre o No cliente MQTT de teste, assine o tópico para o qual o dispositivo está enviando mensagens ou assine # para todos os tópicos (veja detalhes). | Geral AWS |
Envie mensagens do AWS IoT Core para dispositivos clientes. | Na página do cliente de MQTT teste, na guia Publicar em um tópico, no campo Nome do tópico, insira o nome do tópico da sua mensagem. Neste exemplo, use | Geral AWS |
Solução de problemas
Problema | Solução |
---|---|
Não foi possível verificar o erro do certificado do servidor | Esse erro ocorre quando o MQTT cliente não consegue verificar o certificado apresentado pelo MQTT corretor durante o TLS handshake. O motivo mais comum é que o MQTT cliente não tem o certificado CA. Siga estas etapas para garantir que o certificado CA seja fornecido ao MQTT cliente.
|
Não foi possível verificar o erro do nome do servidor | Esses erros ocorrem quando o MQTT cliente não consegue verificar se está se conectando ao servidor correto. O motivo mais comum é que o endereço IP do dispositivo Greengrass não está listado no SAN campo do certificado. Siga as instruções na solução anterior para obter o certificado do MQTT agente e verificar se o SAN campo contém o endereço IP do dispositivo AWS IoT Greengrass, conforme explicado na seção Informações adicionais. Caso contrário, confirme se o componente do detector de IP está instalado corretamente e reinicie o dispositivo principal. |
Não é possível verificar o nome do servidor somente ao se conectar a partir de um dispositivo cliente incorporado | A MbedTLS, que é uma TLS biblioteca popular usada em dispositivos embarcados, atualmente oferece suporte à verificação de DNS nome somente no SAN campo do certificado, conforme mostrado no código da TLS biblioteca Mbed. Como o dispositivo principal não tem seu próprio nome de domínio e depende do endereço IP, os TLS clientes que usam o Mbed TLS falharão na verificação do nome do servidor durante o TLS handshake, causando uma falha na conexão. Recomendamos que você adicione a verificação do endereço SAN IP à sua TLS biblioteca Mbed na função x509_crt_check_san |
Recursos relacionados
Implementando dispositivos clientes locais com o AWS IoT Greengrass
(postagem no blog) AWS
Mais informações
Esta seção fornece informações adicionais sobre as comunicações entre os dispositivos clientes e o dispositivo principal.
O MQTT agente escuta na porta 8883 do dispositivo principal uma tentativa de conexão com TLS o cliente. A ilustração a seguir mostra um exemplo de certificado de servidor do MQTT broker.
O exemplo de certificado exibe os seguintes detalhes:
O certificado é emitido pela CA do AWS IoT Greengrass Core, que é local e específica para o dispositivo principal; ou seja, ela atua como uma CA local.
Esse certificado é alternado automaticamente toda semana pelo componente de autenticação do cliente, conforme mostrado na ilustração a seguir. Você pode definir esse intervalo na configuração do componente de autenticação do cliente.
O nome alternativo do assunto (SAN) desempenha um papel fundamental na verificação do nome do servidor no lado TLS do cliente. Isso ajuda o TLS cliente a garantir que ele se conecte ao servidor correto e ajuda a evitar ataques man-in-the intermediários durante a configuração TLS da sessão. No exemplo de certificado, o SAN campo indica que esse servidor está escutando no localhost (o soquete de domínio Unix local) e que a interface de rede tem o endereço IP 192.168.1.12.
O TLS cliente usa o SAN campo no certificado para verificar se está se conectando a um servidor legítimo durante a verificação do servidor. Por outro lado, durante um TLS aperto de mão típico entre um HTTP servidor e um navegador, o nome de domínio no campo ou SAN campo nome comum (CN) é usado para verificar o domínio ao qual o navegador está realmente se conectando durante o processo de verificação do servidor. Se o dispositivo principal não tiver um nome de domínio, o endereço IP incluído no SAN campo tem a mesma finalidade. Para obter mais informações, consulte a seção Nome alternativo do assunto
O componente detector de IP no AWS IoT Greengrass garante que os endereços IP corretos sejam incluídos no SAN campo do certificado.
O certificado no exemplo é assinado pelo dispositivo AWS IoT Greengrass que atua como uma CA local. O TLS cliente (MQTTcliente) não está ciente dessa CA, portanto, devemos fornecer um certificado de CA semelhante ao seguinte.