

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial: installazione e configurazione del AWS IoT Device Client
<a name="iot-dc-install-dc"></a>

Questo tutorial ti guida attraverso l'installazione e la configurazione del AWS IoT Device Client e la creazione di AWS IoT risorse che utilizzerai in questa e in altre demo.

**Per iniziare il tutorial:**
+ Prepara il tuo computer host locale e Raspberry Pi seguendo il [il tutorial precedente](iot-dc-prepare-device.md).

Questo tutorial dura circa 90 minuti.

**Al termine di questo argomento:**
+ Il tuo dispositivo IoT sarà pronto per l'uso in altre demo di AWS IoT Device Client.
+ Avrai effettuato il provisioning del tuo dispositivo IoT. AWS IoT Core
+ Avrai scaricato e installato il AWS IoT Device Client sul tuo dispositivo.
+ Avrai salvato un'immagine della scheda microSD del tuo dispositivo che può essere utilizzata nei tutorial successivi.

**Equipaggiamento necessario:**
+ Il tuo ambiente locale di sviluppo e di test dalla [sezione precedente](iot-dc-prepare-device-test.md)
+ Il Raspberry Pi che hai utilizzato nella [sezione precedente](iot-dc-prepare-device-test.md)
+ La scheda di memoria microSD del Raspberry Pi utilizzata nella [sezione precedente](iot-dc-prepare-device-test.md)

**Topics**
+ [Scarica e salva il AWS IoT Device Client](iot-dc-install-download.md)
+ [Esegui il provisioning del tuo Raspberry Pi in AWS IoT](iot-dc-install-provision.md)
+ [Configura il AWS IoT Device Client per testare la connettività](iot-dc-install-configure.md)

# Scarica e salva il AWS IoT Device Client
<a name="iot-dc-install-download"></a>

Le procedure descritte in questa sezione scaricano il AWS IoT Device Client, lo compilano e lo installano sul tuo Raspberry Pi. Dopo aver testato l'installazione, è possibile salvare l'immagine della scheda microSD di Raspberry Pi da utilizzare in seguito quando si desidera riprovare i tutorial.

**Topics**
+ [Scarica e crea il Device Client AWS IoT](#iot-dc-install-dc-download)
+ [Crea le directory utilizzate dal tutorial](#iot-dc-install-dc-files)
+ [(Facoltativo) Salvare l'immagine della scheda microSD](#iot-dc-install-dc-save)

## Scarica e crea il Device Client AWS IoT
<a name="iot-dc-install-dc-download"></a>

Questa procedura installa il AWS IoT Device Client sul tuo Raspberry Pi.

Esegui questi comandi nella finestra terminale del computer host locale connesso al Raspberry Pi.

**Per installare il AWS IoT Device Client sul tuo Raspberry Pi**

1. Inserisci questi comandi per scaricare e creare il AWS IoT Device Client sul tuo 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. Esegui questo comando per creare il AWS IoT Device Client. Il completamento del processo può richiedere fino a 15 minuti.

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

   I messaggi di avviso visualizzati durante la compilazione del AWS IoT Device Client possono essere ignorati.

   Questi tutorial sono stati testati con il AWS IoT Device Client integrato**gcc**, versione (Raspbian 10.2.1-6\$1rpi1) 10.2.1 20210110 sulla versione del sistema operativo Raspberry Pi (bullseye) del 30 ottobre 2021**gcc**, versione (Raspbian 8.3.0-6\$1rpi1) 8.3.0 sulla versione del sistema operativo Raspberry Pi (buster) del 7 maggio 2021.

1. Dopo che il AWS IoT Device Client ha terminato la creazione, testalo eseguendo questo comando.

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

Se vedi la guida della riga di comando per AWS IoT Device Client, significa che il AWS IoT Device Client è stato creato correttamente ed è pronto per l'uso.

## Crea le directory utilizzate dal tutorial
<a name="iot-dc-install-dc-files"></a>

Questa procedura crea le directory sul Raspberry Pi che verranno utilizzate per memorizzare i file utilizzati dai tutorial in questo percorso di apprendimento.

**Per creare le directory utilizzate dai tutorial in questo percorso di apprendimento:**

1. Esegui questi comandi per creare le directory richieste.

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

1. Esegui questi comandi per impostare le autorizzazioni sulle nuove directory.

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

Dopo aver creato queste directory e impostato l'autorizzazione, prosegui con [(Facoltativo) Salvare l'immagine della scheda microSD](#iot-dc-install-dc-save).

## (Facoltativo) Salvare l'immagine della scheda microSD
<a name="iot-dc-install-dc-save"></a>

A questo punto, la scheda microSD del Raspberry Pi ha un sistema operativo aggiornato, il software applicativo di base e il Device Client. AWS IoT 

Se vuoi tornare a provare nuovamente questi esercizi e tutorial, puoi saltare le procedure precedenti scrivendo l'immagine della scheda microSD salvata con questa procedura su una nuova scheda microSD e continuare i tutorial da [Esegui il provisioning del tuo Raspberry Pi in AWS IoT](iot-dc-install-provision.md).

**Per salvare l'immagine della scheda microSD in un file:**

Nella finestra terminale del computer host locale connesso al Raspberry Pi:

1. Conferma che le tue Account AWS credenziali non sono state archiviate.

   1. Esegui l'app di AWS configurazione con questo comando:

      ```
      aws configure
      ```

   1. Se le credenziali sono state archiviate (se sono visualizzate nel prompt), inserisci la stringa **XYXYXYXYX** quando viene richiesto come illustrato qui. Lascia vuoti i campi **Nome della regione di default** e **Formato di output di default**.

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

1. Inserisci questo comando per arrestare il Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Dopo che il Raspberry Pi si spegne completamente, rimuovere l'alimentatore.

1. Rimuovere la scheda microSD dal dispositivo.

1. Sul computer host locale: 

   1. Inserisci la scheda microSD.

   1. Utilizzando lo strumento di creazione di immagini della scheda SD, salva l'immagine della scheda microSD in un file.

   1. Dopo aver salvato l'immagine della scheda microSD, espelli la scheda dal computer host locale.

Puoi continuare con questa scheda microSD in [Esegui il provisioning del tuo Raspberry Pi in AWS IoT](iot-dc-install-provision.md).

# Esegui il provisioning del tuo Raspberry Pi in AWS IoT
<a name="iot-dc-install-provision"></a>

Le procedure in questa sezione iniziano con l'immagine microSD salvata su cui è installato AWS CLI il Device Client AWS IoT e creano le risorse e i certificati del dispositivo che forniscono AWS IoT il tuo Raspberry Pi. AWS IoT

## Installa la scheda microSD nel Raspberry Pi
<a name="iot-dc-install-dc-restore"></a>

Questa procedura installa la scheda microSD con il software necessario caricato e configurato nel Raspberry Pi e la configura in modo da poter continuare con Account AWS i tutorial di questo percorso di apprendimento.

Utilizzare una scheda microSD da [(Facoltativo) Salvare l'immagine della scheda microSD](iot-dc-install-download.md#iot-dc-install-dc-save) che dispone del software necessario per gli esercizi e le esercitazioni in questo percorso di apprendimento.

**Per installare la scheda microSD nel Raspberry Pi**

1. Con l'alimentazione scollegata dal Raspberry Pi, inserisci la scheda microSD nel Raspberry Pi.

1. Collega Raspberry Pi all'alimentazione.

1. Dopo circa un minuto, sul computer host locale, riavvia la sessione della finestra terminale e accedi al Raspberry Pi.

1. Sul computer host locale, nella finestra terminale e con le credenziali **ID chiave di accesso** e **Chiave di accesso segreta** per il Raspberry Pi:

   1. Esegui l'app di configurazione con questo comando: AWS 

      ```
      aws configure
      ```

   1. Inserisci Account AWS le tue credenziali e le informazioni di configurazione quando richiesto:

      ```
      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 Regione AWS code
      Default output format [json]: json
      ```

Dopo aver ripristinato Account AWS le credenziali, sei pronto per continuare. [Effettua il provisioning del dispositivo in AWS IoT Core](#iot-dc-install-dc-provision)

## Effettua il provisioning del dispositivo in AWS IoT Core
<a name="iot-dc-install-dc-provision"></a>

Le procedure descritte in questa sezione creano AWS IoT le risorse per il rifornimento del tuo Raspberry Pi. AWS IoT Man mano che crei queste risorse, ti verrà chiesto di registrare varie informazioni. Queste informazioni vengono utilizzate dalla configurazione del AWS IoT Device Client nella procedura successiva.

Affinché il tuo Raspberry Pi funzioni AWS IoT, deve essere fornito. Il provisioning è il processo di creazione e configurazione AWS IoT delle risorse necessarie per supportare il tuo Raspberry Pi come dispositivo IoT.

Con il Raspberry Pi acceso e riavviato, connetti la finestra terminale del computer host locale al Raspberry Pi e completa queste procedure.

**Topics**
+ [Creare e scaricare i file di certificato del dispositivo](#iot-dc-install-dc-provision-certs)
+ [Crea risorse AWS IoT](#iot-dc-install-dc-provision-resources)

### Creare e scaricare i file di certificato del dispositivo
<a name="iot-dc-install-dc-provision-certs"></a>

Questa procedura crea i file di certificato del dispositivo per questa demo.

**Per creare e scaricare i file di certificato del dispositivo per il tuo Raspberry Pi**

1. Nella finestra terminale del computer host locale, immettere questi comandi per creare i file di certificato del dispositivo per il 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"
   ```

   Questo comando restituisce una risposta simile alla seguente. Registra il valore `certificateArn` per utilizzarlo in seguito.

   ```
   {
       "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. Inserisci i seguenti comandi per impostare le autorizzazioni sulla directory dei certificati e sui relativi file.

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

1. Esegui questo comando per rivedere le autorizzazioni sulle directory e sui file dei certificati.

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

   L'output del comando dovrebbe essere lo stesso di quello che vedi qui, tranne per le date e gli orari del file.

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

A questo punto, hai i file del certificato del dispositivo installati sul tuo Raspberry Pi e puoi proseguire con [Crea risorse AWS IoT](#iot-dc-install-dc-provision-resources).

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

Questa procedura fornisce il dispositivo AWS IoT creando le risorse di cui ha bisogno per accedere a AWS IoT funzionalità e servizi.

**Per effettuare il provisioning del dispositivo in AWS IoT**

1. Nella finestra terminale del computer host locale, immettere il seguente comando per ottenere l'indirizzo dell'endpoint dati del dispositivo per l' Account AWS.

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

   Questo comando restituisce una risposta simile alla seguente. Registra il valore `endpointAddress` per utilizzarlo in seguito.

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

1. Inserisci questo comando per creare una AWS IoT risorsa per il tuo Raspberry Pi.

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

   Se la tua risorsa AWS IoT thing è stata creata, il comando restituisce una risposta come questa.

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

1. Nella finestra terminale:

   1. Apri un editor di testo, ad esempio `nano`.

   1. Copia questo documento di policy JSON e incollalo nell'editor di testo aperto.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish",
                      "iot:Subscribe",
                      "iot:Receive",
                      "iot:Connect"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```
**Nota**  
Questo documento di policy concede generosamente a tutte le risorse l'autorizzazione a connettersi, ricevere, pubblicare e sottoscrivere. Normalmente le policy consentono solo a risorse specifiche di eseguire azioni specifiche. Tuttavia, per il test iniziale della connettività del dispositivo, questa policy eccessivamente generale e permissiva viene utilizzata per ridurre al minimo la possibilità di un problema di accesso durante questo test. Nei tutorial successivi, verranno utilizzati documenti di policy più ristretti per dimostrare le migliori pratiche nella progettazione delle policy.

   1. Salva il file nell'editor di testo come **\$1/policies/dev\$1cli\$1test\$1thing\$1policy.json**. 

1. Esegui questo comando per utilizzare il documento di policy dei passaggi precedenti per creare una AWS IoT politica.

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

   Se la policy viene creata, verrà visualizzata una risposta simile alla seguente.

   ```
   {
       "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. Eseguire questo comando per attribuire la policy al certificato del dispositivo. Sostituisci `certificateArn` con il valore `certificateArn` salvato in precedenza.

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

   In caso di successo, questo comando non restituisce alcun risultato.

1. Esegui questo comando per allegare il certificato del dispositivo alla risorsa AWS IoT oggetto. Sostituisci `certificateArn` con il valore `certificateArn` salvato in precedenza.

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

   In caso di successo, questo comando non restituisce alcun risultato.

Dopo aver effettuato correttamente il provisioning del dispositivo AWS IoT, sei pronto per continuare[Configura il AWS IoT Device Client per testare la connettività](iot-dc-install-configure.md).

# Configura il AWS IoT Device Client per testare la connettività
<a name="iot-dc-install-configure"></a>

Le procedure in questa sezione configurano il AWS IoT Device Client per pubblicare un messaggio MQTT dal tuo Raspberry Pi.

**Topics**
+ [Creare il file di configurazione](#iot-dc-install-dc-configure-step1)
+ [Aprire il client di test MQTT](#iot-dc-install-dc-configure-step2)
+ [AWS IoT Esegui Device Client](#iot-dc-install-dc-configure-step3)

## Creare il file di configurazione
<a name="iot-dc-install-dc-configure-step1"></a>

Questa procedura crea il file di configurazione per testare il Device Client. AWS IoT 

**Per creare il file di configurazione per testare il AWS IoT Device Client**
+ Nella finestra terminale del computer host locale connesso al Raspberry Pi:

  1. Inserisci questi comandi per creare una directory per i file di configurazione e impostare l'autorizzazione sulla directory:

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

  1. Apri un editor di testo, ad esempio `nano`.

  1. Copia questo documento JSON e incollalo nell'editor di testo aperto.

     ```
     {
       "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. Sostituisci il *endpoint* valore con Device Data Endpoint per il tuo dispositivo Account AWS che hai trovato in. [Effettua il provisioning del dispositivo in AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision)

  1. Salva il file nell'editor di testo come **\$1/dc-configs/dc-testconn-config.json**.

  1. Esegui questo comando per impostare le autorizzazioni sul nuovo file di configurazione.

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

Dopo aver salvato il file, è possibile proseguire con [Aprire il client di test MQTT](#iot-dc-install-dc-configure-step2).

## Aprire il client di test MQTT
<a name="iot-dc-install-dc-configure-step2"></a>

Questa procedura prepara il **client di test MQTT** nella AWS IoT console per sottoscrivere il messaggio MQTT che il AWS IoT Device Client pubblica durante l'esecuzione.

**Per preparare il **Client MQTT di test** a sottoscrivere tutti i messaggi MQTT**

1. Sul computer host locale, nella [console AWS IoT](https://console.aws.amazon.com//iot/home#/test), seleziona **Client MQTT di test**.

1. Nella scheda **Subscribe to a topic** (Sottoscrivi un argomento), in **Topic filter** (Filtro argomenti) inserisci **\$1** (un solo cancelletto) e seleziona **Subscribe** (Sottoscrivi) per sottoscrivere ogni argomento MQTT.

1. Sotto l'etichetta **Subscriptions (Sottoscrizioni)**, conferma di vedere **\$1** (un solo segno di cancelletto).

Lascia aperta la finestra con il **Client MQTT di test** mentre prosegui con [AWS IoT Esegui Device Client](#iot-dc-install-dc-configure-step3).

## AWS IoT Esegui Device Client
<a name="iot-dc-install-dc-configure-step3"></a>

Questa procedura esegue il AWS IoT Device Client in modo da pubblicare un singolo messaggio MQTT che il **client di test MQTT** riceve e visualizza.

**Per inviare un messaggio MQTT dal Device Client AWS IoT**

1. Assicurati che sia la finestra terminale collegata al tuo Raspberry Pi che la finestra con il **client MQTT di test** siano visibili durante l'esecuzione di questa procedura.

1. Nella finestra del terminale, inserisci questi comandi per eseguire il AWS IoT Device Client utilizzando il file di configurazione creato in. [Creare il file di configurazione](#iot-dc-install-dc-configure-step1)

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

   Nella finestra del terminale, il AWS IoT Device Client visualizza i messaggi informativi e gli eventuali errori che si verificano durante l'esecuzione.

   Se nella finestra del terminale non vengono visualizzati errori, esamina il **client MQTT di test**.

1. Nel **client MQTT di test**, nella finestra Subsciptions (Sottoscrizioni), viene visualizzato il messaggio *Hello World\$1* inviato all' argomento del messaggio `test/dc/pubtopic`.

1. Se il AWS IoT Device Client non mostra errori e viene visualizzato *Hello World\$1* inviato al `test/dc/pubtopic` messaggio nel **client di test MQTT**, hai dimostrato che la connessione è riuscita.

1. Nella finestra del terminale, digitate **^C** (Ctrl-C) per fermare il AWS IoT Device Client.

Dopo aver dimostrato che il AWS IoT Device Client funziona correttamente sul tuo Raspberry Pi e con cui puoi comunicare AWS IoT, puoi continuare con. [Tutorial: Dimostrare la comunicazione dei messaggi MQTT con il AWS IoT Device Client](iot-dc-testconn.md)