

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
<a name="connect-client-devices"></a>

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 clientes 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 suporte a 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 agente MQTT do dispositivo principal.
  + 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 obter mais informações, consulte [Requisitos](#connect-client-devices-requirements).

Depois de configurar a descoberta na nuvem, você pode testar as comunicações entre um dispositivo cliente e um dispositivo principal. Para obter mais informações, consulte [Testar a comunicação entre os dispositivos cliente](test-client-device-communications.md).

**Topics**
+ [Requisitos](#connect-client-devices-requirements)
+ [Componentes do Greengrass para suporte a dispositivos cliente](#cloud-discovery-components)
+ [Configurar a descoberta na nuvem (console)](#configure-cloud-discovery-console)
+ [Configurar a descoberta na nuvem (AWS CLI)](#configure-cloud-discovery-cli)
+ [Associar dispositivos cliente](associate-client-devices.md)
+ [Autenticar clientes enquanto estiver off-line](offline-authentication.md)
+ [Gerenciar endpoints do dispositivo principal do](manage-core-device-endpoints.md)
+ [Escolher um agente MQTT](choose-local-mqtt-broker.md)
+ [Conectando dispositivos cliente a um dispositivo AWS IoT Greengrass Core com um corretor MQTT](connecting-to-mqtt.md)
+ [Testar a comunicação entre os dispositivos cliente](test-client-device-communications.md)
+ [API de descoberta do Greengrass RESTful](greengrass-discover-api.md)

## Requisitos
<a name="connect-client-devices-requirements"></a>

Para conectar dispositivos cliente a um dispositivo principal, você deve ter o seguinte:
+ O dispositivo principal deve executar a versão 2.2.0 ou posterior do [núcleo do Greengrass](greengrass-nucleus-component.md).
+ A função de serviço do Greengrass associada AWS IoT Greengrass a você Conta da AWS na AWS região em que o dispositivo principal opera. Para obter mais informações, consulte [Configurar o perfil de serviço do Greengrass](#configure-service-role-requirement).
+ A AWS IoT política do dispositivo principal deve permitir as seguintes permissões:<a name="core-device-iot-policy-client-device-permissions"></a>
  + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
  + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
  + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
  + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
  + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opcional) Essa permissão é necessária para usar o [componente detector de IP](ip-detector-component.md), que reporta as informações de conectividade de rede do dispositivo principal ao serviço de AWS IoT Greengrass nuvem.
  + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, e `iot:DeleteThingShadow` — (Opcional) Essas permissões são necessárias para usar o [componente gerenciador de sombras](shadow-manager-component.md) para sincronizar as sombras do dispositivo cliente. AWS IoT Core Esse atributo requer o [núcleo do Greengrass](greengrass-nucleus-component.md) v2.6.0 ou posterior, o gerenciador de sombras v2.2.0 ou posterior e a [ponte MQTT](mqtt-bridge-component.md) v2.2.0 ou posterior.

  Para obter mais informações, consulte [Configure a política da AWS IoT coisa](#configure-iot-policy-requirement).
**nota**  
Se você usou a AWS IoT política padrão ao [instalar o software AWS IoT Greengrass Core](install-greengrass-core-v2.md), o dispositivo principal tem uma AWS IoT política que permite acesso a todas as AWS IoT Greengrass ações (`greengrass:*`).
+ AWS IoT coisas que você pode conectar como dispositivos clientes. Para obter mais informações, consulte [Criar recursos da AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html) no *Guia do desenvolvedor do AWS IoT Core *.
+ O dispositivo cliente deve se conectar usando um ID de cliente. Um ID de cliente é um nome de um objeto. Nenhum outro ID de cliente será aceito.
+ A AWS IoT política de cada dispositivo cliente deve permitir a `greengrass:Discover` permissão. Para obter mais informações, consulte [AWS IoT Política mínima para dispositivos clientes](device-auth.md#client-device-minimal-iot-policy).

**Topics**
+ [Configurar o perfil de serviço do Greengrass](#configure-service-role-requirement)
+ [Configure a política da AWS IoT coisa](#configure-iot-policy-requirement)

### Configurar o perfil de serviço do Greengrass
<a name="configure-service-role-requirement"></a>

<a name="greengrass-service-role-intro"></a>A função de serviço do Greengrass é uma função de serviço AWS Identity and Access Management (IAM) que AWS IoT Greengrass autoriza o acesso a recursos de AWS serviços 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](greengrass-service-role.md) 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 **Configurar descoberta de dispositivos principais** no [AWS IoT Greengrass console](https://console.aws.amazon.com/greengrass), 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 IoT console](https://console.aws.amazon.com/iot) ou a AWS IoT Greengrass API.

Nesta seção, você verifica se o perfil de serviço do Greengrass está configurado. 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.

#### Configurar o perfil de serviço do Greengrass (console)
<a name="configure-service-role-requirement-console"></a>

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. <a name="open-iot-console"></a>Navegue até o [console do AWS IoT](https://console.aws.amazon.com/iot).

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

   1. Na seção **Perfil de serviço do Greengrass**, encontre **Perfil de serviço atual** para ver se um perfil de serviço do Greengrass está associado.

      Se você tiver um perfil de serviço do Greengrass associado, você atende a esse requisito para usar o componente detector de IP. Vá para [Configure a política da AWS IoT coisa](#configure-iot-policy-requirement).

1. 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](https://console.aws.amazon.com/iam).

   1. Escolha **Roles**.

   1. Selecione **Criar perfil**.

   1. Na página **Criar perfil**, faça o seguinte:

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

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

      1. Escolha **Próximo**.

      1. Em **Políticas de permissões**, selecione **AWSGreengrassResourceAccessRolePolicy** para anexar ao perfil.

      1. Escolha **Próximo**.

      1. Em **Nome do perfil**, insira um nome exclusivo para o perfil, como **Greengrass\_ServiceRole**.

      1. Selecione **Criar perfil**.

   1. <a name="open-iot-console"></a>Navegue até o [console do AWS IoT](https://console.aws.amazon.com/iot).

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

   1. Na seção **Perfil de serviço do Greengrass**, escolha **Anexar perfil**.

   1. No modal **Atualizar perfil de serviço do Greengrass**, selecione o perfil do IAM que você criou e escolha **Anexar perfil**.

#### Configurar o perfil de serviço do Greengrass (AWS CLI)
<a name="configure-service-role-requirement-cli"></a>

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 o perfil de serviço do Greengrass estiver associado, a operação retornará uma resposta que contém informações sobre o perfil.

   Se você tiver um perfil de serviço do Greengrass associado, você atende a esse requisito para usar o componente detector de IP. Vá para [Configure a política da AWS IoT coisa](#configure-iot-policy-requirement).

1. 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. <a name="create-greengrass-service-role-step-create-role"></a>Crie uma função com uma política de confiança que AWS IoT Greengrass permita assumir 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 contra o ataque do “substituto confuso” em todos os serviços](cross-service-confused-deputy-prevention.md).

------
#### [ 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}}"
              }
            }
          }
        ]
      }'
      ```

------

   1. <a name="create-greengrass-service-role-step-copy-role-arn"></a>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.

   1. <a name="create-greengrass-service-role-step-attach-policy"></a>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
      ```

   1. Associe a função de serviço do Greengrass com AWS IoT Greengrass for your. Conta da AWS{{role-arn}}Substitua pelo ARN da função de serviço.

      ```
      aws greengrassv2 associate-service-role-to-account --role-arn {{role-arn}}
      ```

      Se for bem-sucedida, a operação retornará um resultado semelhante ao seguinte exemplo.

      ```
      {
        "associatedAt": "{{timestamp}}"
      }
      ```

### Configure a política da AWS IoT coisa
<a name="configure-iot-policy-requirement"></a>

Os dispositivos principais usam certificados de dispositivo X.509 para autorizar conexões com a AWS. Você anexa políticas de AWS IoT aos certificados do dispositivo para definir as permissões para um dispositivo principal. Para obter mais informações, consulte [AWS IoT políticas para operações de plano de dados](device-auth.md#iot-policies) e [AWS IoT Política mínima para oferecer suporte aos dispositivos do cliente](device-auth.md#client-device-support-minimal-iot-policy).

Para conectar dispositivos cliente a um dispositivo principal, a AWS IoT política do dispositivo principal deve permitir as seguintes permissões:<a name="core-device-iot-policy-client-device-permissions"></a>
+ <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
+ <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
+ <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
+ <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
+ <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opcional) Essa permissão é necessária para usar o [componente detector de IP](ip-detector-component.md), que reporta as informações de conectividade de rede do dispositivo principal ao serviço de AWS IoT Greengrass nuvem.
+ <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, e `iot:DeleteThingShadow` — (Opcional) Essas permissões são necessárias para usar o [componente gerenciador de sombras](shadow-manager-component.md) para sincronizar as sombras do dispositivo cliente. AWS IoT Core Esse atributo requer o [núcleo do Greengrass](greengrass-nucleus-component.md) v2.6.0 ou posterior, o gerenciador de sombras v2.2.0 ou posterior e a [ponte MQTT](mqtt-bridge-component.md) v2.2.0 ou posterior.

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](quick-installation.md), 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.

#### Configurar a política da AWS IoT coisa (console)
<a name="configure-iot-policy-requirement-console"></a>

1. <a name="update-iot-policy-console-open-greengrass-console"></a>No menu de navegação do [console do AWS IoT Greengrass](https://console.aws.amazon.com/greengrass), selecione **Dispositivos principais**.

1. <a name="update-iot-policy-console-choose-core-device"></a>Na página **Dispositivos principais**, escolha o dispositivo principal a ser atualizado.

1. <a name="update-iot-policy-console-choose-core-device-thing"></a>Na página de detalhes do dispositivo principal, escolha o link para o **Objeto** do dispositivo principal. Esse link abre a página de detalhes do objeto no console da AWS IoT .

1. <a name="update-iot-policy-console-choose-thing-security"></a>Na página de detalhes do objeto, escolha **Certificados**.

1. <a name="update-iot-policy-console-choose-thing-certificate"></a>Na guia **Certificados**, escolha o certificado ativo do objeto.

1. <a name="update-iot-policy-console-choose-certificate-policies"></a>Na página de detalhes do certificado, escolha **Políticas**.

1. <a name="update-iot-policy-console-choose-policy"></a>Na guia **Políticas**, escolha a AWS IoT política a ser revisada e atualizada. É possível adicionar as permissões necessárias a toda política anexada ao certificado ativo do dispositivo principal.
**nota**  <a name="quick-installation-iot-policies-note"></a>
Se você usou o [instalador de software AWS IoT Greengrass Core para provisionar recursos](quick-installation.md), você tem duas AWS IoT políticas. Recomendamos que você escolha a política com o nome **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.

1. <a name="update-iot-policy-console-edit-policy"></a>Na visão geral da política, escolha **Editar versão ativa**.

1. Revise a política quanto às permissões necessárias e adicione as permissões necessárias que estiverem faltando.<a name="core-device-iot-policy-client-device-permissions"></a>
   + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
   + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
   + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opcional) Essa permissão é necessária para usar o [componente detector de IP](ip-detector-component.md), que reporta as informações de conectividade de rede do dispositivo principal ao serviço de AWS IoT Greengrass nuvem.
   + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, e `iot:DeleteThingShadow` — (Opcional) Essas permissões são necessárias para usar o [componente gerenciador de sombras](shadow-manager-component.md) para sincronizar as sombras do dispositivo cliente. AWS IoT Core Esse atributo requer o [núcleo do Greengrass](greengrass-nucleus-component.md) v2.6.0 ou posterior, o gerenciador de sombras v2.2.0 ou posterior e a [ponte MQTT](mqtt-bridge-component.md) v2.2.0 ou posterior.

1. (Opcional) Para permitir que o dispositivo principal sincronize sombras com AWS IoT Core, adicione a seguinte declaração à política. Se você planeja interagir com as sombras do dispositivo cliente, mas não sincronizá-las AWS IoT Core, pule esta etapa. {{account-id}}Substitua {{region}} e pela região que você usa e seu Conta da AWS número.
   + Esse exemplo de declaração permite o acesso às sombras do dispositivo de todos os objetos. Para seguir as práticas recomendadas de segurança, você pode restringir o acesso somente ao dispositivo principal e aos dispositivos cliente conectados a ele. Para obter mais informações, consulte [AWS IoT Política mínima para oferecer suporte aos dispositivos do cliente](device-auth.md#client-device-support-minimal-iot-policy).

   ```
   {
     "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 será semelhante ao exemplo a seguir.

------
#### [ JSON ]

****  

   ```
   {
     "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:{{us-east-1}}:{{123456789012}}:thing/*"
         ]
       }
     ]
   }
   ```

------

1. <a name="update-iot-policy-console-set-as-active-version"></a>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**.

1. <a name="update-iot-policy-console-save-policy"></a>Selecione **Salvar como nova versão**.

#### Configurar a política da AWS IoT coisa (AWS CLI)
<a name="configure-iot-policy-requirement-cli"></a>

1. <a name="update-iot-policy-cli-list-thing-principals"></a>Liste os princípios básicos do AWS IoT dispositivo principal. As entidades principais do objeto podem ser certificados de dispositivos X.509 ou outros identificadores. Execute o comando a seguir e {{MyGreengrassCore}} substitua 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}}"
       ]
   }
   ```

1. <a name="update-iot-policy-cli-identify-active-certificate"></a>Identifique o certificado ativo do dispositivo principal. Execute o comando a seguir e {{certificateId}} substitua 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 argumento `--query` 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 resulta `"ACTIVE"`.

1. <a name="update-iot-policy-cli-list-certificate-policies"></a>Liste as AWS IoT políticas anexadas ao certificado. Execute o comando a seguir e substitua o ARN do certificado pelo outro.

   ```
   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"
           }
       ]
   }
   ```

1. <a name="update-iot-policy-cli-choose-policy"></a>Escolha a política a ser visualizada e atualizada.
**nota**  <a name="quick-installation-iot-policies-note"></a>
Se você usou o [instalador de software AWS IoT Greengrass Core para provisionar recursos](quick-installation.md), você tem duas AWS IoT políticas. Recomendamos que você escolha a política com o nome **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.

1. <a name="update-iot-policy-cli-get-policy-document"></a>Obtenha o documento da política. Execute o comando a seguir e {{GreengrassV2IoTThingPolicy}} substitua pelo nome da política.

   ```
   aws iot get-policy --policy-name {{GreengrassV2IoTThingPolicy}}
   ```

   A operação retorna uma resposta contendo 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"
   }
   ```

1. <a name="update-iot-policy-cli-create-policy-document-file"></a>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 chamado `iot-policy.json`.

   Por exemplo, se você tiver a ferramenta [jq](https://stedolan.github.io/jq/) instalada, poderá executar o comando a seguir para ter 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
   ```

1. Revise a política quanto às permissões necessárias e adicione as que estiverem faltando.

   <a name="nano-command-intro-existing-file"></a>Por exemplo, em um sistema baseado em Linux, você pode executar o comando a seguir para usar o GNU nano para abrir o arquivo.

   ```
   nano iot-policy.json
   ```<a name="core-device-iot-policy-client-device-permissions"></a>
   + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
   + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
   + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opcional) Essa permissão é necessária para usar o [componente detector de IP](ip-detector-component.md), que reporta as informações de conectividade de rede do dispositivo principal ao serviço de AWS IoT Greengrass nuvem.
   + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, e `iot:DeleteThingShadow` — (Opcional) Essas permissões são necessárias para usar o [componente gerenciador de sombras](shadow-manager-component.md) para sincronizar as sombras do dispositivo cliente. AWS IoT Core Esse atributo requer o [núcleo do Greengrass](greengrass-nucleus-component.md) v2.6.0 ou posterior, o gerenciador de sombras v2.2.0 ou posterior e a [ponte MQTT](mqtt-bridge-component.md) v2.2.0 ou posterior.

1. <a name="update-iot-policy-cli-create-policy-version"></a>Salve as alterações como uma nova versão da política. Execute o comando a seguir e {{GreengrassV2IoTThingPolicy}} substitua pelo nome da política.

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

   A operação retornará uma resposta semelhante ao seguinte exemplo, se for bem-sucedida.

   ```
   {
       "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 cliente
<a name="cloud-discovery-components"></a>

**Importante**  <a name="client-device-support-nucleus-requirement"></a>
O dispositivo principal deve executar a versão 2.2.0 ou posterior do [núcleo do Greengrass](greengrass-nucleus-component.md) para dar suporte aos dispositivos cliente.

Para permitir que dispositivos cliente se conectem e se comuniquem com um dispositivo principal, implante os seguintes componentes do Greengrass no dispositivo principal:
+ <a name="client-device-component-overview-client-device-auth"></a>[Autenticação do dispositivo cliente](client-device-auth-component.md) (`aws.greengrass.clientdevices.Auth`)

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

  Esse componente requer algumas configurações para ser usado. É necessário especificar grupos de dispositivos cliente 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 a [configuração do componente de autenticação do dispositivo cliente](client-device-auth-component.md#client-device-auth-component-configuration).
+ <a name="client-device-component-overview-mqtt-broker-moquette"></a>[Agente MQTT 3.1.1 (Moquette)](mqtt-broker-moquette-component.md) (`aws.greengrass.clientdevices.mqtt.Moquette`)

  Implante o componente do agente Moquette MQTT para executar um agente 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 último testamento e assinaturas persistentes.

  Não é necessário configurar esse componente para usá-lo. No entanto, você pode configurar a porta na qual esse componente opera o agente MQTT. Por padrão, ele usa a porta 8883.
+ <a name="client-device-component-overview-mqtt-broker-emqx"></a>[Agente MQTT 5 (EMQX)](mqtt-broker-emqx-component.md) (`aws.greengrass.clientdevices.mqtt.EMQX`)
**nota**  
Para usar o agente MQTT 5 EMQX, você deve usar o [núcleo do Greengrass](greengrass-nucleus-component.md) v2.6.0 ou posterior e a autenticação do dispositivo cliente v2.2.0 ou posterior.

  Implante o componente do agente MQTT EMQX para usar os atributos do MQTT 5.0 na comunicação entre dispositivos cliente e o dispositivo principal. O agente MQTT EMQX é 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.

  Não é necessário configurar esse componente para usá-lo. No entanto, você pode configurar a porta na qual esse componente opera o agente MQTT. Por padrão, ele usa a porta 8883.
+ <a name="client-device-component-overview-mqtt-bridge"></a>[Ponte MQTT](mqtt-bridge-component.md) (`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](mqtt-bridge-component.md#mqtt-bridge-component-configuration).
+ <a name="client-device-component-overview-ip-detector"></a>[Detector IP](ip-detector-component.md) (`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. Não é possível usar esse componente se você tiver uma configuração de rede complexa, como quando um roteador encaminha a porta do agente MQTT para o dispositivo principal.

  Não é necessário configurar esse componente para usá-lo.
+ <a name="client-device-component-overview-shadow-manager"></a>[Gerenciador de sombras](shadow-manager-component.md) (`aws.greengrass.ShadowManager`)
**nota**  
Para gerenciar as sombras do dispositivo cliente, você deve usar o [núcleo do Greengrass](greengrass-nucleus-component.md) v2.6.0 ou posterior, o gerenciador de sombras v2.2.0 ou posterior e a [ponte MQTT](mqtt-bridge-component.md) v2.2.0 ou posterior.

  (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 eles. 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. De outra forma, esse componente não exige configuração para ser usado, mas exige configuração para sincronizar as sombras do dispositivo.

**nota**  <a name="note-deploy-one-mqtt-broker"></a>
Recomendamos que você implante somente um componente do agente MQTT. A [ponte MQTT](mqtt-bridge-component.md) e os componentes do [detector IP](ip-detector-component.md) funcionam com apenas um componente do agente MQTT por vez. Se você implantar vários componentes do agente MQTT, deverá configurá-los para usar portas diferentes.

## Configurar a descoberta na nuvem (console)
<a name="configure-cloud-discovery-console"></a>

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 obter mais informações, consulte [Etapa 2: habilitar o suporte ao dispositivo cliente](client-devices-tutorial.md#enable-client-device-support).

## Configurar a descoberta na nuvem (AWS CLI)
<a name="configure-cloud-discovery-cli"></a>

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 saber mais, consulte:
+ [Gerenciar associações de dispositivos cliente (AWS CLI)](associate-client-devices.md#manage-client-device-associations-cli)
+ [Gerenciar endpoints do dispositivo principal do](manage-core-device-endpoints.md)
+ [Componentes do dispositivo cliente fornecidos pela AWS](client-device-components.md)
+ [Criar implantações](create-deployments.md)