

# Caricare il file del firmware in un bucket S3 e aggiungere un ruolo IAM
<a name="lorawan-upload-firmware-s3bucket"></a>

Puoi utilizzare Amazon S3 per creare un *bucket*, che è un container in grado di archiviare il file di aggiornamento del firmware. È possibile caricare il file nel bucket S3 e aggiungere un ruolo IAM che permette al server CUPS di leggere il file di aggiornamento dal bucket. Per ulteriori informazioni su Amazon S3, consulta [ Nozioni di base su Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html). 

Il file di aggiornamento del firmware che si desidera caricare dipende dal gateway in uso. Se è stata eseguita una procedura simile a quella descritta in [Genera il file di aggiornamento del firmware e la firma](lorawan-script-fwupdate-sigkey.md), caricherai il `fwstation` generato eseguendo gli script.

Questa procedura dura circa 20 minuti.

**Topics**
+ [Crea un bucket Amazon S3 e carica il file di aggiornamento](#lorawan-create-s3-bucket)
+ [Crea un ruolo IAM con autorizzazioni per leggere il bucket S3](#lorawan-s3-iam-permissions)
+ [Esamina i passaggi successivi](#lorawan-s3iam-next-steps)

## Crea un bucket Amazon S3 e carica il file di aggiornamento
<a name="lorawan-create-s3-bucket"></a>

Creerai un bucket Amazon S3 utilizzando la Console di gestione AWS, quindi caricherai il file di aggiornamento del firmware nel bucket.

**Creare un bucket S3**  
Per creare un bucket S3, apri la [Amazon S3 console](https://console.aws.amazon.com/s3/home#). Accedi se non lo hai già fatto e quindi esegui il passaggio seguente:

1. Seleziona **Crea bucket**.

1. Inserisci un nome univoco e significativo per il **Nome bucket**, (ad esempio, `iotwirelessfwupdate`). Per la convenzione di denominazione consigliata per il bucket, consulta [https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).

1. Assicurati di aver selezionato Regione AWS come quello usato per creare il gateway e il dispositivo LoRaWAN, e che l’impostazione **Block all public access (Blocca tutti gli accessi pubblici)** sia selezionata in modo che il bucket utilizzi le autorizzazioni predefinite.

1. Scegli **Enable (Abilita)** per **Bucket versioning (Controllo delle versioni bucket)** che ti aiuterà a mantenere più versioni del file di aggiornamento firmware nello stesso bucket.

1. Conferma che **Server-side encryption (Crittografia lato server)** è impostato su **Disable (Disabilita)** e scegli **Create bucket (Crea bucket)**.

**Carica il file di aggiornamento del firmware**  
Ora puoi visualizzare il bucket nell'elenco dei bucket visualizzato nella Console di gestione AWS. Scegli il tuo bucket e completa i seguenti passaggi per caricare il file.

1. Scegli il bucket e poi **Upload (Carica)**. 

1. Scegli **Add file (Aggiungi file)** e carica il file di aggiornamento del firmware. Se hai seguito la procedura descritta in [Genera il file di aggiornamento del firmware e la firma](lorawan-script-fwupdate-sigkey.md), caricherai il `fwstation`, altrimenti carica il file fornito dal produttore del gateway.

1. Assicurati che tutte le impostazioni siano impostate sul valore predefinito. Assicurati che **Predefined ACLs (ACL predefiniti)** sia impostato su **private (privato)** e scegli **Upload (Caricamento)** per caricare il file.

1. Copia l'URI S3 del file caricato. Scegli il tuo bucket e vedrai il file che hai caricato visualizzato nell'elenco di **Objects (Oggetti)**. Scegli il file e poi **Copy S3 URI (Copiare URI S3)**. L'URI sarà: `s3://iotwirelessfwupdate/fwstation` se hai chiamato il tuo bucket in modo simile all'esempio descritto in precedenza (`fwstation`). Utilizza l'URI S3 durante la creazione del ruolo IAM.

## Crea un ruolo IAM con autorizzazioni per leggere il bucket S3
<a name="lorawan-s3-iam-permissions"></a>

Verrà ora creato un ruolo e una policy IAM che darà a CUPS l'autorizzazione a leggere il file di aggiornamento del firmware dal bucket S3.

**Creare una policy IAM per il tuo ruolo**  
Per creare una policy IAM per il tuo ruolo di destinazione AWS IoT Core per LoRaWAN, apri [ Hub policy della console IAM)](https://console.aws.amazon.com/iam/home#/policies) quindi completa questi passaggi:

1. Scegli **Create policy (Crea policy)**, quindi scegli la scheda **JSON**.

1. Elimina qualsiasi contenuto dall'editor e incolla il documento relativo alla policy. La policy fornisce le autorizzazioni per accedere al bucket `iotwireless` e il file di aggiornamento del firmware `fwstation` memorizzato all'interno di un oggetto.

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucketVersions",
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::iotwirelessfwupdate/fwstation",
                   "arn:aws:s3:::iotwirelessfwupdate"
               ]
           }
       ]
   }
   ```

1. Scegli **Review policy (Rivedi la policy)** e in **Name (Nome)**, inserisci un nome per questa policy (ad esempio, `IoTWirelessFwUpdatePolicy`). Dovrai utilizzare questo nome nella procedura successiva.

1. Scegli **Crea policy**.

**Creare un ruolo IAM e collegarvi la policy**  
Ora creerai un ruolo IAM e lo collegherai alla policy creata in precedenza per accedere al bucket S3. Apri [ Roles hub of the IAM console (Hub ruoli della console IAM)](https://console.aws.amazon.com/iam/home#/roles) e completa la procedura seguente:

1. Scegli **Crea ruolo**.

1. In **Seleziona tipo di entità attendibile**, scegli **Altro Account AWS**.

1. In **Account ID (ID account)**, inserisci il tuo account Account AWS ID, quindi scegli **Next: Permissions (Successivo: autorizzazioni)**.

1. Nella casella di ricerca, immetti il nome della policy IAM creata nella procedura precedente. Controlla la policy IAM (ad esempio, `IoTWirelessFwUpdatePolicy`) creata in precedenza nei risultati della ricerca e sceglila.

1. Scegliere **Next: Tags (Successivo: Tag)**, quindi **Next: Review (Successivo: Verifica)**.

1. Per **Role Name (Nome ruolo)**, immetti un nome per il ruolo, ad esempio `IoTWirelessFwUpdateRole`, quindi scegli **Create role (Crea ruolo)**.

**Modifica la relazione di fiducia per il ruolo IAM**  
Nel messaggio di conferma visualizzato dopo avere eseguito il passaggio precedente, scegli il nome del ruolo creato per modificarlo. Modificherai il ruolo per aggiungere la seguente relazione di trust.

1. Nella sezione **Summary (Riepilogo)** del ruolo creato in precedenza, scegli la scheda **Trust Relationships (Relazioni di trust)**, quindi scegli **Edit Trust Relationship (Modifica relazione di trust)**.

1. In **Policy Document (Documento policy)**, modifica la proprietà di `Principal` affinché appaia come il seguente esempio.

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   Dopo aver modificato la proprietà `Principal`, il documento completo di policy dovrebbe essere simile al seguente.

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "iotwireless.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

1. Per salvare le modifiche e uscire, scegli **Update Trust Policy (Aggiorna policy di attendibilità)**.

1. Ottieni l'ARN per il tuo ruolo. Scegli il tuo ruolo IAM e nella sezione Riepilogo vedrai un **ARN ruolo**, ad esempio `arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole`. Copia questo **ARN Ruolo**.

## Esamina i passaggi successivi
<a name="lorawan-s3iam-next-steps"></a>

Dopo aver creato il bucket S3 e un ruolo IAM che consente al server CUPS di leggere il bucket S3, passa all'argomento successivo per pianificare ed eseguire l'aggiornamento del firmware. Mantieni **S3 URI** e **ARN ruolo** che hai copiato in precedenza, in modo da poterli immettere per creare una definizione di attività che verrà eseguita per eseguire l'aggiornamento del firmware.