

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

# Tutorial: Instalando e configurando o AWS IoT Device Client
<a name="iot-dc-install-dc"></a>

Este tutorial mostra a instalação e a configuração do AWS IoT Device Client e a criação dos AWS IoT recursos que você usará nesta e em outras demonstrações.

**Para iniciar este tutorial:**
+ Prepare o computador host local e o Raspberry Pi [com o tutorial anterior](iot-dc-prepare-device.md).

Este tutorial pode levar cerca de 90 minutos para ser concluído.

**Quando você concluir este tópico:**
+ Seu dispositivo de IoT estará pronto para ser usado em outras demonstrações do AWS IoT Device Client.
+ Você terá provisionado seu dispositivo de IoT em. AWS IoT Core
+ Você terá baixado e instalado o AWS IoT Device Client em seu dispositivo.
+ Você terá salvo uma imagem do cartão microSD do dispositivo que pode ser usada em tutoriais subsequentes.

**Equipamentos necessários:**
+ O ambiente local de desenvolvimento e teste da [seção anterior](iot-dc-prepare-device-test.md)
+ O Raspberry Pi usado na [seção anterior](iot-dc-prepare-device-test.md)
+ O cartão de memória microSD do Raspberry Pi usado na [seção anterior](iot-dc-prepare-device-test.md)

**Topics**
+ [Baixe e salve o AWS IoT Device Client](iot-dc-install-download.md)
+ [Provisione seu Raspberry Pi em AWS IoT](iot-dc-install-provision.md)
+ [Configurar o cliente do AWS IoT dispositivo para testar a conectividade](iot-dc-install-configure.md)

# Baixe e salve o AWS IoT Device Client
<a name="iot-dc-install-download"></a>

Os procedimentos nesta seção baixam o AWS IoT Device Client, compilam e instalam no seu Raspberry Pi. Depois de testar a instalação, você pode salvar a imagem do cartão microSD do Raspberry Pi para usar mais tarde quando quiser experimentar os tutoriais novamente.

**Topics**
+ [Baixe e crie o AWS IoT Device Client](#iot-dc-install-dc-download)
+ [Crie os diretórios usados pelos tutoriais](#iot-dc-install-dc-files)
+ [(Opcional) Salve a imagem do cartão microSD](#iot-dc-install-dc-save)

## Baixe e crie o AWS IoT Device Client
<a name="iot-dc-install-dc-download"></a>

Este procedimento instala o AWS IoT Device Client no seu Raspberry Pi.

Execute esses comandos na janela do terminal do computador host local conectado ao Raspberry Pi.

**Para instalar o AWS IoT Device Client em seu Raspberry Pi**

1. Digite esses comandos para baixar e criar o AWS IoT Device Client no seu Raspberry Pi.

   ```
   cd ~
   git clone https://github.com/awslabs/aws-iot-device-client aws-iot-device-client
   mkdir ~/aws-iot-device-client/build && cd ~/aws-iot-device-client/build
   cmake ../
   ```

1. Execute esse comando para criar o AWS IoT Device Client. Este comando pode levar até 15 minutos para ser concluído.

   ```
   cmake --build . --target aws-iot-device-client
   ```

   As mensagens de aviso exibidas durante a compilação do AWS IoT Device Client podem ser ignoradas.

   Esses tutoriais foram testados com o AWS IoT Device Client integrado**gcc**, versão (Raspbian 10.2.1-6\$1rpi1) 10.2.1 20210110 na versão de 30 de outubro de 2021 do Raspberry Pi OS (bullseye) on, versão (Raspbian 8.3.0-6\$1rpi1) 8.3.0 na versão de 7 de maio de 2021 do Raspberry Pi OS (**gcc**buster).

1. Depois que o AWS IoT Device Client terminar de criar, teste-o executando esse comando.

   ```
   ./aws-iot-device-client --help
   ```

Se você ver a ajuda da linha de comando para o AWS IoT Device Client, o AWS IoT Device Client foi criado com sucesso e está pronto para ser usado.

## Crie os diretórios usados pelos tutoriais
<a name="iot-dc-install-dc-files"></a>

Este procedimento cria os diretórios no Raspberry Pi que serão usados para armazenar os arquivos usados pelos tutoriais neste percurso de aprendizado.

**Para criar os diretórios usados pelos tutoriais neste percurso de aprendizado:**

1. Execute esses comandos para criar os diretórios necessários.

   ```
   mkdir ~/dc-configs
   mkdir ~/policies
   mkdir ~/messages
   mkdir ~/certs/testconn
   mkdir ~/certs/pubsub
   mkdir ~/certs/jobs
   ```

1. Execute esses comandos para definir as permissões nos novos diretórios.

   ```
   chmod 745 ~
   chmod 700 ~/certs/testconn
   chmod 700 ~/certs/pubsub
   chmod 700 ~/certs/jobs
   ```

Depois de criar esses diretórios e definir permissões, continue em [(Opcional) Salve a imagem do cartão microSD](#iot-dc-install-dc-save).

## (Opcional) Salve a imagem do cartão microSD
<a name="iot-dc-install-dc-save"></a>

Neste ponto, o cartão microSD do seu Raspberry Pi tem um sistema operacional atualizado, o software básico do aplicativo e AWS IoT o Device Client. 

Se você quiser voltar para tentar esses exercícios e tutoriais novamente, pule os procedimentos anteriores gravando a imagem do cartão microSD que você salvou com esse procedimento em um novo cartão microSD e continue com os tutoriais em [Provisione seu Raspberry Pi em AWS IoT](iot-dc-install-provision.md).

**Para salvar a imagem do cartão microSD em um arquivo:**

Na janela do terminal do computador host local conectado ao Raspberry Pi:

1. Confirme se suas Conta da AWS credenciais não foram armazenadas.

   1. Execute o aplicativo AWS configure com este comando:

      ```
      aws configure
      ```

   1. Se suas credenciais tiverem sido armazenadas (se forem exibidas no prompt), insira a string **XYXYXYXYX** quando solicitada, conforme mostrado aqui. Deixe o **Nome da região padrão** e o **Formato de saída padrão** em branco.

      ```
      AWS Access Key ID [****************YXYX]: XYXYXYXYX
      AWS Secret Access Key [****************YXYX]: XYXYXYXYX
      Default region name: 
      Default output format:
      ```

1. Digite este comando para desligar o Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Depois que o Raspberry Pi for desligado completamente, remova o conector de alimentação.

1. Remova o cartão microSD do dispositivo.

1. No computador host local: 

   1. Insira o cartão microSD.

   1. Usando uma ferramenta de imagem de cartão SD, grave a imagem do cartão microSD em um arquivo.

   1. Depois que a imagem do cartão microSD for salva, ejete o cartão do computador host local.

Você pode continuar com esse cartão microSD inserido em [Provisione seu Raspberry Pi em AWS IoT](iot-dc-install-provision.md).

# Provisione seu Raspberry Pi em AWS IoT
<a name="iot-dc-install-provision"></a>

Os procedimentos nesta seção começam com a imagem microSD salva que tem o AWS CLI e o AWS IoT Device Client instalado e criam os AWS IoT recursos e certificados de dispositivo que provisionam seu Raspberry Pi. AWS IoT

## Instale o cartão microSD no Raspberry Pi
<a name="iot-dc-install-dc-restore"></a>

Este procedimento instala o cartão microSD com o software necessário carregado e configurado no Raspberry Pi e o configura para que Conta da AWS você possa continuar com os tutoriais neste caminho de aprendizado.

Use um cartão microSD de [(Opcional) Salve a imagem do cartão microSD](iot-dc-install-download.md#iot-dc-install-dc-save) que tenha o software necessário para os exercícios e tutoriais deste percurso de aprendizado.

**Para instalar o cartão microSD no Raspberry Pi**

1. Com a alimentação desconectada do Raspberry Pi, insira o cartão microSD no Raspberry Pi.

1. Ligue o Raspberry Pi.

1. Após cerca de um minuto, no computador host local, reinicie a sessão da janela do terminal e faça login no Raspberry Pi.

1. No computador host local, na janela do terminal e com as credenciais de **ID da chave de acesso** de **Chave de acesso secreta** do Raspberry Pi:

   1. Execute o aplicativo AWS configure com este comando:

      ```
      aws configure
      ```

   1. Insira suas Conta da AWS credenciais e informações de configuração quando solicitado:

      ```
      AWS Access Key ID [****************YXYX]: your Access Key ID
      AWS Secret Access Key [****************YXYX]: your Secret Access Key
      Default region name [us-west-2]: your Região da AWS code
      Default output format [json]: json
      ```

Depois de restaurar suas Conta da AWS credenciais, você estará pronto para continuar[Provisione seu dispositivo em AWS IoT Core](#iot-dc-install-dc-provision).

## Provisione seu dispositivo em AWS IoT Core
<a name="iot-dc-install-dc-provision"></a>

Os procedimentos nesta seção criam os AWS IoT recursos que provisionam seu Raspberry Pi em AWS IoT. Ao criar esses recursos, você deverá registrar várias informações. Essas informações são usadas pela configuração do AWS IoT Device Client no próximo procedimento.

Para que seu Raspberry Pi funcione AWS IoT, ele deve ser provisionado. O provisionamento é o processo de criar e configurar os AWS IoT recursos necessários para oferecer suporte ao seu Raspberry Pi como um dispositivo de IoT.

Com o Raspberry Pi ligado e reiniciado, conecte a janela do terminal no computador host local ao Raspberry Pi e conclua esses procedimentos.

**Topics**
+ [Crie e baixe arquivos de certificado](#iot-dc-install-dc-provision-certs)
+ [Crie AWS IoT recursos](#iot-dc-install-dc-provision-resources)

### Crie e baixe arquivos de certificado
<a name="iot-dc-install-dc-provision-certs"></a>

Este procedimento cria os arquivos de certificado de dispositivo para esta demonstração.

**Para criar e baixar os arquivos de certificado de dispositivo para o Raspberry Pi**

1. Na janela do terminal do computador host local, insira esses comandos para criar os arquivos de certificado de dispositivo para o dispositivo.

   ```
   mkdir ~/certs/testconn
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/testconn/device.pem.crt" \
   --public-key-outfile "~/certs/testconn/public.pem.key" \
   --private-key-outfile "~/certs/testconn/private.pem.key"
   ```

   O comando retorna uma resposta como a seguinte. Registre o valor de `certificateArn` para uso posterior.

   ```
   {
       "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
       "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
       "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
       "keyPair": {
           "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
           "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
       }
   }
   ```

1. Insira os comandos a seguir para definir as permissões no diretório de certificados e arquivos.

   ```
   chmod 745 ~
   chmod 700 ~/certs/testconn
   chmod 644 ~/certs/testconn/*
   chmod 600 ~/certs/testconn/private.pem.key
   ```

1. Execute este comando para examinar as permissões nos diretórios e arquivos do certificado.

   ```
   ls -l ~/certs/testconn
   ```

   A saída do comando deve ser a mesma vista aqui, com exceção das datas e horários do arquivo, que serão diferentes.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

Neste ponto, você tem os arquivos de certificado do dispositivo instalados no Raspberry Pi e pode continuar em [Crie AWS IoT recursos](#iot-dc-install-dc-provision-resources).

### Crie AWS IoT recursos
<a name="iot-dc-install-dc-provision-resources"></a>

Esse procedimento provisiona seu dispositivo AWS IoT criando os recursos necessários para acessar AWS IoT recursos e serviços.

**Para provisionar seu dispositivo em AWS IoT**

1. Na janela do terminal do computador host local, insira o comando a seguir para obter o endereço do endpoint de dados do dispositivo da sua Conta da AWS.

   ```
   aws iot describe-endpoint --endpoint-type IoT:Data-ATS
   ```

   O comando das etapas anteriores retorna uma resposta como a seguir. Registre o valor de `endpointAddress` para uso posterior.

   ```
   {
       "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Digite este comando para criar um recurso para AWS IoT o seu Raspberry Pi.

   ```
   aws iot create-thing --thing-name "DevCliTestThing"
   ```

   Se seu recurso AWS IoT Thing foi criado, o comando retornará uma resposta como essa.

   ```
   {
       "thingName": "DevCliTestThing",
       "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/DevCliTestThing",
       "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Na janela do terminal:

   1. Abra um editor de texto, como o `nano`.

   1. Copie este documento de política JSON e cole-o no editor de texto aberto.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish",
                      "iot:Subscribe",
                      "iot:Receive",
                      "iot:Connect"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```
**nota**  
Este documento de política concede generosamente a cada recurso permissão para se conectar, receber, publicar e assinar. Normalmente, as políticas concedem permissão somente a recursos específicos para realizar ações específicas. No entanto, para o teste inicial de conectividade do dispositivo, essa política excessivamente geral e permissiva é usada para minimizar a chance de um problema de acesso durante esse teste. Nos tutoriais subsequentes, documentos de políticas com escopo mais restrito serão usados para demonstrar práticas recomendadas na elaboração de políticas.

   1. Salve o arquivo no editor de texto como **\$1/policies/dev\$1cli\$1test\$1thing\$1policy.json**. 

1. Execute esse comando para usar o documento de política das etapas anteriores para criar uma AWS IoT política.

   ```
   aws iot create-policy \
   --policy-name "DevCliTestThingPolicy" \
   --policy-document "file://~/policies/dev_cli_test_thing_policy.json"
   ```

   Se a política for criada, o comando retornará uma resposta como esta.

   ```
   {
       "policyName": "DevCliTestThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy",
       "policyDocument": "{\n    \"Version\": \"2012-10-17\",		 	 	 \n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"iot:Publish\",\n                \"iot:Subscribe\",\n                \"iot:Receive\",\n                \"iot:Connect\"\n            ],\n            \"Resource\": [\n                \"*\"\n            ]\n        }\n    ]\n}\n",
       "policyVersionId": "1"
   }
   ```

1. Execute este comando para anexar a política ao certificado do dispositivo. Substitua `certificateArn` pelo valor de `certificateArn` salvo anteriormente.

   ```
   aws iot attach-policy \
   --policy-name "DevCliTestThingPolicy" \
   --target "certificateArn"
   ```

   Se houver êxito, o comando não retornará nada.

1. Execute esse comando para anexar o certificado do dispositivo ao recurso da AWS IoT coisa. Substitua `certificateArn` pelo valor de `certificateArn` salvo anteriormente.

   ```
   aws iot attach-thing-principal \
   --thing-name "DevCliTestThing" \
   --principal "certificateArn"
   ```

   Se houver êxito, o comando não retornará nada.

Depois de provisionar seu dispositivo com sucesso AWS IoT, você estará pronto para continuar. [Configurar o cliente do AWS IoT dispositivo para testar a conectividade](iot-dc-install-configure.md)

# Configurar o cliente do AWS IoT dispositivo para testar a conectividade
<a name="iot-dc-install-configure"></a>

Os procedimentos nesta seção configuram o AWS IoT Device Client para publicar uma mensagem MQTT do seu Raspberry Pi.

**Topics**
+ [Crie o arquivo de configuração](#iot-dc-install-dc-configure-step1)
+ [Abra o cliente de teste MQTT](#iot-dc-install-dc-configure-step2)
+ [Execute AWS IoT o cliente do dispositivo](#iot-dc-install-dc-configure-step3)

## Crie o arquivo de configuração
<a name="iot-dc-install-dc-configure-step1"></a>

Esse procedimento cria o arquivo de configuração para testar o AWS IoT Device Client.

**Para criar o arquivo de configuração para testar o AWS IoT Device Client**
+ Na janela do terminal do computador host local conectado ao Raspberry Pi:

  1. Insira estes comandos para criar um diretório para os arquivos de configuração e definir a permissão no diretório:

     ```
     mkdir ~/dc-configs
     chmod 745 ~/dc-configs
     ```

  1. Abra um editor de texto, como o `nano`.

  1. Copie este documento JSON e cole-o no editor de texto aberto.

     ```
     {
       "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
       "cert": "~/certs/testconn/device.pem.crt",
       "key": "~/certs/testconn/private.pem.key",
       "root-ca": "~/certs/AmazonRootCA1.pem",
       "thing-name": "DevCliTestThing",
       "logging": {
         "enable-sdk-logging": true,
         "level": "DEBUG",
         "type": "STDOUT",
         "file": ""
       },
       "jobs": {
         "enabled": false,
         "handler-directory": ""
       },
       "tunneling": {
         "enabled": false
       },
       "device-defender": {
         "enabled": false,
         "interval": 300
       },
       "fleet-provisioning": {
         "enabled": false,
         "template-name": "",
         "template-parameters": "",
         "csr-file": "",
         "device-key": ""
       },
       "samples": {
         "pub-sub": {
           "enabled": true,
           "publish-topic": "test/dc/pubtopic",
           "publish-file": "",
           "subscribe-topic": "test/dc/subtopic",
           "subscribe-file": ""
         }
       },
       "config-shadow": {
         "enabled": false
       },
       "sample-shadow": {
         "enabled": false,
         "shadow-name": "",
         "shadow-input-file": "",
         "shadow-output-file": ""
       }
     }
     ```

  1. Substitua o *endpoint* valor pelo endpoint de dados do dispositivo Conta da AWS que você encontrou em[Provisione seu dispositivo em AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision).

  1. Salve o arquivo no editor de texto como **\$1/dc-configs/dc-testconn-config.json**.

  1. Execute este comando para definir permissões no novo arquivo de configuração.

     ```
     chmod 644 ~/dc-configs/dc-testconn-config.json
     ```

Após salvar o arquivo, você estará pronto para continuar em [Abra o cliente de teste MQTT](#iot-dc-install-dc-configure-step2).

## Abra o cliente de teste MQTT
<a name="iot-dc-install-dc-configure-step2"></a>

Esse procedimento prepara o **cliente de teste MQTT** no AWS IoT console para assinar a mensagem MQTT que o AWS IoT Device Client publica quando é executado.

**Para preparar o **cliente de teste MQTT** para assinar todas as mensagens MQTT**

1. No computador host local, no [console da AWS IoT](https://console.aws.amazon.com//iot/home#/test), selecione o **cliente de teste MQTT**.

1. Na guia **Assinar um tópico**, em **Filtro de tópicos**, insira **\$1** (um único sinal de cerquilha) e selecione **Assinar** para assinar cada tópico do MQTT.

1. Abaixo do rótulo **Assinaturas**, confirme que pode ver **\$1** (um único sinal de jogo da velha).

Deixe a janela com o **cliente de teste MQTT** aberta enquanto continua na [Execute AWS IoT o cliente do dispositivo](#iot-dc-install-dc-configure-step3).

## Execute AWS IoT o cliente do dispositivo
<a name="iot-dc-install-dc-configure-step3"></a>

Esse procedimento executa o AWS IoT Device Client para que ele publique uma única mensagem MQTT que o **cliente de teste MQTT** receba e exiba.

**Para enviar uma mensagem MQTT do AWS IoT Device Client**

1. Certifique-se de que a janela do terminal conectada ao Raspberry Pi e a janela com o **cliente de teste MQTT** estejam visíveis enquanto você realiza esse procedimento.

1. Na janela do terminal, insira esses comandos para executar o AWS IoT Device Client usando o arquivo de configuração criado em[Crie o arquivo de configuração](#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-testconn-config.json
   ```

   Na janela do terminal, o AWS IoT Device Client exibe mensagens informativas e quaisquer erros que ocorram durante a execução.

   Caso nenhum erro seja exibido na janela do terminal, examine o **cliente de teste do MQTT**.

1. No **cliente de teste do MQTT**, na janela Assinaturas, consulte a mensagem *Olá, mundo\$1* enviada ao tópico de mensagem `test/dc/pubtopic`.

1. Se o AWS IoT Device Client não exibir erros e você ver *Hello World\$1* enviada para a `test/dc/pubtopic` mensagem no **cliente de teste do MQTT**, você demonstrou uma conexão bem-sucedida.

1. Na janela do terminal, digite **^C** (Ctrl-C) para parar o AWS IoT Device Client.

Depois de demonstrar que o AWS IoT Device Client está funcionando corretamente em seu Raspberry Pi e pode se comunicar com AWS IoT, você pode continuar com o. [Tutorial: Demonstre a comunicação de mensagens MQTT com o AWS IoT Device Client](iot-dc-testconn.md)