Conecte dispositivos cliente aos dispositivos principais - AWS IoT Greengrass

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á.

Conecte dispositivos cliente aos dispositivos principais

Você pode configurar a descoberta na nuvem para conectar dispositivos cliente aos dispositivos principais. Quando você configura a descoberta na nuvem, os dispositivos cliente podem se conectar ao serviço de AWS IoT Greengrass nuvem para recuperar informações sobre os dispositivos principais aos quais eles podem se conectar. Em seguida, os dispositivos cliente podem tentar se conectar a cada dispositivo principal até que se conectem com sucesso.

Para usar a descoberta na nuvem, você deve fazer o seguinte:

  • Associe dispositivos clientes aos dispositivos principais aos quais eles podem se conectar.

  • Especifique os endpoints do agente MQTT nos quais os dispositivos cliente podem se conectar a cada dispositivo principal.

  • Implante componentes no dispositivo principal que permitam o suporte para dispositivos clientes.

    Você também pode implantar componentes opcionais para fazer o seguinte:

    • Retransmita mensagens entre dispositivos cliente, componentes do Greengrass e AWS IoT Core o serviço de nuvem.

    • Gerencie automaticamente os endpoints do broker MQTT do dispositivo principal para você.

    • Gerencie as sombras do dispositivo cliente local e sincronize as sombras com o AWS IoT Core serviço de nuvem.

Você também deve revisar e atualizar a AWS IoT política do dispositivo principal para verificar se ele tem as permissões necessárias para conectar dispositivos clientes. Para ter mais informações, consulte Requisitos.

Depois de configurar a descoberta na nuvem, você pode testar as comunicações entre um dispositivo cliente e um dispositivo principal. Para ter mais informações, consulte Teste as comunicações entre dispositivos clientes.

Requisitos

Para conectar dispositivos cliente a um dispositivo principal, você deve ter o seguinte:

Configurar a função de serviço do Greengrass

perfil de serviçoO perfil de serviço do Greengrass é um perfil de serviço do (IAM) AWS Identity and Access Management que autoriza o AWS IoT Greengrass a acessar recursos de serviços da AWS em seu nome. Essa função possibilita verificar AWS IoT Greengrass a identidade dos dispositivos clientes e gerenciar as principais informações de conectividade do dispositivo.

Se você ainda não configurou a função de serviço do Greengrass nesta região, você deve associar uma função de serviço do Greengrass AWS IoT Greengrass à sua Conta da AWS nesta região.

Ao usar a página Configure Core Device Discovery no AWS IoT Greengrassconsole, AWS IoT Greengrass configura a função de serviço do Greengrass para você. Caso contrário, você pode configurá-lo manualmente usando o AWS IoTconsole ou a AWS IoT Greengrass API.

Nesta seção, você verifica se a função de serviço do Greengrass está configurada. Se não estiver configurado, você cria uma nova função de serviço do Greengrass para se AWS IoT Greengrass associar à sua Conta da AWS nesta região.

  1. Verifique se a função de serviço do Greengrass está associada AWS IoT Greengrass à sua Conta da AWS nesta região. Faça o seguinte:

    1. Navegue até o console do AWS IoT.

    2. No painel de navegação, selecione Configurações.

    3. Na seção Função de serviço do Greengrass, encontre Função de serviço atual para ver se uma função de serviço do Greengrass está associada.

      Se você tiver uma função de serviço do Greengrass associada, você atende a esse requisito para usar o componente detector de IP. Vá para Configure a política da AWS IoT coisa.

  2. Se a função de serviço do Greengrass não estiver associada AWS IoT Greengrass à sua Conta da AWS nesta região, crie uma função de serviço do Greengrass e associe-a. Faça o seguinte:

    1. Navegue até o console do IAM.

    2. Escolha Roles.

    3. Selecione Criar perfil.

    4. Na página Criar função, faça o seguinte:

      1. Em Tipo de entidade confiável, escolha AWS service (Serviço da AWS).

      2. Em Caso de uso, Casos de uso para outros Serviços da AWS, escolha Greengrass, selecione Greengrass. Essa opção especifica a adição AWS IoT Greengrass como uma entidade confiável que pode assumir essa função.

      3. Escolha Próximo.

      4. Em Políticas de permissões, selecione a AWSGreengrassResourceAccessRolePolicypara anexar à função.

      5. Escolha Próximo.

      6. Em Nome da função, insira um nome para a função, comoGreengrass_ServiceRole.

      7. Selecione Criar perfil.

    5. Navegue até o console do AWS IoT.

    6. No painel de navegação, selecione Configurações.

    7. Na seção Função de serviço do Greengrass, escolha Anexar função.

    8. No modal Atualizar função de serviço do Greengrass, selecione a função do IAM que você criou e, em seguida, escolha Anexar função.

  1. Verifique se a função de serviço do Greengrass está associada AWS IoT Greengrass à sua Conta da AWS nesta região.

    aws greengrassv2 get-service-role-for-account

    Se a função de serviço do Greengrass estiver associada, a operação retornará uma resposta que contém informações sobre a função.

    Se você tiver uma função de serviço do Greengrass associada, você atende a esse requisito para usar o componente detector de IP. Vá para Configure a política da AWS IoT coisa.

  2. Se a função de serviço do Greengrass não estiver associada AWS IoT Greengrass à sua Conta da AWS nesta região, crie uma função de serviço do Greengrass e associe-a. Faça o seguinte:

    1. Crie uma função com uma política de confiança que permita que o AWS IoT Greengrass assuma a função. Este exemplo cria uma função chamada Greengrass_ServiceRole, mas você pode usar um nome diferente. Recomendamos que você também inclua as chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em sua política de confiança para ajudar a evitar o problema de segurança confused deputy. As chaves de contexto de condição restringem o acesso para permitir somente as solicitações provenientes da conta especificada e do espaço de trabalho do Greengrass. Para obter mais informações sobre o problema confused deputy, consulte Prevenção do problema do substituto confuso entre serviços.

      Linux or Unix
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }'
      Windows Command Prompt (CMD)
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\\"Version\\":\\"2012-10-17\\",\\"Statement\\":[{\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"greengrass.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\",\\"Condition\\":{\\"ArnLike\\":{\\"aws:SourceArn\\":\\"arn:aws:greengrass:region:account-id:*\\"},\\"StringEquals\\":{\\"aws:SourceAccount\\":\\"account-id\\"}}}]}"
      PowerShell
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }'
    2. Copie o ARN da função dos metadados da função na saída. Você usará o ARN para associar a função à sua conta.

    3. Anexe a política do AWSGreengrassResourceAccessRolePolicy à função.

      aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
    4. Associe a função de serviço do Greengrass com AWS IoT Greengrass for your. Conta da AWS Substitua role-arn pelo ARN da função de serviço.

      aws greengrassv2 associate-service-role-to-account --role-arn role-arn

      A operação retornará a seguinte resposta se for bem-sucedida.

      { "associatedAt": "timestamp" }

Configure a política da AWS IoT coisa

Os dispositivos principais usam certificados de dispositivo X.509 para autorizar conexões com o. AWS Você anexa AWS IoT políticas aos certificados do dispositivo para definir as permissões para um dispositivo principal. Para obter mais informações, consulte AWS IoTPolítica mínima para oferecer suporte aos dispositivos do cliente e Políticas do AWS IoT para operações de plano de dados.

Para conectar dispositivos cliente a um dispositivo principal, a AWS IoT política do dispositivo principal deve permitir as seguintes permissões:

Nesta seção, você revisa as AWS IoT políticas do seu dispositivo principal e adiciona as permissões necessárias que estão faltando. Se você usou o instalador de software AWS IoT Greengrass Core para provisionar recursos, seu dispositivo principal tem uma AWS IoT política que permite acesso a todas as AWS IoT Greengrass ações (greengrass:*). Nesse caso, você deve atualizar a AWS IoT política somente se planeja implantar o componente do gerenciador de sombras para sincronizar as sombras do dispositivo. AWS IoT Core Caso contrário, você pode pular esta seção.

  1. No menu de navegação AWS IoT Greengrassdo console, escolha Dispositivos principais.

  2. Na página Dispositivos principais, escolha o dispositivo principal a ser atualizado.

  3. Na página de detalhes do dispositivo principal, escolha o link para o item do dispositivo principal. Esse link abre a página de detalhes do item no AWS IoT console.

  4. Na página de detalhes do item, escolha Certificados.

  5. Na guia Certificados, escolha o certificado ativo do item.

  6. Na página de detalhes do certificado, escolha Políticas.

  7. Na guia Políticas, escolha a AWS IoT política a ser revisada e atualizada. Você pode adicionar as permissões necessárias a qualquer política anexada ao certificado ativo do dispositivo principal.

    nota

    Se você usou o instalador de software AWS IoT Greengrass Core para provisionar recursos, você tem duas AWS IoT políticas. Recomendamos que você escolha a política nomeada GreengrassV2IoTThingPolicy, se ela existir. Os dispositivos principais que você cria com o instalador rápido usam esse nome de política por padrão. Se você adicionar permissões a essa política, também estará concedendo essas permissões a outros dispositivos principais que usam essa política.

  8. Na visão geral da política, escolha Editar versão ativa.

  9. Revise a política para obter as permissões necessárias e adicione as permissões necessárias que estejam faltando.

  10. (Opcional) Para permitir que o dispositivo principal sincronize sombras comAWS IoT Core, adicione a seguinte declaração à política. Se você planeja interagir com as sombras do dispositivo cliente, mas não sincronizá-las com elasAWS IoT Core, pule esta etapa. Substitua a região e o ID da conta pela região que você usa e pelo seu Conta da AWS número.

    • Esse exemplo de declaração permite o acesso às sombras do dispositivo de todas as coisas. Para seguir as melhores práticas de segurança, você pode restringir o acesso somente ao dispositivo principal e aos dispositivos cliente conectados ao dispositivo principal. Para ter mais informações, consulte AWS IoTPolítica mínima para oferecer suporte aos dispositivos do cliente.

    { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] }

    Depois de adicionar essa declaração, o documento de política pode ser semelhante ao exemplo a seguir.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "greengrass:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] } ] }
  11. Para definir uma nova versão da política como a versão ativa, em Status da versão da política, selecione Definir a versão editada como a versão ativa desta política.

  12. Selecione Salvar como nova versão.

  1. Liste os princípios básicos do AWS IoT dispositivo principal. Os principais podem ser certificados de dispositivos X.509 ou outros identificadores. Execute o comando a seguir e MyGreengrassCoresubstitua pelo nome do dispositivo principal.

    aws iot list-thing-principals --thing-name MyGreengrassCore

    A operação retorna uma resposta que lista os princípios básicos do dispositivo principal.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. Identifique o certificado ativo do dispositivo principal. Execute o comando a seguir e substitua o CertificateID pelo ID de cada certificado da etapa anterior até encontrar o certificado ativo. O ID do certificado é a string hexadecimal no final do ARN do certificado. O --query argumento especifica a saída somente do status do certificado.

    aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'

    A operação retorna o status do certificado como uma string. Por exemplo, se o certificado estiver ativo, essa operação será exibida. "ACTIVE"

  3. Liste as AWS IoT políticas anexadas ao certificado. Execute o comando a seguir e substitua o ARN do certificado pelo ARN do certificado.

    aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId

    A operação retorna uma resposta que lista as AWS IoT políticas anexadas ao certificado.

    { "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
  4. Escolha a política a ser visualizada e atualizada.

    nota

    Se você usou o instalador de software AWS IoT Greengrass Core para provisionar recursos, você tem duas AWS IoT políticas. Recomendamos que você escolha a política nomeada GreengrassV2IoTThingPolicy, se ela existir. Os dispositivos principais que você cria com o instalador rápido usam esse nome de política por padrão. Se você adicionar permissões a essa política, também estará concedendo essas permissões a outros dispositivos principais que usam essa política.

  5. Obtenha o documento da política. Execute o comando a seguir e substitua GreengrassV2IoT ThingPolicy pelo nome da política.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    A operação retorna uma resposta que contém o documento da política e outras informações sobre a política. O documento de política é um objeto JSON serializado como uma string.

    { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\"iot:Connect\\",\ \\"iot:Publish\\",\ \\"iot:Subscribe\\",\ \\"iot:Receive\\",\ \\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
  6. Use um conversor on-line ou outra ferramenta para converter a string do documento de política em um objeto JSON e, em seguida, salve-a em um arquivo chamadoiot-policy.json.

    Por exemplo, se você tiver a ferramenta jq instalada, poderá executar o comando a seguir para obter o documento de política, convertê-lo em um objeto JSON e salvá-lo como um objeto JSON.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. Revise a política para obter as permissões necessárias e adicione as permissões necessárias que estejam faltando.

    Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para abrir o arquivo.

    nano iot-policy.json
  8. Salve as alterações como uma nova versão da política. Execute o comando a seguir e substitua GreengrassV2IoT ThingPolicy pelo nome da política.

    aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default

    Se for bem-sucedida, a operação retornará uma resposta semelhante à do exemplo a seguir.

    { "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\t\\t\\"iot:Connect\\",\ \\t\\t\\"iot:Publish\\",\ \\t\\t\\"iot:Subscribe\\",\ \\t\\t\\"iot:Receive\\",\ \\t\\t\\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "policyVersionId": "2", "isDefaultVersion": true }

Componentes do Greengrass para suporte a dispositivos clientes

Importante

O dispositivo principal deve executar o Greengrass nucleus v2.2.0 ou posterior para oferecer suporte aos dispositivos clientes.

Para permitir que dispositivos cliente se conectem e se comuniquem com um dispositivo principal, você implanta os seguintes componentes do Greengrass no dispositivo principal:

  • Autenticação do dispositivo cliente (aws.greengrass.clientdevices.Auth)

    Implante o componente de autenticação do dispositivo cliente para autenticar dispositivos cliente e autorizar ações do dispositivo cliente. Esse componente permite que suas AWS IoT coisas se conectem a um dispositivo principal.

    Esse componente requer alguma configuração para ser usado. Você deve especificar grupos de dispositivos clientes e as operações que cada grupo está autorizado a realizar, como se conectar e se comunicar pelo MQTT. Para obter mais informações, consulte Configuração do componente de autenticação do dispositivo cliente.

  • Corretor MQTT 3.1.1 (Moquette) (aws.greengrass.clientdevices.mqtt.Moquette)

    Implante o componente Moquette MQTT broker para executar um broker MQTT leve. O agente Moquette MQTT é compatível com o MQTT 3.1.1 e inclui suporte local para QoS 0, QoS 1, QoS 2, mensagens retidas, mensagens de última vontade e assinaturas persistentes.

    Você não precisa configurar esse componente para usá-lo. No entanto, você pode configurar a porta em que esse componente opera o agente MQTT. Por padrão, ele usa a porta 8883.

  • Corretora MQTT 5 (EMQX) (aws.greengrass.clientdevices.mqtt.EMQX)

    nota

    Para usar o agente EMQX MQTT 5, você deve usar o Greengrass nucleus v2.6.0 ou posterior e a autenticação do dispositivo cliente v2.2.0 ou posterior.

    Implante o componente EMQX MQTT broker para usar os recursos do MQTT 5.0 na comunicação entre dispositivos cliente e o dispositivo principal. O broker EMQX MQTT é compatível com o MQTT 5.0 e inclui suporte para intervalos de expiração de sessões e mensagens, propriedades do usuário, assinaturas compartilhadas, aliases de tópicos e muito mais.

    Você não precisa configurar esse componente para usá-lo. No entanto, você pode configurar a porta em que esse componente opera o agente MQTT. Por padrão, ele usa a porta 8883.

  • Ponte MQTT (aws.greengrass.clientdevices.mqtt.Bridge)

    (Opcional) Implante o componente de ponte MQTT para retransmitir mensagens entre dispositivos cliente (MQTT local), publicação/assinatura local e MQTT. AWS IoT Core Configure esse componente para sincronizar dispositivos cliente AWS IoT Core e interagir com dispositivos clientes a partir dos componentes do Greengrass.

    Esse componente requer configuração para ser usado. Você deve especificar os mapeamentos de tópicos em que esse componente retransmite mensagens. Para obter mais informações, consulte Configuração do componente de ponte MQTT.

  • Detector IP (aws.greengrass.clientdevices.IPDetector)

    (Opcional) Implante o componente detector de IP para reportar automaticamente os endpoints do broker MQTT do dispositivo principal ao serviço de AWS IoT Greengrass nuvem. Você não pode usar esse componente se tiver uma configuração de rede complexa, como aquela em que um roteador encaminha a porta do agente MQTT para o dispositivo principal.

    Você não precisa configurar esse componente para usá-lo.

  • Gerenciador de sombras (aws.greengrass.ShadowManager)

    (Opcional) Implante o componente do gerenciador de sombras para gerenciar as sombras do dispositivo cliente no dispositivo principal. Os componentes do Greengrass podem obter, atualizar e excluir sombras do dispositivo cliente para interagir com os dispositivos do cliente. Você também pode configurar o componente do gerenciador de sombras para sincronizar as sombras do dispositivo cliente com o serviço de AWS IoT Core nuvem.

    Para usar esse componente com sombras do dispositivo cliente, você deve configurar o componente de ponte MQTT para retransmitir mensagens entre dispositivos cliente e o gerenciador de sombras, que usa publicação/assinatura local. Caso contrário, esse componente não exige configuração para ser usado, mas exige configuração para sincronizar as sombras do dispositivo.

nota

Recomendamos que você implante somente um componente do broker MQTT. A ponte MQTT e os componentes do detector IP funcionam com apenas um componente intermediário MQTT por vez. Se você implantar vários componentes do MQTT broker, deverá configurá-los para usar portas diferentes.

Configurar a descoberta na nuvem (console)

Você pode usar o AWS IoT Greengrass console para associar dispositivos cliente, gerenciar endpoints do dispositivo principal e implantar componentes para habilitar o suporte ao dispositivo cliente. Para ter mais informações, consulte Etapa 2: ativar o suporte ao dispositivo cliente.

Configurar a descoberta na nuvem (AWS CLI)

Você pode usar o AWS Command Line Interface (AWS CLI) para associar dispositivos cliente, gerenciar endpoints principais do dispositivo e implantar componentes para habilitar o suporte ao dispositivo cliente. Para ver mais informações, consulte: