

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

# Preparar o Raspberry Pi para execução de trabalhos
<a name="iot-dc-runjobs-prepare"></a>

Os procedimentos nesta seção descrevem como preparar seu Raspberry Pi para executar trabalhos usando o AWS IoT Device Client.

**nota**  
Estes procedimentos são específicos ao dispositivo. Caso queira realizar os procedimentos desta seção com mais de um dispositivo simultaneamente, cada dispositivo precisará de sua própria política e de um certificado e um nome de item exclusivos e específicos ao dispositivo. Para que cada dispositivo tenha seus recursos exclusivos, execute o procedimento uma vez para cada dispositivo enquanto modifica os elementos específicos do dispositivo, como descrito nos procedimentos.

**Topics**
+ [Provisione seu Raspberry Pi para demonstrar trabalhos](#iot-dc-runjobs-prepare-provision)
+ [Configurar o AWS IoT Device Client para executar o agente de trabalhos](#iot-dc-runjobs-prepare-config)

## Provisione seu Raspberry Pi para demonstrar trabalhos
<a name="iot-dc-runjobs-prepare-provision"></a>

Os procedimentos nesta seção provisionam seu Raspberry Pi AWS IoT criando AWS IoT recursos e certificados de dispositivo para ele. 

**Topics**
+ [Crie e baixe arquivos de certificado de dispositivo para demonstrar AWS IoT trabalhos](#iot-dc-runjobs-prepare-cert)
+ [Crie AWS IoT recursos para demonstrar AWS IoT empregos](#iot-dc-runjobs-prepare-iot)

### Crie e baixe arquivos de certificado de dispositivo para demonstrar AWS IoT trabalhos
<a name="iot-dc-runjobs-prepare-cert"></a>

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

Se você estiver preparando mais de um dispositivo, esse procedimento deve ser executado em cada dispositivo.

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

Na janela do terminal do computador host local conectado ao Raspberry Pi, digite os comandos a seguir.

1. Digite o comando a seguir para criar os arquivos de certificado de dispositivo.

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

   O comando retorna uma resposta como a seguinte. Salve 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 700 ~/certs/jobs
   chmod 644 ~/certs/jobs/*
   chmod 600 ~/certs/jobs/private.pem.key
   ```

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

   ```
   ls -l ~/certs/jobs
   ```

   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
   ```

Após baixar os arquivos de certificado de dispositivo para o Raspberry Pi, você estará pronto para avançar para [Provisione seu Raspberry Pi para demonstrar trabalhos](#iot-dc-runjobs-prepare-provision).

### Crie AWS IoT recursos para demonstrar AWS IoT empregos
<a name="iot-dc-runjobs-prepare-iot"></a>

Crie os AWS IoT recursos para esse dispositivo.

Se você estiver preparando mais de um dispositivo, esse procedimento deve ser executado para todos os dispositivos.



**Para provisionar seu dispositivo no AWS IoT:**

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

1. Digite o seguinte comando 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 valor do endpoint não foi alterado desde a última vez que este comando foi executado. Executar o comando mais uma vez facilita localizar e colar o valor do endpoint de dados no arquivo de configuração usado neste tutorial.

   O comando **describe-endpoint** retorna uma resposta como a seguinte. Registre o valor de `endpointAddress` para uso posterior.

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

1. *uniqueThingName*Substitua por um nome exclusivo para seu dispositivo. Caso queira realizar este tutorial com vários dispositivos, dê um nome único a cada dispositivo. Como, por exemplo, **TestDevice01**, **TestDevice02**, e assim por diante.

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

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

   Como um recurso de AWS IoT coisas é uma representação *virtual* do seu dispositivo na nuvem, podemos criar vários recursos de coisas AWS IoT para serem usados para finalidades diferentes. Todos os recursos de objetos podem ser usados pelo mesmo dispositivo físico de IoT para representar aspectos diferentes do dispositivo.
**nota**  
Para proteger a política para vários dispositivos, você pode usar `${iot:Thing.ThingName}` em vez do nome do objeto estática, `uniqueThingName`.

   Estes tutoriais usarão apenas um recurso de objeto por vez por dispositivo. Dessa forma, nesses tutoriais, eles representam as diferentes demonstrações para que, depois de criar os AWS IoT recursos para uma demonstração, você possa voltar e repetir as demonstrações usando os recursos criados especificamente para cada uma.

   Se seu recurso AWS IoT Thing foi criado, o comando retornará uma resposta como essa. Registre o valor de `thingArn` para uso posterior quando for criar o trabalho a ser executado nesse dispositivo.

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

1. Na janela do terminal:

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

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

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Connect"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Subscribe"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Receive"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:DescribeJobExecution",
                      "iot:GetPendingJobExecutions",
                      "iot:StartNextPendingJobExecution",
                      "iot:UpdateJobExecution"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
                  ]
              }
          ]
      }
      ```

   1. No editor, na `Resource` seção de cada declaração de política, *us-west-2:57EXAMPLE833* substitua por seu Região da AWS, um caractere de dois pontos (:)) e seu número de 12 dígitos Conta da AWS .

   1. No editor, em cada declaração de política, *uniqueThingName* substitua pelo nome da coisa que você deu ao recurso.

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

      Caso esteja executando esse procedimento para diversos dispositivos, salve o arquivo com esse nome de arquivo em cada dispositivo.

1. *uniqueThingName*Substitua pelo nome do dispositivo e, em seguida, execute esse comando para criar uma AWS IoT política personalizada para esse dispositivo.

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

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

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

1. *uniqueThingName*Substitua pelo nome do dispositivo e `certificateArn` pelo `certificateArn` valor que você salvou anteriormente nesta seção para esse dispositivo e, em seguida, execute esse comando para anexar a política ao certificado do dispositivo. 

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

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

1.  *uniqueThingName*Substitua pelo nome da coisa do dispositivo, `certificateArn` substitua pelo `certificateArn` valor que você salvou anteriormente nesta seção e, em seguida, execute esse comando para anexar o certificado do dispositivo ao recurso da AWS IoT coisa.

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

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

Após provisionar o Raspberry Pi com êxito, você estará pronto para repetir esta seção com outro Raspberry Pi em um teste ou, se todos os dispositivos tiverem sido provisionados, avançar para [Configurar o AWS IoT Device Client para executar o agente de trabalhos](#iot-dc-runjobs-prepare-config).

## Configurar o AWS IoT Device Client para executar o agente de trabalhos
<a name="iot-dc-runjobs-prepare-config"></a>

Este procedimento cria um arquivo de configuração para o AWS IoT Device Client executar o agente de trabalhos:.

Nota: se você estiver preparando mais de um dispositivo, esse procedimento deve ser executado em cada dispositivo.

**Para criar o arquivo de configuração para testar o AWS IoT Device Client:**

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

   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/jobs/device.pem.crt",
        "key": "~/certs/jobs/private.pem.key",
        "root-ca": "~/certs/AmazonRootCA1.pem",
        "thing-name": "uniqueThingName",
        "logging": {
          "enable-sdk-logging": true,
          "level": "DEBUG",
          "type": "STDOUT",
          "file": ""
        },
        "jobs": {
          "enabled": true,
          "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": false,
            "publish-topic": "",
            "publish-file": "",
            "subscribe-topic": "",
            "subscribe-file": ""
          }
        },
        "config-shadow": {
          "enabled": false
        },
        "sample-shadow": {
          "enabled": false,
          "shadow-name": "",
          "shadow-input-file": "",
          "shadow-output-file": ""
        }
      }
      ```

   1. Substitua o *endpoint* valor pelo valor do 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. *uniqueThingName*Substitua pelo nome da coisa que você usou para este dispositivo.

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

1. Execute o comando a seguir para definir as permissões de arquivo do novo arquivo de configuração.

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

O **cliente de teste MQTT** não será utilizado neste teste. Embora o dispositivo troque mensagens MQTT relacionadas aos trabalhos AWS IoT, as mensagens de progresso do trabalho são trocadas somente com o dispositivo que está executando o trabalho. Como as mensagens de progresso do trabalho são trocadas somente com o dispositivo que está executando o trabalho, você não pode assiná-las de outro dispositivo, como o AWS IoT console.

Após salvar o arquivo de configuração, você estará pronto para avançar para [Crie e execute o trabalho AWS IoT com o AWS IoT Device Client](iot-dc-runjobs-prepare-define.md).