

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

# Configurazione dei dispositivi AWS IoT Greengrass principali
<a name="setting-up"></a>

Completa le attività in questa sezione per installare, configurare ed eseguire il software AWS IoT Greengrass Core.

**Nota**  
Questa sezione descrive l'installazione e la configurazione avanzate del software AWS IoT Greengrass Core. Questi passaggi non si applicano a nucleus Lite. Se sei un utente alle prime armi di AWS IoT Greengrass V2, ti consigliamo di completare prima il [tutorial introduttivo](getting-started.md) per configurare un dispositivo principale ed esplorare le funzionalità di. AWS IoT Greengrass



**Topics**
+ [Piattaforme supportate](#supported-platforms)
+ [Requisiti per il dispositivo](#device-requirements)
+ [Requisiti della funzione Lambda](#greengrass-v2-lambda-requirements)
+ [Configura un Account AWS](#set-up-aws-account)
+ [Installare il software AWS IoT Greengrass Core](install-greengrass-core-v2.md)
+ [Esegui il software AWS IoT Greengrass Core](run-greengrass-core-v2.md)
+ [Esegui il software AWS IoT Greengrass Core in un contenitore Docker](run-greengrass-docker.md)
+ [Configurare il software AWS IoT Greengrass Core](configure-greengrass-core-v2.md)
+ [Aggiornamento del software AWS IoT Greengrass Core (OTA)](update-greengrass-core-v2.md)
+ [Disinstalla il software AWS IoT Greengrass Core](uninstall-greengrass-core-v2.md)

## Piattaforme supportate
<a name="supported-platforms"></a>
+ [Piattaforme supportate da Greengrass nucleus](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html)
+ [Piattaforme supportate da Greengrass nucleus lite](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)

## Requisiti per il dispositivo
<a name="device-requirements"></a>
+ [Requisiti del dispositivo Greengrass nucleus](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html)
+ [Requisiti del dispositivo Greengrass nucleus lite](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)

## Requisiti della funzione Lambda
<a name="greengrass-v2-lambda-requirements"></a>

**Importante**  
Le funzioni Greengrass Lambda non sono attualmente supportate da Greengrass nucleus lite.

Il dispositivo deve soddisfare i seguenti requisiti per eseguire le funzioni Lambda:
+ Un sistema operativo basato su Linux.
+ Il dispositivo deve avere il comando shell. `mkfifo`
+ Il dispositivo deve eseguire le librerie di linguaggi di programmazione richieste da una funzione Lambda. È necessario installare le librerie richieste sul dispositivo e aggiungerle alla variabile di `PATH` ambiente. Greengrass supporta tutte le versioni supportate da Lambda dei runtime Python, Node.js e Java. Greengrass non applica alcuna restrizione aggiuntiva alle versioni di runtime Lambda obsolete. Per ulteriori informazioni sul AWS IoT Greengrass supporto per i runtime Lambda, consulta. [Esegui AWS Lambda funzioni](run-lambda-functions.md)
+ Per eseguire funzioni Lambda containerizzate, il dispositivo deve soddisfare i seguenti requisiti:
  + Kernel Linux 4.4 o versioni successive.
  + Il kernel deve supportare [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1 ed è necessario abilitare e montare i seguenti cgroup:
    + Il cgroup di *memoria* AWS IoT Greengrass per impostare il limite di memoria per le funzioni Lambda containerizzate.
    + Il gruppo di *dispositivi* per le funzioni Lambda containerizzate per accedere ai dispositivi o ai volumi di sistema.

    Il software AWS IoT Greengrass Core non supporta cgroups v2.

    Per soddisfare questo requisito, avvia il dispositivo con i seguenti parametri del kernel Linux.

    ```
    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
    ```
**Suggerimento**  
Su un Raspberry Pi, modifica il `/boot/cmdline.txt` file per impostare i parametri del kernel del dispositivo.
  + È necessario abilitare le seguenti configurazioni del kernel Linux sul dispositivo:
    + Spazio dei nomi:
      + `CONFIG_IPC_NS`
      + `CONFIG_UTS_NS`
      + `CONFIG_USER_NS`
      + `CONFIG_PID_NS`
    + Cgroups:
      + `CONFIG_CGROUP_DEVICE`
      + `CONFIG_CGROUPS`
      + `CONFIG_MEMCG`
    + Altri:
      + `CONFIG_POSIX_MQUEUE`
      + `CONFIG_OVERLAY_FS`
      + `CONFIG_HAVE_ARCH_SECCOMP_FILTER`
      + `CONFIG_SECCOMP_FILTER`
      + `CONFIG_KEYS`
      + `CONFIG_SECCOMP`
      + `CONFIG_SHMEM`
**Suggerimento**  
Consulta la documentazione della tua distribuzione Linux per scoprire come verificare e impostare i parametri del kernel Linux. Puoi anche usare AWS IoT Device Tester for per AWS IoT Greengrass verificare che il tuo dispositivo soddisfi questi requisiti. Per ulteriori informazioni, consulta [Utilizzo AWS IoT Device Tester per AWS IoT Greengrass V2](device-tester-for-greengrass-ug.md).

## Configura un Account AWS
<a name="set-up-aws-account"></a>

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

**Per iscriverti a un Account AWS**

1. Apri la [https://portal.aws.amazon.com/billing/registrazione.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWS nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire [attività che richiedono l'accesso di un utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

Per creare un utente amministratore, scegli una delle seguenti opzioni.


****  

| Scelta di un modo per gestire il tuo amministratore | Per | Come | Puoi anche | 
| --- | --- | --- | --- | 
| In IAM Identity Center (Consigliato) | Usa credenziali a breve termine per accedere a AWS.Ciò è in linea con le best practice per la sicurezza. Per informazioni sulle best practice, consulta [Best practice per la sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) nella *Guida per l'utente di IAM*. | Segui le istruzioni riportate in [Nozioni di base](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) nella Guida per l'utente di AWS IAM Identity Center . | Configura l'accesso programmatico [configurando l'uso AWS IAM Identity Center nella Guida AWS CLI per](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html) l'AWS Command Line Interface utente. | 
| In IAM (Non consigliato) | Usa credenziali a lungo termine per accedere a AWS. | Segui le istruzioni in [Creare un utente IAM per l’accesso di emergenza](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html) nella Guida per l’utente di IAM. | Configura l’accesso programmatico seguendo quanto riportato in [Gestione delle chiavi di accesso per gli utenti IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html) nella Guida per l’utente di IAM. | 

# Installare il software AWS IoT Greengrass Core
<a name="install-greengrass-core-v2"></a>

AWS IoT Greengrass si estende AWS ai dispositivi periferici in modo che possano agire sui dati generati, mentre li utilizzano Cloud AWS per la gestione, l'analisi e lo storage durevole. Installa il software AWS IoT Greengrass Core sui dispositivi periferici da integrare con AWS IoT Greengrass e Cloud AWS.

**Importante**  
Prima di scaricare e installare il software AWS IoT Greengrass Core, verifica che il dispositivo principale soddisfi i [requisiti](greengrass-nucleus-component.md#greengrass-v2-requirements) per installare ed eseguire il software AWS IoT Greengrass Core v2.0.

Il software AWS IoT Greengrass Core include un programma di installazione che configura il dispositivo come dispositivo principale Greengrass. Quando esegui il programma di installazione, puoi configurare le opzioni, come la cartella principale e da utilizzare. Regione AWS Puoi scegliere di fare in modo che il programma di installazione crei le risorse IAM necessarie AWS IoT e necessarie per te. Puoi anche scegliere di implementare strumenti di sviluppo locali per configurare un dispositivo da utilizzare per lo sviluppo di componenti personalizzati.

Il software AWS IoT Greengrass Core richiede le seguenti risorse AWS IoT e quelle di IAM per connettersi Cloud AWS e funzionare:
+ Qualsiasi AWS IoT cosa. Quando si registra un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con AWS cui autenticarsi. Questo certificato consente al dispositivo di comunicare con AWS IoT e AWS IoT Greengrass. Per ulteriori informazioni, consulta [Autenticazione e autorizzazione del dispositivo per AWS IoT Greengrass](device-auth.md).
+ (Facoltativo) Qualsiasi gruppo di AWS IoT cose. Utilizzi i gruppi di cose per gestire flotte di dispositivi core Greengrass. Quando distribuisci componenti software sui tuoi dispositivi, puoi scegliere di distribuirli su singoli dispositivi o su gruppi di dispositivi. È possibile aggiungere un dispositivo a un gruppo di oggetti per distribuire i componenti software di quel gruppo di oggetti sul dispositivo. Per ulteriori informazioni, consulta [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md).
+ Un ruolo IAM. I dispositivi core Greengrass utilizzano il provider di AWS IoT Core credenziali per autorizzare le chiamate ai AWS servizi con un ruolo IAM. Questo ruolo consente al dispositivo di interagire AWS IoT, inviare log ad Amazon Logs e scaricare elementi di componenti personalizzati da Amazon CloudWatch Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3). Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).
+ Un alias di AWS IoT ruolo. I dispositivi core Greengrass utilizzano l'alias del ruolo per identificare il ruolo IAM da utilizzare. L'alias del ruolo consente di modificare il ruolo IAM mantenendo invariata la configurazione del dispositivo. Per ulteriori informazioni, consulta [Autorizzazione delle chiamate dirette ai AWS servizi nella Guida per](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) gli *AWS IoT Core sviluppatori*.

Scegli una delle seguenti opzioni per installare il software AWS IoT Greengrass Core sul tuo dispositivo principale.
+ **Installazione rapida**

  Scegli questa opzione per configurare un dispositivo Greengrass core nel minor numero di passaggi possibile. Il programma di installazione crea per te le risorse IAM necessarie AWS IoT . Questa opzione richiede che tu fornisca AWS le credenziali all'installatore per creare risorse nel tuo. Account AWS

  Non è possibile utilizzare questa opzione per l'installazione dietro un firewall o un proxy di rete. Se i tuoi dispositivi sono protetti da un firewall o da un proxy di rete, prendi in considerazione [l'installazione manuale](manual-installation.md).

  Per ulteriori informazioni, consulta [Installa il software AWS IoT Greengrass Core con provisioning automatico delle risorse](quick-installation.md).
+ **Installazione manuale**

  Scegli questa opzione per creare le AWS risorse richieste manualmente o per installarle dietro un firewall o un proxy di rete. Utilizzando un'installazione manuale, non è necessario concedere all'installatore l'autorizzazione per creare risorse nel proprio computer Account AWS, in quanto si creano le risorse necessarie AWS IoT e quelle IAM. Puoi anche configurare il dispositivo in modo che si connetta alla porta 443 o tramite un proxy di rete. Puoi anche configurare il software AWS IoT Greengrass Core per utilizzare una chiave privata e un certificato archiviati in un modulo di sicurezza hardware (HSM), Trusted Platform Module (TPM) o un altro elemento crittografico.

  Per ulteriori informazioni, consulta [Installa il software AWS IoT Greengrass Core con provisioning manuale delle risorse](manual-installation.md).
+ **Installazione con provisioning della flotta AWS IoT **

  Scegli questa opzione per creare le AWS risorse richieste da un modello di approvvigionamento AWS IoT della flotta. Puoi scegliere questa opzione per creare dispositivi simili in una flotta o se produci dispositivi che i tuoi clienti attiveranno successivamente, come veicoli o dispositivi per la casa intelligente. I dispositivi utilizzano certificati di attestazione per autenticare e fornire AWS risorse, incluso un certificato client X.509 che il dispositivo utilizza per connettersi al sistema Cloud AWS per il normale funzionamento. È possibile incorporare o aggiornare i certificati di attestazione nell'hardware del dispositivo durante la produzione e utilizzare lo stesso certificato di attestazione e la stessa chiave per effettuare il provisioning di più dispositivi. È inoltre possibile configurare i dispositivi in modo che si connettano alla porta 443 o tramite un proxy di rete.

  Per ulteriori informazioni, consulta [Installa il software AWS IoT Greengrass Core con il provisioning AWS IoT della flotta](fleet-provisioning.md).
+ **Installazione con provisioning personalizzato**

  Scegliete questa opzione per sviluppare un'applicazione Java personalizzata che fornisca le AWS risorse necessarie. È possibile scegliere questa opzione se si [creano certificati client X.509 personalizzati](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) o se si desidera un maggiore controllo sul processo di provisioning. AWS IoT Greengrass fornisce un'interfaccia che è possibile implementare per lo scambio di informazioni tra l'applicazione di provisioning personalizzata e il programma di installazione del AWS IoT Greengrass software Core.

  Per ulteriori informazioni, consulta [Installa il software AWS IoT Greengrass Core con provisioning personalizzato delle risorse](custom-provisioning.md).

AWS IoT Greengrass fornisce anche ambienti containerizzati che eseguono il software Core. AWS IoT Greengrass È possibile utilizzare un Dockerfile per [eseguirlo AWS IoT Greengrass in](run-greengrass-docker.md) un contenitore Docker.

**Topics**
+ [Installazione con provisioning automatico](quick-installation.md)
+ [Installazione con provisioning manuale](manual-installation.md)
+ [Installa con il provisioning della flotta](fleet-provisioning.md)
+ [Installazione con provisioning personalizzato](custom-provisioning.md)
+ [Argomenti dell'installatore](configure-installer.md)

# Installa il software AWS IoT Greengrass Core con provisioning automatico delle risorse
<a name="quick-installation"></a>

Il software AWS IoT Greengrass Core include un programma di installazione che configura il dispositivo come dispositivo principale Greengrass. Per configurare rapidamente un dispositivo, l'installatore può fornire il thing, il AWS IoT AWS IoT thing group, il ruolo IAM e l'alias di AWS IoT ruolo necessari per il funzionamento del dispositivo principale. Il programma di installazione può anche distribuire gli strumenti di sviluppo locali sul dispositivo principale, in modo da poter utilizzare il dispositivo per sviluppare e testare componenti software personalizzati. Il programma di installazione richiede AWS credenziali per fornire queste risorse e creare la distribuzione.

Se non è possibile fornire AWS le credenziali al dispositivo, è possibile fornire le AWS risorse necessarie al funzionamento del dispositivo principale. Puoi anche distribuire gli strumenti di sviluppo su un dispositivo principale da utilizzare come dispositivo di sviluppo. Ciò consente di fornire meno autorizzazioni al dispositivo quando si esegue il programma di installazione. Per ulteriori informazioni, consulta [Installa il software AWS IoT Greengrass Core con provisioning manuale delle risorse](manual-installation.md).

**Importante**  <a name="install-greengrass-core-requirements-note"></a>
Prima di scaricare il software AWS IoT Greengrass Core, verifica che il dispositivo principale soddisfi i [requisiti](greengrass-nucleus-component.md#greengrass-v2-requirements) per installare ed eseguire il software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Configura l'ambiente del dispositivo](#set-up-device-environment)
+ [Fornisci AWS le credenziali al dispositivo](#provide-installer-aws-credentials)
+ [Scaricate il software AWS IoT Greengrass Core](#download-greengrass-core-v2)
+ [Installa il software Core AWS IoT Greengrass](#run-greengrass-core-v2-installer)

## Configura l'ambiente del dispositivo
<a name="set-up-device-environment"></a>

Segui i passaggi di questa sezione per configurare un dispositivo Linux o Windows da utilizzare come dispositivo AWS IoT Greengrass principale.

### Configura un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Per configurare un dispositivo Linux per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva. I seguenti comandi mostrano come installare OpenJDK sul tuo dispositivo.
   + Per le distribuzioni basate su Debian o basate su Ubuntuu:

     ```
     sudo apt install default-jdk
     ```
   + Per le distribuzioni basate su Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + Per Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Per Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Al termine dell'installazione, esegui il comando seguente per verificare che Java funzioni sul tuo dispositivo Linux.

   ```
   java -version
   ```

   Il comando stampa la versione di Java in esecuzione sul dispositivo. Ad esempio, su una distribuzione basata su Debian, l'output potrebbe essere simile all'esempio seguente.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Facoltativo) Crea l'utente e il gruppo di sistema predefiniti che eseguono i componenti sul dispositivo. Puoi anche scegliere di lasciare che il programma di installazione del software AWS IoT Greengrass Core crei questo utente e gruppo durante l'installazione con l'argomento `--component-default-user` installer. Per ulteriori informazioni, consulta [Argomenti dell'installatore](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Verificate che l'utente che esegue il software AWS IoT Greengrass Core (in genere`root`) sia autorizzato a funzionare `sudo` con qualsiasi utente e gruppo.

   1. Eseguite il comando seguente per aprire il `/etc/sudoers` file.

      ```
      sudo visudo
      ```

   1. Verificate che l'autorizzazione per l'utente sia simile all'esempio seguente.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. **(Facoltativo) Per [eseguire funzioni Lambda containerizzate](run-lambda-functions.md), è necessario abilitare [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1 e abilitare e montare i cgroup di memoria e dispositivi.** Se non intendi eseguire funzioni Lambda containerizzate, puoi saltare questo passaggio.

   Per abilitare queste opzioni di cgroups, avvia il dispositivo con i seguenti parametri del kernel Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Per informazioni sulla visualizzazione e l'impostazione dei parametri del kernel per il tuo dispositivo, consulta la documentazione del tuo sistema operativo e del boot loader. Segui le istruzioni per impostare in modo permanente i parametri del kernel.

1. Installa tutte le altre dipendenze richieste sul tuo dispositivo come indicato dall'elenco dei requisiti in. [Requisiti per il dispositivo](greengrass-nucleus-component.md#greengrass-v2-requirements)

### Configura un dispositivo Windows
<a name="set-up-windows-device-environment"></a>

**Nota**  
Questa funzionalità è disponibile per la versione 2.5.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.<a name="set-up-windows-device-environment-procedure"></a>

**Per configurare un dispositivo Windows per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva.

1. Controlla se Java è disponibile nella variabile di sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) e aggiungilo in caso contrario. L' LocalSystem account esegue il software AWS IoT Greengrass Core, quindi è necessario aggiungere Java alla variabile di sistema PATH anziché alla variabile utente PATH per l'utente. Esegui questa operazione:

   1. Premi il tasto Windows per aprire il menu di avvio.

   1. Digita **environment variables** per cercare le opzioni di sistema dal menu di avvio.

   1. Nei risultati della ricerca del menu di avvio, scegli **Modifica le variabili di ambiente di sistema** per aprire la finestra delle **proprietà del sistema**.

   1. Scegli **Variabili di ambiente...** per aprire la finestra **Variabili d'ambiente**.

   1. In **Variabili di sistema**, seleziona **Percorso**, quindi scegli **Modifica**. Nella finestra **Modifica variabile di ambiente**, puoi visualizzare ogni percorso su una riga separata.

   1. Controlla se è presente il percorso della `bin` cartella di installazione di Java. Il percorso potrebbe essere simile all'esempio seguente.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Se la `bin` cartella di installazione Java non è presente in **Path**, scegliete **Nuovo** per aggiungerla, quindi scegliete **OK**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Aprite il prompt dei comandi di Windows (`cmd.exe`) come amministratore.

1. <a name="set-up-windows-device-environment-create"></a>Crea l'utente predefinito nell' LocalSystem account sul dispositivo Windows. Sostituiscilo *password* con una password sicura.

   ```
   net user /add ggc_user password
   ```
**Suggerimento**  <a name="windows-password-expiration-tip"></a>
A seconda della configurazione di Windows, la password dell'utente potrebbe essere impostata per scadere in date future. Per garantire che le tue applicazioni Greengrass continuino a funzionare, tieni traccia della scadenza della password e aggiornala prima che scada. Puoi anche impostare la password dell'utente in modo che non scada mai.  
Per verificare la scadenza di un utente e della relativa password, esegui il comando seguente.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Per impostare la password di un utente in modo che non scada mai, esegui il comando seguente.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Se utilizzi Windows 10 o versioni successive in cui il [`wmic`comando è obsoleto, esegui il comando](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic) seguente. PowerShell   

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Scarica e installa l'[PsExecutilità](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) di Microsoft sul dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilizzate l' PsExec utilità per memorizzare il nome utente e la password per l'utente predefinito nell'istanza di Credential Manager per l' LocalSystem account. Sostituiscila *password* con la password dell'utente che hai impostato in precedenza.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Se si **PsExec License Agreement**apre, scegli **Accept**di accettare la licenza ed esegui il comando.
**Nota**  
Sui dispositivi Windows, l' LocalSystem account esegue il Greengrass nucleus ed è necessario utilizzare l' PsExec utilità per memorizzare le informazioni utente predefinite nell'account. LocalSystem L'utilizzo dell'applicazione Credential Manager archivia queste informazioni nell'account Windows dell'utente attualmente connesso, anziché nell'account. LocalSystem 

## Fornisci AWS le credenziali al dispositivo
<a name="provide-installer-aws-credentials"></a>

Fornisci AWS le tue credenziali al dispositivo in modo che l'installatore possa fornire le risorse necessarie. AWS Per ulteriori informazioni sulle autorizzazioni richieste, consulta [Policy IAM minima per l'installatore per il provisioning delle risorse](provision-minimal-iam-policy.md).

**Per fornire AWS le credenziali al dispositivo**
+ <a name="installer-export-aws-credentials"></a>Fornisci AWS le tue credenziali al dispositivo in modo che l'installatore possa fornire le risorse AWS IoT e IAM per il tuo dispositivo principale. Per aumentare la sicurezza, ti consigliamo di ottenere credenziali temporanee per un ruolo IAM che consenta solo le autorizzazioni minime necessarie per il provisioning. Per ulteriori informazioni, consulta [Policy IAM minima per l'installatore per il provisioning delle risorse](provision-minimal-iam-policy.md).
**Nota**  
Il programma di installazione non salva né archivia le tue credenziali.

  Sul dispositivo, esegui una delle seguenti operazioni per recuperare le credenziali e renderle disponibili al programma di installazione del AWS IoT Greengrass software Core:
  + (Consigliato) Utilizza credenziali temporanee da AWS IAM Identity Center

    1. Fornisci l'ID della chiave di accesso, la chiave di accesso segreta e il token di sessione dall'IAM Identity Center. Per ulteriori informazioni, consulta Aggiornamento **manuale delle credenziali in Acquisizione e aggiornamento** [delle credenziali temporanee nella guida](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html#how-to-get-temp-credentials) per l'utente di *IAM Identity Center*.

    1. Esegui i seguenti comandi per fornire le credenziali al software Core. AWS IoT Greengrass 

------
#### [ Linux or Unix ]

       ```
       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ Windows Command Prompt (CMD) ]

       ```
       set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ PowerShell ]

       ```
       $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
       $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
       $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
       ```

------
  + Utilizza credenziali di sicurezza temporanee da un ruolo IAM:

    1. Fornisci l'ID della chiave di accesso, la chiave di accesso segreta e il token di sessione da un ruolo IAM che assumi. *Per ulteriori informazioni su come recuperare queste credenziali, consulta la sezione [Richiesta di credenziali di sicurezza temporanee nella Guida per l'utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) IAM.*

    1. Esegui i seguenti comandi per fornire le credenziali al software Core. AWS IoT Greengrass 

------
#### [ Linux or Unix ]

       ```
       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ Windows Command Prompt (CMD) ]

       ```
       set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
       ```

------
#### [ PowerShell ]

       ```
       $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
       $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
       $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
       ```

------
  + Utilizza le credenziali a lungo termine di un utente IAM:

    1. Fornisci l'ID della chiave di accesso e la chiave di accesso segreta per il tuo utente IAM. Puoi creare un utente IAM per il provisioning da eliminare successivamente. Per la policy IAM da fornire all'utente, consulta[Policy IAM minima per l'installatore per il provisioning delle risorse](provision-minimal-iam-policy.md). Per ulteriori informazioni su come recuperare le credenziali a lungo termine, consulta [Managing access keys for IAM users nella IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) *User Guide*.

    1. Esegui i seguenti comandi per fornire le credenziali al AWS IoT Greengrass software Core.

------
#### [ Linux or Unix ]

       ```
       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       ```

------
#### [ Windows Command Prompt (CMD) ]

       ```
       set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
       set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
       ```

------
#### [ PowerShell ]

       ```
       $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
       $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
       ```

------

    1. (Facoltativo) Se hai creato un utente IAM per il provisioning del tuo dispositivo Greengrass, elimina l'utente.

    1. (Facoltativo) Se hai utilizzato l'ID della chiave di accesso e la chiave di accesso segreta di un utente IAM esistente, aggiorna le chiavi dell'utente in modo che non siano più valide. Per ulteriori informazioni, consulta [Aggiornamento delle chiavi di accesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) nella *guida AWS Identity and Access Management per l'utente*.

## Scaricate il software AWS IoT Greengrass Core
<a name="download-greengrass-core-v2"></a>

È possibile scaricare la versione più recente del software AWS IoT Greengrass Core dal seguente indirizzo:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**Nota**  
È possibile scaricare una versione specifica del software AWS IoT Greengrass Core dal seguente percorso. Sostituiscila *version* con la versione da scaricare.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Per scaricare il software AWS IoT Greengrass Core**

1. <a name="installation-download-ggc-software-step"></a>Sul dispositivo principale, scaricate il software AWS IoT Greengrass Core in un file denominato`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Scaricando questo software accetti l'[Accordo di licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Facoltativo) Per verificare la firma del software Greengrass nucleus
**Nota**  
Questa funzionalità è disponibile con Greengrass nucleus versione 2.9.5 e successive.

   1. Usa il seguente comando per verificare la firma del tuo artefatto Greengrass nucleus:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. L'`jarsigner`invocazione produce un output che indica i risultati della verifica.

      1. Se il file zip Greengrass nucleus è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar verified.
         ```

      1. Se il file zip Greengrass nucleus non è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar is unsigned.
         ```

   1. Se hai fornito l'`-certs`opzione Jarsigner insieme alle `-verbose` opzioni `-verify` e, l'output include anche informazioni dettagliate sul certificato del firmatario.

1. <a name="installation-unzip-ggc-software-step"></a>Decomprimi il software AWS IoT Greengrass Core in una cartella sul tuo dispositivo. Sostituiscilo *GreengrassInstaller* con la cartella che desideri utilizzare.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Facoltativo) Eseguite il comando seguente per visualizzare la versione del software AWS IoT Greengrass Core.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**Importante**  <a name="installer-folder-2.4.0-warning"></a>
Se installi una versione del nucleo Greengrass precedente alla v2.4.0, non rimuovere questa cartella dopo aver installato il software Core. AWS IoT Greengrass Il software AWS IoT Greengrass Core utilizza i file in questa cartella per l'esecuzione.  
Se hai scaricato la versione più recente del software, installi la versione 2.4.0 o successiva e puoi rimuovere questa cartella dopo aver installato il software AWS IoT Greengrass Core.

## Installa il software Core AWS IoT Greengrass
<a name="run-greengrass-core-v2-installer"></a>

Eseguite il programma di installazione con argomenti che specificano di eseguire le seguenti operazioni:
+ <a name="install-argument-aws-resources"></a> AWS Create le risorse necessarie al funzionamento del dispositivo principale.
+ <a name="install-argument-component-default-user"></a>Specificare di utilizzare l'utente `ggc_user` del sistema per eseguire i componenti software sul dispositivo principale. Sui dispositivi Linux, questo comando specifica anche di utilizzare il gruppo di `ggc_group` sistema e il programma di installazione crea automaticamente l'utente e il gruppo di sistema.
+ <a name="install-argument-system-service"></a>Configura il software AWS IoT Greengrass Core come servizio di sistema che viene eseguito all'avvio. Sui dispositivi Linux, ciò richiede il [sistema di inizializzazione Systemd](https://en.wikipedia.org/wiki/Systemd).
**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Sui dispositivi Windows core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.

Per configurare un dispositivo di sviluppo con strumenti di sviluppo locali, specificate l'`--deploy-dev-tools true`argomento. L'implementazione degli strumenti di sviluppo locale può richiedere fino a un minuto dopo il completamento dell'installazione. 

Per ulteriori informazioni sugli argomenti che è possibile specificare, vedere. [Argomenti dell'installatore](configure-installer.md)

**Nota**  
<a name="jvm-tuning-note"></a>Se utilizzi AWS IoT Greengrass un dispositivo con memoria limitata, puoi controllare la quantità di memoria utilizzata dal software AWS IoT Greengrass Core. Per controllare l'allocazione della memoria, è possibile impostare le opzioni relative alla dimensione dell'heap JVM nel parametro di `jvmOptions` configurazione del componente nucleus. Per ulteriori informazioni, consulta [Controlla l'allocazione della memoria con le opzioni JVM](configure-greengrass-core-v2.md#jvm-tuning).

**Per installare il software Core AWS IoT Greengrass**

1. Esegui il programma di installazione AWS IoT Greengrass Core. Sostituisci i valori degli argomenti nel tuo comando come segue.
**Nota**  
In Windows esiste un limite di lunghezza del percorso di 260 caratteri. Se usi Windows, usa una cartella principale come `C:\greengrass\v2` o `D:\greengrass\v2` per mantenere i percorsi dei componenti Greengrass al di sotto del limite di 260 caratteri.<a name="installer-replace-arguments"></a>

   1. `/greengrass/v2`oppure*C:\$1greengrass\$1v2*: il percorso della cartella principale da utilizzare per installare il software AWS IoT Greengrass Core.

   1. *GreengrassInstaller*. Il percorso della cartella in cui è stato decompresso il programma di installazione del software AWS IoT Greengrass Core.

   1. *region*. Il Regione AWS luogo in cui trovare o creare risorse.

   1. *MyGreengrassCore*. Il nome del AWS IoT dispositivo principale Greengrass. Se l'oggetto non esiste, l'installatore lo crea. Il programma di installazione scarica i certificati per autenticarsi come oggetto. AWS IoT Per ulteriori informazioni, consulta [Autenticazione e autorizzazione del dispositivo per AWS IoT Greengrass](device-auth.md).
**Nota**  <a name="install-argument-thing-name-constraint"></a>
Il nome dell'oggetto non può contenere i due punti (`:`).

   1. *MyGreengrassCoreGroup*. Il nome del AWS IoT gruppo di oggetti per il tuo dispositivo principale Greengrass. Se il gruppo di oggetti non esiste, il programma di installazione lo crea e vi aggiunge l'oggetto. Se il gruppo di oggetti esiste e dispone di una distribuzione attiva, il dispositivo principale scarica ed esegue il software specificato dalla distribuzione.
**Nota**  <a name="install-argument-thing-group-name-constraint"></a>
Il nome del gruppo di cose non può contenere i due punti (`:`).

   1. *GreengrassV2IoTThingPolicy*. Il nome della AWS IoT policy che consente ai dispositivi core Greengrass di comunicare con AWS IoT e. AWS IoT Greengrass Se la AWS IoT politica non esiste, il programma di installazione crea una AWS IoT politica permissiva con questo nome. Puoi limitare le autorizzazioni di questa politica in base al tuo caso d'uso. Per ulteriori informazioni, consulta [AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali](device-auth.md#greengrass-core-minimal-iot-policy).

   1. *GreengrassV2TokenExchangeRole*. Il nome del ruolo IAM che consente al dispositivo principale Greengrass di ottenere credenziali temporanee AWS . Se il ruolo non esiste, l'installatore lo crea e crea e allega una policy denominata. `GreengrassV2TokenExchangeRoleAccess` Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).

   1. *GreengrassCoreTokenExchangeRoleAlias*. L'alias del ruolo IAM che consente al dispositivo principale Greengrass di ottenere credenziali temporanee in un secondo momento. Se l'alias del ruolo non esiste, il programma di installazione lo crea e lo indirizza al ruolo IAM specificato. Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --aws-region region \
     --thing-name MyGreengrassCore \
     --thing-group-name MyGreengrassCoreGroup \
     --thing-policy-name GreengrassV2IoTThingPolicy \
     --tes-role-name GreengrassV2TokenExchangeRole \
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \
     --component-default-user ggc_user:ggc_group \
     --provision true \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --aws-region region ^
     --thing-name MyGreengrassCore ^
     --thing-group-name MyGreengrassCoreGroup ^
     --thing-policy-name GreengrassV2IoTThingPolicy ^
     --tes-role-name GreengrassV2TokenExchangeRole ^
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ^
     --component-default-user ggc_user ^
     --provision true ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --aws-region region `
     --thing-name MyGreengrassCore `
     --thing-group-name MyGreengrassCoreGroup `
     --thing-policy-name GreengrassV2IoTThingPolicy `
     --tes-role-name GreengrassV2TokenExchangeRole `
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias `
     --component-default-user ggc_user `
     --provision true `
     --setup-system-service true
   ```

------
**Importante**  <a name="windows-system-service-installer-argument-important-note"></a>
Nei dispositivi Windows core, è necessario specificare `--setup-system-service true` di configurare il software AWS IoT Greengrass Core come servizio di sistema.

   Il programma di installazione stampa i seguenti messaggi se riesce:
   + Se si specifica`--provision`, il programma di installazione stampa `Successfully configured Nucleus with provisioned resource details` se ha configurato correttamente le risorse.
   + Se si specifica`--deploy-dev-tools`, il programma di installazione stampa `Configured Nucleus to deploy aws.greengrass.Cli component` se ha creato la distribuzione con successo.
   + Se si specifica`--setup-system-service true`, il programma di installazione stampa `Successfully set up Nucleus as a system service` se ha configurato ed eseguito il software as a service.
   + Se non viene specificato`--setup-system-service true`, il programma di installazione stampa `Launched Nucleus successfully` se l'operazione è riuscita ed ha eseguito il software.

1. Salta questo passaggio se hai installato [Nucleo Greengrass](greengrass-nucleus-component.md) la versione 2.0.4 o successiva. Se hai scaricato la versione più recente del software, hai installato la versione 2.0.4 o successiva.

   Esegui il comando seguente per impostare le autorizzazioni di file richieste per la cartella AWS IoT Greengrass principale del software Core. Sostituitela `/greengrass/v2` con la cartella principale specificata nel comando di installazione e */greengrass* sostituitela con la cartella principale della cartella principale.

   ```
   sudo chmod 755 /greengrass/v2 && sudo chmod 755 /greengrass
   ```

<a name="install-greengrass-core-run-software"></a>Se avete installato il software AWS IoT Greengrass Core come servizio di sistema, il programma di installazione esegue il software al posto vostro. In caso contrario, è necessario eseguire il software manualmente. Per ulteriori informazioni, consulta [Esegui il software AWS IoT Greengrass Core](run-greengrass-core-v2.md).

**Nota**  
Per impostazione predefinita, il ruolo IAM creato dal programma di installazione non consente l'accesso agli artefatti dei componenti nei bucket S3. Per distribuire componenti personalizzati che definiscono gli artefatti in Amazon S3, devi aggiungere autorizzazioni al ruolo per consentire al dispositivo principale di recuperare gli artefatti dei componenti. Per ulteriori informazioni, consulta [Consenti l'accesso ai bucket S3 per gli artefatti dei componenti](device-service-role.md#device-service-role-access-s3-bucket).  
Se non disponi ancora di un bucket S3 per gli artefatti dei componenti, puoi aggiungere queste autorizzazioni in un secondo momento dopo aver creato un bucket.

**Nota**  <a name="install-greengrass-core-recognized-note"></a>
<a name="install-greengrass-core-recognized-para"></a>Quando il software AWS IoT Greengrass Core si connette al cloud, il dispositivo verrà riconosciuto come dispositivo Core.

<a name="install-greengrass-core-next-steps-intro"></a>Per ulteriori informazioni su come configurare e utilizzare il software e AWS IoT Greengrass, consulta quanto segue:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurare il software AWS IoT Greengrass Core](configure-greengrass-core-v2.md)
+ [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md)
+ [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md)
+ [Interfaccia a riga di comando Greengrass](gg-cli.md)

# Installa il software AWS IoT Greengrass Core con provisioning manuale delle risorse
<a name="manual-installation"></a>

Il software AWS IoT Greengrass Core include un programma di installazione che configura il dispositivo come dispositivo principale Greengrass. Per configurare un dispositivo manualmente, puoi creare le risorse IAM necessarie AWS IoT e le risorse IAM da utilizzare per il dispositivo. Se crei queste risorse manualmente, non è necessario fornire AWS le credenziali all'installatore.

Quando installi manualmente il software AWS IoT Greengrass Core, puoi anche configurare il dispositivo per utilizzare un proxy di rete o connetterti alla porta AWS 443. Potrebbe essere necessario specificare queste opzioni di configurazione se il dispositivo è protetto da un firewall o da un proxy di rete, ad esempio. Per ulteriori informazioni, consulta [Connessione alla porta 443 o tramite un proxy di rete](configure-greengrass-core-v2.md#configure-alpn-network-proxy).

È inoltre possibile configurare il software AWS IoT Greengrass Core per utilizzare un modulo di sicurezza hardware (HSM) tramite l'interfaccia [PKCS \$111](https://en.wikipedia.org/wiki/PKCS_11). Questa funzionalità consente di archiviare in modo sicuro i file di chiavi e certificati privati in modo che non vengano esposti o duplicati nel software. È possibile archiviare chiavi e certificati privati su un modulo hardware come un HSM, un Trusted Platform Module (TPM) o un altro elemento crittografico. Questa funzionalità è disponibile solo sui dispositivi Linux. Per ulteriori informazioni sulla sicurezza dell'hardware e sui requisiti per utilizzarla, vedere[Integrazione della sicurezza hardware](hardware-security.md).

**Importante**  <a name="install-greengrass-core-requirements-note"></a>
Prima di scaricare il software AWS IoT Greengrass Core, verifica che il dispositivo principale soddisfi i [requisiti](greengrass-nucleus-component.md#greengrass-v2-requirements) per installare ed eseguire il software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Recupera AWS IoT gli endpoint](#retrieve-iot-endpoints)
+ [Crea qualsiasi cosa AWS IoT](#create-iot-thing)
+ [Crea il certificato dell'oggetto](#create-thing-certificate)
+ [Configura il certificato del oggetto](#configure-thing-certificate)
+ [Crea un ruolo di scambio di token](#create-token-exchange-role)
+ [Scarica i certificati sul dispositivo](#download-thing-certificates)
+ [Configura l'ambiente del dispositivo](#set-up-device-environment)
+ [Scaricate il software Core AWS IoT Greengrass](#download-greengrass-core-v2)
+ [Installa il software Core AWS IoT Greengrass](#run-greengrass-core-v2-installer-manual)

## Recupera AWS IoT gli endpoint
<a name="retrieve-iot-endpoints"></a>

Ottieni gli AWS IoT endpoint per te e salvali per Account AWS utilizzarli in un secondo momento. Il tuo dispositivo utilizza questi endpoint per connettersi a. AWS IoT Esegui questa operazione:

1. Ottieni l'endpoint di AWS IoT dati per il tuo. Account AWS

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

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Ottieni l'endpoint delle AWS IoT credenziali per il tuo. Account AWS

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   }
   ```

## Crea qualsiasi cosa AWS IoT
<a name="create-iot-thing"></a>

AWS IoT *le cose* rappresentano dispositivi ed entità logiche a cui si connettono AWS IoT. I dispositivi core Greengrass sono AWS IoT cose. Quando registri un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con cui autenticarsi. AWS

In questa sezione, crei AWS IoT qualcosa che rappresenta il tuo dispositivo.

**Per creare qualsiasi AWS IoT cosa**

1. Crea AWS IoT qualcosa per il tuo dispositivo. Sul tuo computer di sviluppo, esegui il seguente comando.
   + Sostituisci *MyGreengrassCore* con il nome dell'oggetto da usare. Questo nome è anche il nome del dispositivo principale Greengrass.
**Nota**  <a name="install-argument-thing-name-constraint"></a>
Il nome dell'oggetto non può contenere i due punti (`:`).

   ```
   aws iot create-thing --thing-name MyGreengrassCore
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "thingName": "MyGreengrassCore",
     "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
     "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42"
   }
   ```

1. (Facoltativo) Aggiungere l' AWS IoT oggetto a un gruppo di oggetti nuovo o esistente. Utilizzi i gruppi di cose per gestire flotte di dispositivi core Greengrass. Quando distribuisci componenti software sui tuoi dispositivi, puoi scegliere come target singoli dispositivi o gruppi di dispositivi. È possibile aggiungere un dispositivo a un gruppo di cose con una distribuzione Greengrass attiva per distribuire i componenti software di quel gruppo di cose sul dispositivo. Esegui questa operazione:

   1. (Facoltativo) Crea un gruppo di AWS IoT cose.
      + Sostituire *MyGreengrassCoreGroup* con il nome del gruppo di oggetti da creare.
**Nota**  <a name="install-argument-thing-group-name-constraint"></a>
Il nome del gruppo di cose non può contenere i due punti (`:`).

      ```
      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "thingGroupName": "MyGreengrassCoreGroup",
        "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup",
        "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa"
      }
      ```

   1. Aggiungere l' AWS IoT oggetto a un gruppo di oggetti.
      + Sostituiscilo *MyGreengrassCore* con il nome del tuo AWS IoT oggetto.
      + Sostituisci *MyGreengrassCoreGroup* con il nome del gruppo di oggetti.

      ```
      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup
      ```

      Il comando non produce alcun output se la richiesta ha esito positivo.

## Crea il certificato dell'oggetto
<a name="create-thing-certificate"></a>

<a name="create-thing-certificate-intro-1"></a>Quando si registra un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con AWS cui autenticarsi. Questo certificato consente al dispositivo di comunicare con AWS IoT e AWS IoT Greengrass.

<a name="create-thing-certificate-intro-2"></a>In questa sezione, crei e scarichi certificati a cui il tuo dispositivo può connettersi AWS.

<a name="create-thing-certificate-intro-3"></a>Se desideri configurare il software AWS IoT Greengrass Core per utilizzare un modulo di sicurezza hardware (HSM) per archiviare in modo sicuro la chiave privata e il certificato, segui i passaggi per creare il certificato da una chiave privata in un HSM. Altrimenti, segui i passaggi per creare il certificato e la chiave privata nel servizio. AWS IoT La funzionalità di sicurezza hardware è disponibile solo sui dispositivi Linux. Per ulteriori informazioni sulla sicurezza dell'hardware e sui requisiti per utilizzarla, vedere[Integrazione della sicurezza hardware](hardware-security.md).

### Creare il certificato e la chiave privata nel AWS IoT servizio
<a name="create-thing-certificate-cloud"></a><a name="create-thing-certificate-cloud-steps"></a>

**Per creare il certificato dell'oggetto**

1. Crea una cartella in cui scaricare i certificati relativi all' AWS IoT oggetto.

   ```
   mkdir greengrass-v2-certs
   ```

1. Crea e scarica i certificati relativi all' AWS IoT oggetto.

   ```
   aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----",
     "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\
   MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\
   MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\
   59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\
   hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\
   FQIDAQAB\
   -----END PUBLIC KEY-----\
   ",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\
   key omitted for security reasons\
   -----END RSA PRIVATE KEY-----\
   "
     }
   }
   ```

   Salva l'Amazon Resource Name (ARN) del certificato da utilizzare per configurare il certificato in un secondo momento.

### Crea il certificato da una chiave privata in un HSM
<a name="create-thing-certificate-hardware-security"></a>

**Nota**  
[Questa funzionalità è disponibile per la versione 2.5.3 e successive del componente Greengrass nucleus.](greengrass-nucleus-component.md) AWS IoT Greengrass attualmente non supporta questa funzionalità sui dispositivi Windows core. 

**Per creare il certificato Thing**

1. Sul dispositivo principale, inizializza un token PKCS \$111 nell'HSM e genera una chiave privata. La chiave privata deve essere una chiave RSA con una dimensione di chiave RSA-2048 (o superiore) o una chiave ECC.
**Nota**  <a name="hardware-security-module-requirements-key-notes"></a>
Per utilizzare un modulo di sicurezza hardware con chiavi ECC, è necessario utilizzare [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.6 o versione successiva.  
Per utilizzare un modulo di sicurezza hardware e un [gestore segreto](secret-manager-component.md), è necessario utilizzare un modulo di sicurezza hardware con chiavi RSA.

   Consulta la documentazione del tuo HSM per scoprire come inizializzare il token e generare la chiave privata. Se il tuo HSM supporta gli oggetti IDs, specifica un ID dell'oggetto quando generi la chiave privata. Salva l'ID dello slot, il PIN utente, l'etichetta dell'oggetto, l'ID dell'oggetto (se il tuo HSM ne utilizza uno) che specifichi quando inizializzi il token e generi la chiave privata. Questi valori vengono utilizzati successivamente quando si importa il certificato dell'oggetto nell'HSM e si configura il AWS IoT Greengrass software Core.

1. Crea una richiesta di firma del certificato (CSR) dalla chiave privata. AWS IoT utilizza questa CSR per creare un thing certificate per la chiave privata generata nell'HSM. Per informazioni su come creare una CSR dalla chiave privata, consulta la documentazione del tuo HSM. La CSR è un file, ad esempio. `iotdevicekey.csr`

1. Copia la CSR dal dispositivo al tuo computer di sviluppo. Se SSH e SCP sono abilitati sul computer di sviluppo e sul dispositivo, puoi usare il `scp` comando sul tuo computer di sviluppo per trasferire la CSR. Sostituiscilo *device-ip-address* con l'indirizzo IP del dispositivo e sostituiscilo *\$1/iotdevicekey.csr* con il percorso del file CSR sul dispositivo.

   ```
   scp device-ip-address:~/iotdevicekey.csr iotdevicekey.csr
   ```

1. Sul tuo computer di sviluppo, crea una cartella in cui scaricare il certificato relativo all' AWS IoT oggetto.

   ```
   mkdir greengrass-v2-certs
   ```

1. Usa il file CSR per creare e scaricare il certificato relativo all' AWS IoT oggetto sul tuo computer di sviluppo.

   ```
   aws iot create-certificate-from-csr --set-as-active --certificate-signing-request=file://iotdevicekey.csr --certificate-pem-outfile greengrass-v2-certs/device.pem.crt
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----"
   }
   ```

   Salva l'ARN del certificato da utilizzare per configurare il certificato in un secondo momento.

## Configura il certificato del oggetto
<a name="configure-thing-certificate"></a>

Allega il thing certificate all' AWS IoT oggetto che hai creato in precedenza e aggiungi una AWS IoT policy al certificato per definire le AWS IoT autorizzazioni per il dispositivo principale.

**Per configurare il certificato dell'oggetto**

1. Allega il certificato all' AWS IoT oggetto.
   + Sostituiscilo *MyGreengrassCore* con il nome del tuo AWS IoT oggetto.
   + Sostituisci il certificato Amazon Resource Name (ARN) con l'ARN del certificato che hai creato nel passaggio precedente.

   ```
   aws iot attach-thing-principal --thing-name MyGreengrassCore --principal arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
   ```

   Il comando non produce alcun output se la richiesta ha esito positivo.

1. Crea e allega una AWS IoT policy che definisca le AWS IoT autorizzazioni per il tuo dispositivo principale Greengrass. La seguente politica consente l'accesso a tutti gli argomenti MQTT e alle operazioni di Greengrass, in modo che il dispositivo funzioni con applicazioni personalizzate e modifiche future che richiedono nuove operazioni Greengrass. È possibile limitare questa politica in base al proprio caso d'uso. Per ulteriori informazioni, consulta [AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali](device-auth.md#greengrass-core-minimal-iot-policy).

   Se hai già configurato un dispositivo Greengrass core, puoi allegare la AWS IoT relativa policy invece di crearne una nuova.

   Esegui questa operazione:

   1. Crea un file che contenga il documento di AWS IoT policy richiesto dai dispositivi core Greengrass.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano greengrass-v2-iot-policy.json
      ```

      Copiate il seguente codice JSON nel file.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "iot:Publish",
              "iot:Subscribe",
              "iot:Receive",
              "iot:Connect",
              "greengrass:*"
            ],
            "Resource": [
              "*"
            ]
          }
        ]
      }
      ```

   1. Crea una AWS IoT politica dal documento di policy.
      + Sostituisci *GreengrassV2IoTThingPolicy* con il nome della politica da creare.

      ```
      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

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

   1. Allega la AWS IoT policy al certificato dell' AWS IoT oggetto.
      + Sostituisci *GreengrassV2IoTThingPolicy* con il nome della politica da allegare.
      + Sostituisci l'ARN di destinazione con l'ARN del certificato per il tuo oggetto. AWS IoT 

      ```
      aws iot attach-policy --policy-name GreengrassV2IoTThingPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

## Crea un ruolo di scambio di token
<a name="create-token-exchange-role"></a>

<a name="installation-create-token-exchange-role-intro"></a>I dispositivi core Greengrass utilizzano un ruolo di servizio IAM, chiamato *token exchange role*, per autorizzare le chiamate ai servizi. AWS Il dispositivo utilizza il provider di AWS IoT credenziali per ottenere AWS credenziali temporanee per questo ruolo, che consente al dispositivo di interagire AWS IoT, inviare log ad Amazon CloudWatch Logs e scaricare elementi dei componenti personalizzati da Amazon S3. Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).

<a name="installation-create-token-exchange-role-alias-intro"></a>Si utilizza un *alias di AWS IoT ruolo* per configurare il ruolo di scambio di token per i dispositivi principali Greengrass. Gli alias di ruolo consentono di modificare il ruolo di scambio di token per un dispositivo ma mantengono invariata la configurazione del dispositivo. Per ulteriori informazioni, consulta [Autorizzazione delle chiamate dirette ai AWS servizi nella Guida per](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) gli *AWS IoT Core sviluppatori*.

In questa sezione, crei un ruolo IAM per lo scambio di token e un alias di AWS IoT ruolo che rimanda al ruolo. Se hai già configurato un dispositivo principale Greengrass, puoi utilizzare il ruolo di scambio di token e l'alias del ruolo invece di crearne di nuovi. Quindi, configuri il dispositivo in modo che utilizzi quel ruolo e quell'alias. AWS IoT 

**Per creare un ruolo IAM per lo scambio di token**

1. <a name="create-token-exchange-role-create-iam-role"></a>Crea un ruolo IAM che il tuo dispositivo possa utilizzare come ruolo di scambio di token. Esegui questa operazione:

   1. Crea un file che contenga il documento sulla politica di fiducia richiesto dal ruolo di scambio di token.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano device-role-trust-policy.json
      ```

      Copiate il seguente codice JSON nel file.

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

   1. Crea il ruolo di scambio di token con il documento sulla politica di fiducia.
      + Sostituiscilo *GreengrassV2TokenExchangeRole* con il nome del ruolo IAM da creare.

      ```
      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "Role": {
          "Path": "/",
          "RoleName": "GreengrassV2TokenExchangeRole",
          "RoleId": "AROAZ2YMUHYHK5OKM77FB",
          "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
          "CreateDate": "2021-02-06T00:13:29+00:00",
          "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Service": "credentials.iot.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
              }
            ]
          }
        }
      ```

   1. Crea un file che contenga il documento sulla politica di accesso richiesto dal ruolo di scambio di token.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano device-role-access-policy.json
      ```

      Copiate il seguente codice JSON nel file.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "s3:GetBucketLocation"
            ],
            "Resource": "*"
          }
        ]
      }
      ```
**Nota**  
Questa politica di accesso non consente l'accesso agli artefatti dei componenti nei bucket S3. Per distribuire componenti personalizzati che definiscono gli artefatti in Amazon S3, devi aggiungere autorizzazioni al ruolo per consentire al dispositivo principale di recuperare gli artefatti dei componenti. Per ulteriori informazioni, consulta [Consenti l'accesso ai bucket S3 per gli artefatti dei componenti](device-service-role.md#device-service-role-access-s3-bucket).  
Se non disponi ancora di un bucket S3 per gli artefatti dei componenti, puoi aggiungere queste autorizzazioni in un secondo momento dopo aver creato un bucket.

   1. Crea la policy IAM dal documento di policy.
      + Sostituiscila *GreengrassV2TokenExchangeRoleAccess* con il nome della policy IAM da creare.

      ```
      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "Policy": {
          "PolicyName": "GreengrassV2TokenExchangeRoleAccess",
          "PolicyId": "ANPAZ2YMUHYHACI7C5Z66",
          "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
          "Path": "/",
          "DefaultVersionId": "v1",
          "AttachmentCount": 0,
          "PermissionsBoundaryUsageCount": 0,
          "IsAttachable": true,
          "CreateDate": "2021-02-06T00:37:17+00:00",
          "UpdateDate": "2021-02-06T00:37:17+00:00"
        }
      }
      ```

   1. Allega la policy IAM al ruolo di scambio di token.
      + Sostituisci *GreengrassV2TokenExchangeRole* con il nome del ruolo IAM.
      + Sostituisci l'ARN della policy con l'ARN della policy IAM che hai creato nel passaggio precedente.

      ```
      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

1. <a name="create-token-exchange-role-create-iot-role-alias"></a>Crea un alias di AWS IoT ruolo che punti al ruolo di scambio di token.
   + Sostituiscilo *GreengrassCoreTokenExchangeRoleAlias* con il nome dell'alias del ruolo da creare.
   + Sostituisci il ruolo ARN con l'ARN del ruolo IAM creato nel passaggio precedente.

   ```
   aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "roleAlias": "GreengrassCoreTokenExchangeRoleAlias",
     "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
   }
   ```
**Nota**  
Per creare un alias di ruolo, devi disporre dell'autorizzazione a passare il ruolo IAM per lo scambio di token a. AWS IoT Se ricevi un messaggio di errore quando tenti di creare un alias di ruolo, verifica che AWS l'utente disponga di questa autorizzazione. *Per ulteriori informazioni, consulta [Concessione a un utente delle autorizzazioni per il trasferimento di un ruolo a un AWS servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) nella Guida per l'AWS Identity and Access Management utente.*

1. Crea e allega una AWS IoT policy che consenta al tuo dispositivo principale Greengrass di utilizzare l'alias del ruolo per assumere il ruolo di scambio di token. Se hai già configurato un dispositivo principale Greengrass, puoi allegare la sua AWS IoT politica di alias di ruolo invece di crearne uno nuovo. Esegui questa operazione:

   1. (Facoltativo) Create un file che contenga il documento di AWS IoT policy richiesto dall'alias di ruolo.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano greengrass-v2-iot-role-alias-policy.json
      ```

      Copiate il seguente codice JSON nel file.
      + Sostituisci l'ARN della risorsa con l'ARN del tuo alias di ruolo.

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:AssumeRoleWithCertificate",
            "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
          }
        ]
      }
      ```

   1. Crea una AWS IoT politica dal documento di policy.
      + Sostituisci *GreengrassCoreTokenExchangeRoleAliasPolicy* con il nome della AWS IoT politica da creare.

      ```
      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy",
        "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy",
        "policyDocument": "{
          \\"Version\\":\\"2012-10-17		 	 	 \\",
          \\"Statement\\": [
            {
              \\"Effect\\": \\"Allow\\",
              \\"Action\\": \\"iot:AssumeRoleWithCertificate\\",
              \\"Resource\\": \\"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\\"
            }
          ]
        }",
        "policyVersionId": "1"
      }
      ```

   1. Allega la AWS IoT policy al certificato dell' AWS IoT oggetto.
      + Sostituisci *GreengrassCoreTokenExchangeRoleAliasPolicy* con il nome della AWS IoT politica relativa agli alias del ruolo.
      + Sostituisci l'ARN di destinazione con l'ARN del certificato per il tuo oggetto. AWS IoT 

      ```
      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

## Scarica i certificati sul dispositivo
<a name="download-thing-certificates"></a>

In precedenza, avevi scaricato il certificato del dispositivo sul computer di sviluppo. In questa sezione, si copia il certificato sul dispositivo principale per configurare il dispositivo con i certificati a cui viene utilizzato per la connessione AWS IoT. Puoi anche scaricare il certificato Amazon Root Certificate Authority (CA). Se utilizzi un HSM, in questa sezione importi anche il file del certificato nell'HSM.
+ Se in precedenza hai creato il certificato e la chiave privata nel AWS IoT servizio, segui i passaggi per scaricare i certificati con chiave privata e file di certificato.
+ Se in precedenza hai creato il certificato dell'oggetto da una chiave privata in un modulo di sicurezza hardware (HSM), segui i passaggi per scaricare i certificati con la chiave privata e il certificato in un HSM.

### Scarica i certificati con chiave privata e file di certificato
<a name="download-thing-certificates-without-hardware-security"></a>

**Per scaricare i certificati sul dispositivo**

1. <a name="installation-copy-thing-certificate-to-device"></a>Copia il certificato AWS IoT Thing dal tuo computer di sviluppo al dispositivo. Se SSH e SCP sono abilitati sul computer di sviluppo e sul dispositivo, puoi usare il `scp` comando sul tuo computer di sviluppo per trasferire il certificato. *device-ip-address*Sostituiscilo con l'indirizzo IP del tuo dispositivo.

   ```
   scp -r greengrass-v2-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>Crea la cartella principale Greengrass sul dispositivo. Successivamente installerai il software AWS IoT Greengrass Core in questa cartella.
**Nota**  
In Windows esiste un limite di lunghezza del percorso di 260 caratteri. Se usi Windows, usa una cartella principale come `C:\greengrass\v2` o `D:\greengrass\v2` per mantenere i percorsi dei componenti Greengrass al di sotto del limite di 260 caratteri.

------
#### [ Linux or Unix ]
   + `/greengrass/v2`Sostituiscilo con la cartella da usare.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Solo Linux) Imposta le autorizzazioni del genitore della cartella principale di Greengrass.
   + Sostituiscilo */greengrass* con quello principale della cartella principale.

   ```
   sudo chmod 755 /greengrass
   ```

1. Copia i AWS IoT Thing Certificates nella cartella principale di Greengrass.

------
#### [ Linux or Unix ]
   + Sostituisci `/greengrass/v2` con la cartella principale di Greengrass.

   ```
   sudo cp -R ~/greengrass-v2-certs/* /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   robocopy %USERPROFILE%\greengrass-v2-certs C:\greengrass\v2 /E
   ```

------
#### [ PowerShell ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   cp -Path ~\greengrass-v2-certs\* -Destination C:\greengrass\v2
   ```

------

1. <a name="installation-download-root-ca-certificate"></a>Scarica il certificato Amazon Root Certificate Authority (CA). AWS IoT per impostazione predefinita, i certificati sono associati al certificato CA root di Amazon.

------
#### [ Linux or Unix ]

   ```
   sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

### Scarica i certificati con la chiave privata e il certificato in un HSM
<a name="download-thing-certificates-with-hardware-security"></a>

**Nota**  
[Questa funzionalità è disponibile per la versione 2.5.3 e successive del componente Greengrass nucleus.](greengrass-nucleus-component.md) AWS IoT Greengrass attualmente non supporta questa funzionalità sui dispositivi Windows core. 

**Per scaricare i certificati sul dispositivo**

1. <a name="installation-copy-thing-certificate-to-device"></a>Copia il certificato AWS IoT Thing dal tuo computer di sviluppo al dispositivo. Se SSH e SCP sono abilitati sul computer di sviluppo e sul dispositivo, puoi usare il `scp` comando sul tuo computer di sviluppo per trasferire il certificato. *device-ip-address*Sostituiscilo con l'indirizzo IP del tuo dispositivo.

   ```
   scp -r greengrass-v2-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>Crea la cartella principale Greengrass sul dispositivo. Successivamente installerai il software AWS IoT Greengrass Core in questa cartella.
**Nota**  
In Windows esiste un limite di lunghezza del percorso di 260 caratteri. Se usi Windows, usa una cartella principale come `C:\greengrass\v2` o `D:\greengrass\v2` per mantenere i percorsi dei componenti Greengrass al di sotto del limite di 260 caratteri.

------
#### [ Linux or Unix ]
   + `/greengrass/v2`Sostituiscilo con la cartella da usare.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Solo Linux) Imposta le autorizzazioni del genitore della cartella principale di Greengrass.
   + Sostituiscilo */greengrass* con quello principale della cartella principale.

   ```
   sudo chmod 755 /greengrass
   ```

1. Importa il file del certificato dell'oggetto`~/greengrass-v2-certs/device.pem.crt`, nell'HSM. Consulta la documentazione del tuo HSM per scoprire come importare i certificati al suo interno. Importa il certificato utilizzando lo stesso token, ID slot, PIN utente, etichetta dell'oggetto e ID oggetto (se il tuo HSM ne utilizza uno) con cui hai generato la chiave privata nell'HSM in precedenza.
**Nota**  
Se hai generato la chiave privata in precedenza senza un ID di oggetto e il certificato ha un ID oggetto, imposta l'ID dell'oggetto della chiave privata sullo stesso valore del certificato. Consultate la documentazione del vostro HSM per scoprire come impostare l'ID dell'oggetto per l'oggetto chiave privata.

1. (Facoltativo) Eliminare il file del certificato dell'oggetto, in modo che esista solo nell'HSM.

   ```
   rm ~/greengrass-v2-certs/device.pem.crt
   ```

1. <a name="installation-download-root-ca-certificate"></a>Scarica il certificato Amazon Root Certificate Authority (CA). AWS IoT per impostazione predefinita, i certificati sono associati al certificato CA root di Amazon.

------
#### [ Linux or Unix ]

   ```
   sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

## Configura l'ambiente del dispositivo
<a name="set-up-device-environment"></a>

Segui i passaggi di questa sezione per configurare un dispositivo Linux o Windows da utilizzare come dispositivo AWS IoT Greengrass principale.

### Configura un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Per configurare un dispositivo Linux per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva. I seguenti comandi mostrano come installare OpenJDK sul tuo dispositivo.
   + Per le distribuzioni basate su Debian o basate su Ubuntuu:

     ```
     sudo apt install default-jdk
     ```
   + Per le distribuzioni basate su Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + Per Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Per Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Al termine dell'installazione, esegui il comando seguente per verificare che Java funzioni sul tuo dispositivo Linux.

   ```
   java -version
   ```

   Il comando stampa la versione di Java in esecuzione sul dispositivo. Ad esempio, su una distribuzione basata su Debian, l'output potrebbe essere simile all'esempio seguente.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Facoltativo) Crea l'utente e il gruppo di sistema predefiniti che eseguono i componenti sul dispositivo. Puoi anche scegliere di lasciare che il programma di installazione del software AWS IoT Greengrass Core crei questo utente e gruppo durante l'installazione con l'argomento `--component-default-user` installer. Per ulteriori informazioni, consulta [Argomenti dell'installatore](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Verificate che l'utente che esegue il software AWS IoT Greengrass Core (in genere`root`) sia autorizzato a funzionare `sudo` con qualsiasi utente e gruppo.

   1. Eseguite il comando seguente per aprire il `/etc/sudoers` file.

      ```
      sudo visudo
      ```

   1. Verificate che l'autorizzazione per l'utente sia simile all'esempio seguente.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. **(Facoltativo) Per [eseguire funzioni Lambda containerizzate](run-lambda-functions.md), è necessario abilitare [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1 e abilitare e montare i cgroup di memoria e dispositivi.** Se non intendi eseguire funzioni Lambda containerizzate, puoi saltare questo passaggio.

   Per abilitare queste opzioni di cgroups, avvia il dispositivo con i seguenti parametri del kernel Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Per informazioni sulla visualizzazione e l'impostazione dei parametri del kernel per il tuo dispositivo, consulta la documentazione del tuo sistema operativo e del boot loader. Segui le istruzioni per impostare in modo permanente i parametri del kernel.

1. Installa tutte le altre dipendenze richieste sul tuo dispositivo come indicato dall'elenco dei requisiti in. [Requisiti per il dispositivo](greengrass-nucleus-component.md#greengrass-v2-requirements)

### Configura un dispositivo Windows
<a name="set-up-windows-device-environment"></a>

**Nota**  
Questa funzionalità è disponibile per la versione 2.5.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.<a name="set-up-windows-device-environment-procedure"></a>

**Per configurare un dispositivo Windows per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva.

1. Controlla se Java è disponibile nella variabile di sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) e aggiungilo in caso contrario. L' LocalSystem account esegue il software AWS IoT Greengrass Core, quindi è necessario aggiungere Java alla variabile di sistema PATH anziché alla variabile utente PATH per l'utente. Esegui questa operazione:

   1. Premi il tasto Windows per aprire il menu di avvio.

   1. Digita **environment variables** per cercare le opzioni di sistema dal menu di avvio.

   1. Nei risultati della ricerca del menu di avvio, scegli **Modifica le variabili di ambiente di sistema** per aprire la finestra delle **proprietà del sistema**.

   1. Scegli **Variabili di ambiente...** per aprire la finestra **Variabili d'ambiente**.

   1. In **Variabili di sistema**, seleziona **Percorso**, quindi scegli **Modifica**. Nella finestra **Modifica variabile di ambiente**, puoi visualizzare ogni percorso su una riga separata.

   1. Controlla se è presente il percorso della `bin` cartella di installazione di Java. Il percorso potrebbe essere simile all'esempio seguente.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Se la `bin` cartella di installazione Java non è presente in **Path**, scegliete **Nuovo** per aggiungerla, quindi scegliete **OK**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Aprite il prompt dei comandi di Windows (`cmd.exe`) come amministratore.

1. <a name="set-up-windows-device-environment-create"></a>Crea l'utente predefinito nell' LocalSystem account sul dispositivo Windows. Sostituiscilo *password* con una password sicura.

   ```
   net user /add ggc_user password
   ```
**Suggerimento**  <a name="windows-password-expiration-tip"></a>
A seconda della configurazione di Windows, la password dell'utente potrebbe essere impostata per scadere in date future. Per garantire che le tue applicazioni Greengrass continuino a funzionare, tieni traccia della scadenza della password e aggiornala prima che scada. Puoi anche impostare la password dell'utente in modo che non scada mai.  
Per verificare la scadenza di un utente e della relativa password, esegui il comando seguente.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Per impostare la password di un utente in modo che non scada mai, esegui il comando seguente.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Se utilizzi Windows 10 o versioni successive in cui il [`wmic`comando è obsoleto, esegui il comando](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic) seguente. PowerShell   

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Scarica e installa l'[PsExecutilità](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) di Microsoft sul dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilizzate l' PsExec utilità per memorizzare il nome utente e la password per l'utente predefinito nell'istanza di Credential Manager per l' LocalSystem account. Sostituiscila *password* con la password dell'utente che hai impostato in precedenza.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Se si **PsExec License Agreement**apre, scegli **Accept**di accettare la licenza ed esegui il comando.
**Nota**  
Sui dispositivi Windows, l' LocalSystem account esegue il Greengrass nucleus ed è necessario utilizzare l' PsExec utilità per memorizzare le informazioni utente predefinite nell'account. LocalSystem L'utilizzo dell'applicazione Credential Manager archivia queste informazioni nell'account Windows dell'utente attualmente connesso, anziché nell'account. LocalSystem 

## Scaricate il software Core AWS IoT Greengrass
<a name="download-greengrass-core-v2"></a>

È possibile scaricare la versione più recente del software AWS IoT Greengrass Core dal seguente indirizzo:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**Nota**  
È possibile scaricare una versione specifica del software AWS IoT Greengrass Core dal seguente percorso. Sostituiscila *version* con la versione da scaricare.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Per scaricare il software AWS IoT Greengrass Core**

1. <a name="installation-download-ggc-software-step"></a>Sul dispositivo principale, scaricate il software AWS IoT Greengrass Core in un file denominato`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Scaricando questo software accetti l'[Accordo di licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Facoltativo) Per verificare la firma del software Greengrass nucleus
**Nota**  
Questa funzionalità è disponibile con Greengrass nucleus versione 2.9.5 e successive.

   1. Usa il seguente comando per verificare la firma del tuo artefatto Greengrass nucleus:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. L'`jarsigner`invocazione produce un output che indica i risultati della verifica.

      1. Se il file zip Greengrass nucleus è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar verified.
         ```

      1. Se il file zip Greengrass nucleus non è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar is unsigned.
         ```

   1. Se hai fornito l'`-certs`opzione Jarsigner insieme alle `-verbose` opzioni `-verify` e, l'output include anche informazioni dettagliate sul certificato del firmatario.

1. <a name="installation-unzip-ggc-software-step"></a>Decomprimi il software AWS IoT Greengrass Core in una cartella sul tuo dispositivo. Sostituiscilo *GreengrassInstaller* con la cartella che desideri utilizzare.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Facoltativo) Eseguite il comando seguente per visualizzare la versione del software AWS IoT Greengrass Core.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**Importante**  <a name="installer-folder-2.4.0-warning"></a>
Se installi una versione del nucleo Greengrass precedente alla v2.4.0, non rimuovere questa cartella dopo aver installato il software Core. AWS IoT Greengrass Il software AWS IoT Greengrass Core utilizza i file in questa cartella per l'esecuzione.  
Se hai scaricato la versione più recente del software, installi la versione 2.4.0 o successiva e puoi rimuovere questa cartella dopo aver installato il software AWS IoT Greengrass Core.

## Installa il software Core AWS IoT Greengrass
<a name="run-greengrass-core-v2-installer-manual"></a>

Esegui il programma di installazione con argomenti che specificano le seguenti azioni:
+ Esegui l'installazione da un file di configurazione parziale che specifica di utilizzare le AWS risorse e i certificati creati in precedenza. Il software AWS IoT Greengrass Core utilizza un file di configurazione che specifica la configurazione di ogni componente Greengrass sul dispositivo. Il programma di installazione crea un file di configurazione completo a partire dal file di configurazione parziale fornito dall'utente.
+ <a name="install-argument-component-default-user"></a>Specificate di utilizzare l'utente `ggc_user` del sistema per eseguire i componenti software sul dispositivo principale. Sui dispositivi Linux, questo comando specifica anche di utilizzare il gruppo di `ggc_group` sistema e il programma di installazione crea automaticamente l'utente e il gruppo di sistema.
+ <a name="install-argument-system-service"></a>Configura il software AWS IoT Greengrass Core come servizio di sistema che viene eseguito all'avvio. Sui dispositivi Linux, ciò richiede il [sistema di inizializzazione Systemd](https://en.wikipedia.org/wiki/Systemd).
**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Sui dispositivi Windows core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.

Per ulteriori informazioni sugli argomenti che è possibile specificare, vedere[Argomenti dell'installatore](configure-installer.md).

**Nota**  
<a name="jvm-tuning-note"></a>Se utilizzi AWS IoT Greengrass un dispositivo con memoria limitata, puoi controllare la quantità di memoria utilizzata dal software AWS IoT Greengrass Core. Per controllare l'allocazione della memoria, è possibile impostare le opzioni relative alla dimensione dell'heap JVM nel parametro di `jvmOptions` configurazione del componente nucleus. Per ulteriori informazioni, consulta [Controlla l'allocazione della memoria con le opzioni JVM](configure-greengrass-core-v2.md#jvm-tuning).
+ Se in precedenza hai creato il certificato e la chiave privata nel AWS IoT servizio, segui i passaggi per installare il software AWS IoT Greengrass Core con la chiave privata e i file di certificato.
+ Se in precedenza hai creato il certificato dell'oggetto da una chiave privata in un modulo di sicurezza hardware (HSM), segui i passaggi per installare il software AWS IoT Greengrass Core con la chiave privata e il certificato in un HSM.

### Installa il software AWS IoT Greengrass Core con chiave privata e file di certificato
<a name="manual-installation-without-hardware-security"></a>

**Per installare il software AWS IoT Greengrass Core**

1. <a name="installer-check-greengrass-core-software-version"></a>Controlla la versione del software AWS IoT Greengrass Core.
   + Sostituisci *GreengrassInstaller* con il percorso della cartella che contiene il software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Utilizzate un editor di testo per creare un file di configurazione denominato `config.yaml` da fornire all'installatore.

   <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copiate il seguente contenuto YAML nel file. Questo file di configurazione parziale specifica i parametri di sistema e i parametri del nucleo di Greengrass.

   ```
   ---
   system:
     certificateFilePath: "/greengrass/v2/device.pem.crt"
     privateKeyPath: "/greengrass/v2/private.pem.key"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.16.1"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   ```

   Successivamente, esegui queste operazioni:
   + Sostituisci ogni istanza di `/greengrass/v2` con la cartella principale di Greengrass.
   + Sostituisci *MyGreengrassCore* con il nome della AWS IoT cosa.
   + Sostituire *2.16.1* con la versione del software AWS IoT Greengrass Core.
   + Sostituisci *us-west-2* con la Regione AWS posizione in cui hai creato le risorse.
   + Sostituisci *GreengrassCoreTokenExchangeRoleAlias* con il nome dell'alias del ruolo di scambio di token.
   + Sostituiscilo `iotDataEndpoint` con il tuo endpoint di AWS IoT dati.
   + Sostituisci l'`iotCredEndpoint`endpoint con AWS IoT le tue credenziali.
**Nota**  
In questo file di configurazione, è possibile personalizzare altre opzioni di configurazione del nucleo, come le porte e il proxy di rete da utilizzare, come mostrato nell'esempio seguente. Per ulteriori informazioni, vedere [Greengrass nucleus](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration) configuration.  

   ```
   ---
   system:
     certificateFilePath: "/greengrass/v2/device.pem.crt"
     privateKeyPath: "/greengrass/v2/private.pem.key"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.16.1"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "https://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
   ```

1. Eseguite il programma di installazione e specificate di `--init-config` fornire il file di configurazione.
   + Sostituisci `/greengrass/v2` o *C:\$1greengrass\$1v2* con la cartella principale di Greengrass.
   + Sostituisci ogni istanza di *GreengrassInstaller* con la cartella in cui hai decompresso il programma di installazione.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**Importante**  <a name="windows-system-service-installer-argument-important-note"></a>
Nei dispositivi Windows Core, è necessario specificare `--setup-system-service true` di configurare il software AWS IoT Greengrass Core come servizio di sistema.

   <a name="installer-setup-system-service-output-message"></a>Se si specifica`--setup-system-service true`, il programma di installazione stampa `Successfully set up Nucleus as a system service` se ha configurato ed eseguito il software come servizio di sistema. Altrimenti, il programma di installazione non emette alcun messaggio se installa il software correttamente.
**Nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
Non è possibile utilizzare l'`deploy-dev-tools`argomento per distribuire strumenti di sviluppo locali quando si esegue il programma di installazione senza l'argomento. `--provision true` Per informazioni sulla distribuzione della CLI Greengrass direttamente sul dispositivo, consulta. [Interfaccia a riga di comando Greengrass](gg-cli.md)

1. <a name="installer-verify-installation"></a>Verifica l'installazione visualizzando i file nella cartella principale.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Se l'installazione è riuscita, la cartella principale contiene diverse cartelle, ad esempio `config``packages`, e`logs`.

### Installa il software AWS IoT Greengrass Core con la chiave privata e il certificato in un HSM
<a name="manual-installation-with-hardware-security"></a>

**Nota**  
[Questa funzionalità è disponibile per la versione 2.5.3 e successive del componente Greengrass nucleus.](greengrass-nucleus-component.md) AWS IoT Greengrass attualmente non supporta questa funzionalità sui dispositivi Windows core. 

**Per installare il software AWS IoT Greengrass Core**

1. <a name="installer-check-greengrass-core-software-version"></a>Controlla la versione del software AWS IoT Greengrass Core.
   + Sostituisci *GreengrassInstaller* con il percorso della cartella che contiene il software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Per consentire al software AWS IoT Greengrass Core di utilizzare la chiave privata e il certificato nell'HSM, installate il [componente del provider PKCS \$111](pkcs11-provider-component.md) quando installate il software AWS IoT Greengrass Core. Il componente del provider PKCS \$111 è un plug-in che è possibile configurare durante l'installazione. È possibile scaricare la versione più recente del componente del provider PKCS \$111 dalla seguente posizione:
   + [https://d2s8p88vqu9w66.cloudfront. net/releases/Pkcs11Provider/aws.greengrass.crypto.pkcs11Provider-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar)

   Scarica il plugin del provider PKCS \$111 in un file denominato. `aws.greengrass.crypto.Pkcs11Provider.jar` Sostituiscilo *GreengrassInstaller* con la cartella che desideri utilizzare.

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar > GreengrassInstaller/aws.greengrass.crypto.Pkcs11Provider.jar
   ```

   <a name="core-software-license"></a>Scaricando questo software accetti l'[Accordo di licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. Utilizzate un editor di testo per creare un file di configurazione denominato `config.yaml` da fornire all'installatore.

   <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copiate il seguente contenuto YAML nel file. Questo file di configurazione parziale specifica i parametri di sistema, i parametri Greengrass nucleus e i parametri del provider PKCS \$111.

   ```
   ---
   system:
     certificateFilePath: "pkcs11:object=iotdevicekey;type=cert"
     privateKeyPath: "pkcs11:object=iotdevicekey;type=private"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.16.1"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
     aws.greengrass.crypto.Pkcs11Provider:
       configuration:
         name: "softhsm_pkcs11"
         library: "/usr/local/Cellar/softhsm/2.6.1/lib/softhsm/libsofthsm2.so"
         slot: 1
         userPin: "1234"
   ```

   Successivamente, esegui queste operazioni:
   + Sostituisci ogni istanza di *iotdevicekey* PKCS \$111 URIs con l'etichetta dell'oggetto in cui hai creato la chiave privata e importato il certificato.
   + Sostituisci ogni istanza di `/greengrass/v2` con la cartella principale di Greengrass.
   + Sostituisci *MyGreengrassCore* con il nome della AWS IoT cosa.
   + Sostituire *2.16.1* con la versione del software AWS IoT Greengrass Core.
   + Sostituisci *us-west-2* con la Regione AWS posizione in cui hai creato le risorse.
   + Sostituisci *GreengrassCoreTokenExchangeRoleAlias* con il nome dell'alias del ruolo di scambio di token.
   + Sostituiscilo `iotDataEndpoint` con il tuo endpoint di AWS IoT dati.
   + Sostituisci l'`iotCredEndpoint`endpoint con AWS IoT le tue credenziali.
   + Sostituisci i parametri di configurazione per il `aws.greengrass.crypto.Pkcs11Provider` componente con i valori per la configurazione HSM sul dispositivo principale.
**Nota**  
In questo file di configurazione, è possibile personalizzare altre opzioni di configurazione del nucleo, come le porte e il proxy di rete da utilizzare, come mostrato nell'esempio seguente. Per ulteriori informazioni, vedere [Greengrass nucleus](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration) configuration.  

   ```
   ---
   system:
     certificateFilePath: "pkcs11:object=iotdevicekey;type=cert"
     privateKeyPath: "pkcs11:object=iotdevicekey;type=private"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.16.1"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "https://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
     aws.greengrass.crypto.Pkcs11Provider:
       configuration:
         name: "softhsm_pkcs11"
         library: "/usr/local/Cellar/softhsm/2.6.1/lib/softhsm/libsofthsm2.so"
         slot: 1
         userPin: "1234"
   ```

1. Eseguite il programma di installazione e specificate di `--init-config` fornire il file di configurazione.
   + Sostituisci `/greengrass/v2` con la cartella principale di Greengrass.
   + Sostituisci ogni istanza di *GreengrassInstaller* con la cartella in cui hai decompresso il programma di installazione.

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.crypto.Pkcs11Provider.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```
**Importante**  <a name="windows-system-service-installer-argument-important-note"></a>
Nei dispositivi Windows Core, è necessario specificare `--setup-system-service true` di configurare il software AWS IoT Greengrass Core come servizio di sistema.

   <a name="installer-setup-system-service-output-message"></a>Se si specifica`--setup-system-service true`, il programma di installazione stampa `Successfully set up Nucleus as a system service` se ha configurato ed eseguito il software come servizio di sistema. Altrimenti, il programma di installazione non emette alcun messaggio se installa il software correttamente.
**Nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
Non è possibile utilizzare l'`deploy-dev-tools`argomento per distribuire strumenti di sviluppo locali quando si esegue il programma di installazione senza l'argomento. `--provision true` Per informazioni sulla distribuzione della CLI Greengrass direttamente sul dispositivo, consulta. [Interfaccia a riga di comando Greengrass](gg-cli.md)

1. <a name="installer-verify-installation"></a>Verifica l'installazione visualizzando i file nella cartella principale.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Se l'installazione è riuscita, la cartella principale contiene diverse cartelle, ad esempio `config``packages`, e`logs`.

<a name="install-greengrass-core-run-software"></a>Se avete installato il software AWS IoT Greengrass Core come servizio di sistema, il programma di installazione esegue il software automaticamente. In caso contrario, è necessario eseguire il software manualmente. Per ulteriori informazioni, consulta [Esegui il software AWS IoT Greengrass Core](run-greengrass-core-v2.md).

**Nota**  <a name="install-greengrass-core-recognized-note"></a>
<a name="install-greengrass-core-recognized-para"></a>Quando il software AWS IoT Greengrass Core si connette al cloud, il dispositivo verrà riconosciuto come dispositivo Core.

<a name="install-greengrass-core-next-steps-intro"></a>Per ulteriori informazioni su come configurare e utilizzare il software e AWS IoT Greengrass, consulta quanto segue:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurare il software AWS IoT Greengrass Core](configure-greengrass-core-v2.md)
+ [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md)
+ [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md)
+ [Interfaccia a riga di comando Greengrass](gg-cli.md)

# Installa il software AWS IoT Greengrass Core con il provisioning AWS IoT della flotta
<a name="fleet-provisioning"></a>

Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.

Con AWS IoT Fleet Provisioning, è possibile AWS IoT configurare la generazione e la distribuzione sicura di certificati e chiavi private X.509 ai dispositivi quando si connettono per la prima volta. AWS IoT AWS IoT fornisce certificati client firmati dall'autorità di certificazione Amazon Root (CA). Puoi anche configurare AWS IoT per specificare gruppi di oggetti, tipi di oggetti e autorizzazioni per i dispositivi core Greengrass di cui effettui il provisioning con il fleet provisioning. È possibile definire un *modello di provisioning per definire il modo AWS IoT in cui viene effettuato* il provisioning di ciascun dispositivo. Il modello di provisioning specifica l'oggetto, la policy e le risorse dei certificati da creare per un dispositivo durante il provisioning. *Per ulteriori informazioni, consulta [Provisioning templates](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html) nella Developer Guide.AWS IoT Core *

AWS IoT Greengrass fornisce un plug-in per il provisioning del AWS IoT parco veicoli che è possibile utilizzare per installare il software AWS IoT Greengrass Core utilizzando AWS le risorse create dal AWS IoT fleet provisioning. Il plug-in per il provisioning della flotta utilizza il *provisioning* by claim. I dispositivi utilizzano un certificato di richiesta di provisioning e una chiave privata per ottenere un certificato e una chiave privata univoci del dispositivo X.509 da utilizzare per le normali operazioni. È possibile incorporare il certificato di richiesta e la chiave privata in ogni dispositivo durante la produzione, in modo che i clienti possano attivare i dispositivi in un secondo momento, quando ogni dispositivo sarà online. Puoi utilizzare lo stesso certificato di richiesta e la stessa chiave privata per più dispositivi. Per ulteriori informazioni, consulta [Provisioning by claim](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based) nella *AWS IoT Core Developer Guide*.

**Nota**  
Il plug-in fleet provisioning attualmente non supporta l'archiviazione di chiavi private e file di certificato in un modulo di sicurezza hardware (HSM). Per utilizzare un HSM, [installa il software AWS IoT Greengrass Core con](manual-installation.md) provisioning manuale.

Per installare il software AWS IoT Greengrass Core con il provisioning AWS IoT della flotta, è necessario configurare le risorse nel dispositivo AWS IoT utilizzato per Account AWS il provisioning dei dispositivi core Greengrass. Queste risorse includono un modello di provisioning, certificati di richiesta e un ruolo IAM per [lo scambio di token](device-service-role.md). Dopo aver creato queste risorse, puoi riutilizzarle per effettuare il provisioning di più dispositivi principali in una flotta. Per ulteriori informazioni, consulta [Configura il provisioning AWS IoT della flotta per i dispositivi core Greengrass](fleet-provisioning-setup.md).

**Importante**  <a name="install-greengrass-core-requirements-note"></a>
Prima di scaricare il software AWS IoT Greengrass Core, verificate che il dispositivo principale soddisfi i [requisiti](greengrass-nucleus-component.md#greengrass-v2-requirements) per installare ed eseguire il software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Prerequisiti](#fleet-provisioning-prerequisites)
+ [Recupera AWS IoT gli endpoint](#retrieve-iot-endpoints)
+ [Scarica i certificati sul dispositivo](#download-claim-certificates)
+ [Configura l'ambiente del dispositivo](#set-up-device-environment)
+ [Scarica il software Core AWS IoT Greengrass](#download-greengrass-core-v2)
+ [Scarica il plug-in per il provisioning AWS IoT della flotta](#download-fleet-provisioning-plugin)
+ [Installa il software AWS IoT Greengrass Core](#run-greengrass-core-v2-installer-fleet)
+ [Configura il provisioning AWS IoT della flotta per i dispositivi core Greengrass](fleet-provisioning-setup.md)
+ [Configurare il plug-in per il provisioning AWS IoT della flotta](fleet-provisioning-configuration.md)
+ [AWS IoT log delle modifiche del plugin per il provisioning della flotta](fleet-provisioning-changelog.md)

## Prerequisiti
<a name="fleet-provisioning-prerequisites"></a>

Per installare il software AWS IoT Greengrass Core con il provisioning AWS IoT della flotta, devi prima [configurare il provisioning del AWS IoT parco veicoli per i dispositivi core Greengrass](fleet-provisioning-setup.md). Dopo aver completato questi passaggi una volta, puoi utilizzare il provisioning del parco veicoli per installare il software AWS IoT Greengrass Core su un numero qualsiasi di dispositivi.

## Recupera AWS IoT gli endpoint
<a name="retrieve-iot-endpoints"></a>

Ottieni gli AWS IoT endpoint per te e salvali per Account AWS utilizzarli in un secondo momento. Il tuo dispositivo utilizza questi endpoint per connettersi a. AWS IoT Esegui questa operazione:

1. Ottieni l'endpoint di AWS IoT dati per il tuo. Account AWS

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

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Ottieni l'endpoint delle AWS IoT credenziali per il tuo. Account AWS

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   }
   ```

## Scarica i certificati sul dispositivo
<a name="download-claim-certificates"></a>

Il dispositivo utilizza un certificato di richiesta e una chiave privata per autenticare la richiesta di fornitura di AWS risorse e acquisire un certificato del dispositivo X.509. È possibile incorporare il certificato di richiesta e la chiave privata nel dispositivo durante la produzione oppure copiare il certificato e la chiave sul dispositivo durante l'installazione. In questa sezione, copi il certificato di richiesta e la chiave privata sul dispositivo. Puoi anche scaricare il certificato Amazon Root Certificate Authority (CA) sul dispositivo.

**Importante**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
Il provisioning dichiara che le chiavi private devono essere protette in ogni momento, anche sui dispositivi core Greengrass. Ti consigliamo di utilizzare i CloudWatch parametri e i log di Amazon per monitorare eventuali indicazioni di uso improprio, come l'uso non autorizzato del certificato di attestazione per il provisioning dei dispositivi. Se rilevi un uso improprio, disattiva il certificato di richiesta di approvvigionamento in modo che non possa essere utilizzato per il provisioning dei dispositivi. *Per ulteriori informazioni, consulta [Monitoring AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html) nella Developer Guide.AWS IoT Core *  
Per aiutarti a gestire meglio il numero di dispositivi e i dispositivi che si registrano automaticamente nel tuo sistema Account AWS, puoi specificare un hook di pre-provisioning quando crei un modello di provisioning del parco veicoli. Un hook di pre-provisioning è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Ad esempio, è possibile creare un hook di pre-provisioning che controlli l'ID di un dispositivo confrontandolo con un database per verificare che il dispositivo disponga dell'autorizzazione al provisioning. *Per ulteriori informazioni, consulta [Pre-provisioning hook](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html) nella Developer Guide.AWS IoT Core *

**Per scaricare i certificati di richiesta sul dispositivo**

1. Copia il certificato di richiesta e la chiave privata sul dispositivo. Se SSH e SCP sono abilitati sul computer di sviluppo e sul dispositivo, puoi utilizzare il `scp` comando sul tuo computer di sviluppo per trasferire il certificato di richiesta e la chiave privata. Il comando di esempio seguente trasferisce questi file in una cartella denominata `claim-certs` sul computer di sviluppo al dispositivo. Sostituiscilo *device-ip-address* con l'indirizzo IP del tuo dispositivo.

   ```
   scp -r claim-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>Crea la cartella principale Greengrass sul dispositivo. Successivamente installerai il software AWS IoT Greengrass Core in questa cartella.
**Nota**  
In Windows esiste un limite di lunghezza del percorso di 260 caratteri. Se usi Windows, usa una cartella principale come `C:\greengrass\v2` o `D:\greengrass\v2` per mantenere i percorsi dei componenti Greengrass al di sotto del limite di 260 caratteri.

------
#### [ Linux or Unix ]
   + Sostituisci `/greengrass/v2` con la cartella da usare.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + Sostituisci *C:\$1greengrass\$1v2* con la cartella da usare.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Solo Linux) Imposta le autorizzazioni del genitore della cartella principale di Greengrass.
   + Sostituiscilo */greengrass* con quello principale della cartella principale.

   ```
   sudo chmod 755 /greengrass
   ```

1. Sposta i certificati di reclamo nella cartella principale di Greengrass.
   + Sostituisci `/greengrass/v2` o *C:\$1greengrass\$1v2* con la cartella principale di Greengrass.

------
#### [ Linux or Unix ]

   ```
   sudo mv ~/claim-certs /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   move %USERPROFILE%\claim-certs C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   mv -Path ~\claim-certs -Destination C:\greengrass\v2
   ```

------

1. <a name="installation-download-root-ca-certificate"></a>Scarica il certificato Amazon Root Certificate Authority (CA). AWS IoT per impostazione predefinita, i certificati sono associati al certificato CA root di Amazon.

------
#### [ Linux or Unix ]

   ```
   sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

## Configura l'ambiente del dispositivo
<a name="set-up-device-environment"></a>

Segui i passaggi di questa sezione per configurare un dispositivo Linux o Windows da utilizzare come dispositivo AWS IoT Greengrass principale.

### Configura un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Per configurare un dispositivo Linux per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva. I seguenti comandi mostrano come installare OpenJDK sul tuo dispositivo.
   + Per le distribuzioni basate su Debian o basate su Ubuntuu:

     ```
     sudo apt install default-jdk
     ```
   + Per le distribuzioni basate su Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + Per Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Per Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Al termine dell'installazione, esegui il comando seguente per verificare che Java funzioni sul tuo dispositivo Linux.

   ```
   java -version
   ```

   Il comando stampa la versione di Java in esecuzione sul dispositivo. Ad esempio, su una distribuzione basata su Debian, l'output potrebbe essere simile all'esempio seguente.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Facoltativo) Crea l'utente e il gruppo di sistema predefiniti che eseguono i componenti sul dispositivo. Puoi anche scegliere di lasciare che il programma di installazione del software AWS IoT Greengrass Core crei questo utente e gruppo durante l'installazione con l'argomento `--component-default-user` installer. Per ulteriori informazioni, consulta [Argomenti dell'installatore](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Verificate che l'utente che esegue il software AWS IoT Greengrass Core (in genere`root`) sia autorizzato a funzionare `sudo` con qualsiasi utente e gruppo.

   1. Eseguite il comando seguente per aprire il `/etc/sudoers` file.

      ```
      sudo visudo
      ```

   1. Verificate che l'autorizzazione per l'utente sia simile all'esempio seguente.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. **(Facoltativo) Per [eseguire funzioni Lambda containerizzate](run-lambda-functions.md), è necessario abilitare [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1 e abilitare e montare i cgroup di memoria e dispositivi.** Se non intendi eseguire funzioni Lambda containerizzate, puoi saltare questo passaggio.

   Per abilitare queste opzioni di cgroups, avvia il dispositivo con i seguenti parametri del kernel Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Per informazioni sulla visualizzazione e l'impostazione dei parametri del kernel per il tuo dispositivo, consulta la documentazione del tuo sistema operativo e del boot loader. Segui le istruzioni per impostare in modo permanente i parametri del kernel.

1. Installa tutte le altre dipendenze richieste sul tuo dispositivo come indicato dall'elenco dei requisiti in. [Requisiti per il dispositivo](greengrass-nucleus-component.md#greengrass-v2-requirements)

### Configura un dispositivo Windows
<a name="set-up-windows-device-environment"></a>

**Nota**  
Questa funzionalità è disponibile per la versione 2.5.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.<a name="set-up-windows-device-environment-procedure"></a>

**Per configurare un dispositivo Windows per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva.

1. Controlla se Java è disponibile nella variabile di sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) e aggiungilo in caso contrario. L' LocalSystem account esegue il software AWS IoT Greengrass Core, quindi è necessario aggiungere Java alla variabile di sistema PATH anziché alla variabile utente PATH per l'utente. Esegui questa operazione:

   1. Premi il tasto Windows per aprire il menu di avvio.

   1. Digita **environment variables** per cercare le opzioni di sistema dal menu di avvio.

   1. Nei risultati della ricerca del menu di avvio, scegli **Modifica le variabili di ambiente di sistema** per aprire la finestra delle **proprietà del sistema**.

   1. Scegli **Variabili di ambiente...** per aprire la finestra **Variabili d'ambiente**.

   1. In **Variabili di sistema**, seleziona **Percorso**, quindi scegli **Modifica**. Nella finestra **Modifica variabile di ambiente**, puoi visualizzare ogni percorso su una riga separata.

   1. Controlla se è presente il percorso della `bin` cartella di installazione di Java. Il percorso potrebbe essere simile all'esempio seguente.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Se la `bin` cartella di installazione Java non è presente in **Path**, scegliete **Nuovo** per aggiungerla, quindi scegliete **OK**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Aprite il prompt dei comandi di Windows (`cmd.exe`) come amministratore.

1. <a name="set-up-windows-device-environment-create"></a>Crea l'utente predefinito nell' LocalSystem account sul dispositivo Windows. Sostituiscilo *password* con una password sicura.

   ```
   net user /add ggc_user password
   ```
**Suggerimento**  <a name="windows-password-expiration-tip"></a>
A seconda della configurazione di Windows, la password dell'utente potrebbe essere impostata per scadere in date future. Per garantire che le tue applicazioni Greengrass continuino a funzionare, tieni traccia della scadenza della password e aggiornala prima che scada. Puoi anche impostare la password dell'utente in modo che non scada mai.  
Per verificare la scadenza di un utente e della relativa password, esegui il comando seguente.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Per impostare la password di un utente in modo che non scada mai, esegui il comando seguente.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Se utilizzi Windows 10 o versioni successive in cui il [`wmic`comando è obsoleto, esegui il comando](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic) seguente. PowerShell   

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Scarica e installa l'[PsExecutilità](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) di Microsoft sul dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilizzate l' PsExec utilità per memorizzare il nome utente e la password per l'utente predefinito nell'istanza di Credential Manager per l' LocalSystem account. Sostituiscila *password* con la password dell'utente che hai impostato in precedenza.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Se si **PsExec License Agreement**apre, scegli **Accept**di accettare la licenza ed esegui il comando.
**Nota**  
Sui dispositivi Windows, l' LocalSystem account esegue il Greengrass nucleus ed è necessario utilizzare l' PsExec utilità per memorizzare le informazioni utente predefinite nell'account. LocalSystem L'utilizzo dell'applicazione Credential Manager archivia queste informazioni nell'account Windows dell'utente attualmente connesso, anziché nell'account. LocalSystem 

## Scarica il software Core AWS IoT Greengrass
<a name="download-greengrass-core-v2"></a>

È possibile scaricare la versione più recente del software AWS IoT Greengrass Core dal seguente indirizzo:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**Nota**  
È possibile scaricare una versione specifica del software AWS IoT Greengrass Core dal seguente percorso. Sostituiscila *version* con la versione da scaricare.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Per scaricare il software AWS IoT Greengrass Core**

1. <a name="installation-download-ggc-software-step"></a>Sul dispositivo principale, scaricate il software AWS IoT Greengrass Core in un file denominato`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Scaricando questo software accetti l'[Accordo di licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Facoltativo) Per verificare la firma del software Greengrass nucleus
**Nota**  
Questa funzionalità è disponibile con Greengrass nucleus versione 2.9.5 e successive.

   1. Usa il seguente comando per verificare la firma del tuo artefatto Greengrass nucleus:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. L'`jarsigner`invocazione produce un output che indica i risultati della verifica.

      1. Se il file zip Greengrass nucleus è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar verified.
         ```

      1. Se il file zip Greengrass nucleus non è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar is unsigned.
         ```

   1. Se hai fornito l'`-certs`opzione Jarsigner insieme alle `-verbose` opzioni `-verify` e, l'output include anche informazioni dettagliate sul certificato del firmatario.

1. <a name="installation-unzip-ggc-software-step"></a>Decomprimi il software AWS IoT Greengrass Core in una cartella sul tuo dispositivo. Sostituiscilo *GreengrassInstaller* con la cartella che desideri utilizzare.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Facoltativo) Eseguite il comando seguente per visualizzare la versione del software AWS IoT Greengrass Core.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**Importante**  <a name="installer-folder-2.4.0-warning"></a>
Se installi una versione del nucleo Greengrass precedente alla v2.4.0, non rimuovere questa cartella dopo aver installato il software Core. AWS IoT Greengrass Il software AWS IoT Greengrass Core utilizza i file in questa cartella per l'esecuzione.  
Se hai scaricato la versione più recente del software, installi la versione 2.4.0 o successiva e puoi rimuovere questa cartella dopo aver installato il software AWS IoT Greengrass Core.

## Scarica il plug-in per il provisioning AWS IoT della flotta
<a name="download-fleet-provisioning-plugin"></a>

Puoi scaricare l'ultima versione del plug-in per il provisioning AWS IoT della flotta dal seguente indirizzo:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim](https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar)-latest.jar

**Nota**  
È possibile scaricare una versione specifica del plug-in per il provisioning AWS IoT della flotta dalla seguente posizione. *version*Sostituiscila con la versione da scaricare. Per ulteriori informazioni su ciascuna versione del plug-in Fleet Provisioning, consulta[AWS IoT log delle modifiche del plugin per il provisioning della flotta](fleet-provisioning-changelog.md).  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-version.jar
```

Il plug-in per il provisioning della flotta è open source. Per visualizzarne il codice sorgente, consulta il [plug-in AWS IoT Fleet Provisioning](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) su. GitHub

**Per scaricare il plug-in per il provisioning AWS IoT della flotta**
+ Sul tuo dispositivo, scarica il plug-in AWS IoT Fleet Provisioning in un file denominato. `aws.greengrass.FleetProvisioningByClaim.jar` Sostituiscilo *GreengrassInstaller* con la cartella che desideri utilizzare.

------
#### [ Linux or Unix ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ PowerShell ]

  ```
  iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar -OutFile GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------

  <a name="core-software-license"></a>Scaricando questo software accetti l'[Accordo di licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Installa il software AWS IoT Greengrass Core
<a name="run-greengrass-core-v2-installer-fleet"></a>

Esegui il programma di installazione con argomenti che specificano le seguenti azioni:
+ Esegui l'installazione da un file di configurazione parziale che specifica di utilizzare il plug-in fleet provisioning per il provisioning delle risorse. AWS Il software AWS IoT Greengrass Core utilizza un file di configurazione che specifica la configurazione di ogni componente Greengrass sul dispositivo. Il programma di installazione crea un file di configurazione completo a partire dal file di configurazione parziale fornito dall'utente e dalle AWS risorse create dal plug-in Fleet Provisioning.
+ <a name="install-argument-component-default-user"></a>Specificare di utilizzare l'utente `ggc_user` del sistema per eseguire i componenti software sul dispositivo principale. Sui dispositivi Linux, questo comando specifica anche di utilizzare il gruppo di `ggc_group` sistema e il programma di installazione crea automaticamente l'utente e il gruppo di sistema.
+ <a name="install-argument-system-service"></a>Configura il software AWS IoT Greengrass Core come servizio di sistema che viene eseguito all'avvio. Sui dispositivi Linux, ciò richiede il [sistema di inizializzazione Systemd](https://en.wikipedia.org/wiki/Systemd).
**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Sui dispositivi Windows core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.

Per ulteriori informazioni sugli argomenti che è possibile specificare, vedere[Argomenti dell'installatore](configure-installer.md).

**Nota**  
<a name="jvm-tuning-note"></a>Se utilizzi AWS IoT Greengrass un dispositivo con memoria limitata, puoi controllare la quantità di memoria utilizzata dal software AWS IoT Greengrass Core. Per controllare l'allocazione della memoria, è possibile impostare le opzioni relative alla dimensione dell'heap JVM nel parametro di `jvmOptions` configurazione del componente nucleus. Per ulteriori informazioni, consulta [Controlla l'allocazione della memoria con le opzioni JVM](configure-greengrass-core-v2.md#jvm-tuning).

**Per installare il software Core AWS IoT Greengrass**

1. <a name="installer-check-greengrass-core-software-version"></a>Controlla la versione del software AWS IoT Greengrass Core.
   + Sostituisci *GreengrassInstaller* con il percorso della cartella che contiene il software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Utilizzate un editor di testo per creare un file di configurazione denominato `config.yaml` da fornire all'installatore.

   <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copiate il seguente contenuto YAML nel file. Questo file di configurazione parziale specifica i parametri per il plug-in Fleet Provisioning. Per ulteriori informazioni sulle opzioni che è possibile specificare, vedere. [Configurare il plug-in per il provisioning AWS IoT della flotta](fleet-provisioning-configuration.md)

------
#### [ Linux or Unix ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "/greengrass/v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt"
         claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key"
         rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
   ```

------
#### [ Windows ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "C:\\greengrass\\v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "C:\\greengrass\\v2\\claim-certs\\claim.pem.crt"
         claimCertificatePrivateKeyPath: "C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key"
         rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
   ```

------

   Successivamente, esegui queste operazioni:
   + Sostituire *2.16.1* con la versione del software AWS IoT Greengrass Core.
   + Sostituisci ogni istanza di `/greengrass/v2` o *C:\$1greengrass\$1v2* con la cartella principale di Greengrass.
**Nota**  
Sui dispositivi Windows, è necessario specificare i separatori di percorso come doppie barre rovesciate (`\\`), ad esempio. `C:\\greengrass\\v2`
   + *us-west-2*Sostituiscilo con la AWS regione in cui hai creato il modello di provisioning e altre risorse.
   + Sostituiscilo `iotDataEndpoint` con il tuo endpoint di AWS IoT dati.
   + Sostituisci l'`iotCredentialEndpoint`endpoint con AWS IoT le tue credenziali.
   + Sostituisci *GreengrassCoreTokenExchangeRoleAlias* con il nome dell'alias del ruolo di scambio di token.
   + Sostituiscilo *GreengrassFleetProvisioningTemplate* con il nome del modello di approvvigionamento della flotta.
   + Sostituisci il `claimCertificatePath` con il percorso del certificato di richiesta sul dispositivo.
   + Sostituiscilo `claimCertificatePrivateKeyPath` con il percorso della chiave privata del certificato di richiesta sul dispositivo.
   + Sostituisci i parametri del modello (`templateParameters`) con i valori da utilizzare per il provisioning del dispositivo. Questo esempio si riferisce al [modello di esempio](fleet-provisioning-setup.md#example-fleet-provisioning-template) che definisce `ThingName` i `ThingGroupName` parametri.
**Nota**  
In questo file di configurazione, è possibile personalizzare altre opzioni di configurazione come le porte e il proxy di rete da utilizzare, come illustrato nell'esempio seguente. Per ulteriori informazioni, vedere [Greengrass nucleus](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration) configuration.  

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
       configuration:
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "http://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "/greengrass/v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt"
         claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key"
         rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
         mqttPort: 443
         proxyUrl: "http://my-proxy-server:1100"
         proxyUserName: "Mary_Major"
         proxyPassword: "pass@word1357"
   ```

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
       configuration:
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "http://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "C:\\greengrass\\v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "C:\\greengrass\\v2\\claim-certs\\claim.pem.crt"
         claimCertificatePrivateKeyPath: "C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key"
         rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
         mqttPort: 443
         proxyUrl: "http://my-proxy-server:1100"
         proxyUserName: "Mary_Major"
         proxyPassword: "pass@word1357"
   ```
Per utilizzare un proxy HTTPS, è necessario utilizzare la versione 1.1.0 o successiva del plug-in Fleet Provisioning. È inoltre necessario specificare quanto segue`system`, come `rootCaPath` illustrato nell'esempio seguente.  

   ```
   ---
   system:
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
   services:
     ...
   ```

   ```
   ---
   system:
     rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
   services:
     ...
   ```

1. Eseguire il programma di installazione. Specificate `--trusted-plugin` di fornire il plug-in Fleet Provisioning e specificate `--init-config` di fornire il file di configurazione.
   + Sostituisci `/greengrass/v2` con la cartella principale di Greengrass.
   + Sostituisci ogni istanza di *GreengrassInstaller* con la cartella in cui hai decompresso il programma di installazione.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**Importante**  <a name="windows-system-service-installer-argument-important-note"></a>
Nei dispositivi Windows Core, è necessario specificare `--setup-system-service true` di configurare il software AWS IoT Greengrass Core come servizio di sistema.

   <a name="installer-setup-system-service-output-message"></a>Se si specifica`--setup-system-service true`, il programma di installazione stampa `Successfully set up Nucleus as a system service` se ha configurato ed eseguito il software come servizio di sistema. Altrimenti, il programma di installazione non emette alcun messaggio se installa il software correttamente.
**Nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
Non è possibile utilizzare l'`deploy-dev-tools`argomento per distribuire strumenti di sviluppo locali quando si esegue il programma di installazione senza l'argomento. `--provision true` Per informazioni sulla distribuzione della CLI Greengrass direttamente sul dispositivo, consulta. [Interfaccia a riga di comando Greengrass](gg-cli.md)

1. <a name="installer-verify-installation"></a>Verifica l'installazione visualizzando i file nella cartella principale.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Se l'installazione è riuscita, la cartella principale contiene diverse cartelle, ad esempio `config``packages`, e`logs`.

<a name="install-greengrass-core-run-software"></a>Se avete installato il software AWS IoT Greengrass Core come servizio di sistema, il programma di installazione esegue il software automaticamente. In caso contrario, è necessario eseguire il software manualmente. Per ulteriori informazioni, consulta [Esegui il software AWS IoT Greengrass Core](run-greengrass-core-v2.md).

<a name="install-greengrass-core-next-steps-intro"></a>Per ulteriori informazioni su come configurare e utilizzare il software e AWS IoT Greengrass, vedere quanto segue:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurare il software AWS IoT Greengrass Core](configure-greengrass-core-v2.md)
+ [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md)
+ [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md)
+ [Interfaccia a riga di comando Greengrass](gg-cli.md)

# Configura il provisioning AWS IoT della flotta per i dispositivi core Greengrass
<a name="fleet-provisioning-setup"></a>

Per [installare il software AWS IoT Greengrass Core con il provisioning della flotta](fleet-provisioning.md), devi prima configurare le seguenti risorse nel tuo. Account AWS Queste risorse consentono ai dispositivi di registrarsi AWS IoT e funzionare come dispositivi core Greengrass. Segui una volta i passaggi in questa sezione per creare e configurare queste risorse nel tuo Account AWS.
+ Un ruolo IAM per lo scambio di token, utilizzato dai dispositivi principali per autorizzare le chiamate ai AWS servizi.
+ Un alias di AWS IoT ruolo che rimanda al ruolo di scambio di token.
+ (Facoltativo) Una AWS IoT policy utilizzata dai dispositivi principali per autorizzare le chiamate ai servizi AWS IoT and AWS IoT Greengrass . Questa AWS IoT politica deve consentire l'`iot:AssumeRoleWithCertificate`autorizzazione per l'alias del AWS IoT ruolo che punta al ruolo di scambio di token.

  È possibile utilizzare un'unica AWS IoT policy per tutti i dispositivi principali del parco dispositivi oppure configurare il modello di provisioning del parco veicoli per creare una AWS IoT policy per ogni dispositivo principale.
+ Un modello di approvvigionamento del AWS IoT parco veicoli. Questo modello deve specificare quanto segue:<a name="installation-fleet-provisioning-template-requirements"></a>
  + Qualsiasi AWS IoT cosa, risorsa. È possibile specificare un elenco di gruppi di oggetti esistenti per distribuire i componenti su ciascun dispositivo quando è online.
  + Una risorsa AWS IoT politica. Questa risorsa può definire una delle seguenti proprietà:
    + Il nome di una AWS IoT politica esistente. Se scegli questa opzione, i dispositivi principali che crei con questo modello utilizzano la stessa AWS IoT politica e puoi gestirne le autorizzazioni come flotta.
    + Un documento AWS IoT di policy. Se scegli questa opzione, ogni dispositivo principale creato a partire da questo modello utilizza una AWS IoT policy unica e puoi gestire le autorizzazioni per ogni singolo dispositivo principale.
  + Una risorsa AWS IoT certificata. Questa risorsa di certificato deve utilizzare il `AWS::IoT::Certificate::Id` parametro per allegare il certificato al dispositivo principale. Per ulteriori informazioni, consulta la sezione [Just-in-time Provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html) nella *AWS IoT Developer Guide*.
+ Un certificato di richiesta di AWS IoT approvvigionamento e una chiave privata per il modello di approvvigionamento della flotta. Puoi incorporare questo certificato e la chiave privata nei dispositivi durante la produzione, in modo che i dispositivi possano registrarsi e rifornirsi autonomamente quando sono online.
**Importante**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
Il provisioning dichiara che le chiavi private devono essere protette in ogni momento, anche sui dispositivi core Greengrass. Ti consigliamo di utilizzare i CloudWatch parametri e i log di Amazon per monitorare eventuali indicazioni di uso improprio, come l'uso non autorizzato del certificato di attestazione per il provisioning dei dispositivi. Se rilevi un uso improprio, disattiva il certificato di richiesta di approvvigionamento in modo che non possa essere utilizzato per il provisioning dei dispositivi. *Per ulteriori informazioni, consulta [Monitoring AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html) nella Developer Guide.AWS IoT Core *  
Per aiutarti a gestire meglio il numero di dispositivi e i dispositivi che si registrano automaticamente nel tuo sistema Account AWS, puoi specificare un hook di pre-provisioning quando crei un modello di provisioning del parco veicoli. Un hook di pre-provisioning è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Ad esempio, è possibile creare un hook di pre-provisioning che controlli l'ID di un dispositivo confrontandolo con un database per verificare che il dispositivo disponga dell'autorizzazione al provisioning. *Per ulteriori informazioni, consulta [Pre-provisioning hook](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html) nella Developer Guide.AWS IoT Core *
+ Una AWS IoT politica da allegare al certificato di richiesta di approvvigionamento per consentire ai dispositivi di registrarsi e utilizzare il modello di provisioning del parco veicoli.

**Topics**
+ [Crea un ruolo di scambio di token](#create-token-exchange-role)
+ [Crea una politica AWS IoT](#create-iot-policy)
+ [Crea un modello di approvvigionamento del parco veicoli](#create-provisioning-template)
+ [Crea un certificato di richiesta di approvvigionamento e una chiave privata](#create-claim-certificates)

## Crea un ruolo di scambio di token
<a name="create-token-exchange-role"></a>

<a name="installation-create-token-exchange-role-intro"></a>I dispositivi core Greengrass utilizzano un ruolo di servizio IAM, chiamato *token exchange role*, per autorizzare le chiamate ai servizi. AWS Il dispositivo utilizza il provider di AWS IoT credenziali per ottenere AWS credenziali temporanee per questo ruolo, che consente al dispositivo di interagire AWS IoT, inviare log ad Amazon CloudWatch Logs e scaricare elementi dei componenti personalizzati da Amazon S3. Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).

<a name="installation-create-token-exchange-role-alias-intro"></a>Si utilizza un *alias di AWS IoT ruolo* per configurare il ruolo di scambio di token per i dispositivi principali Greengrass. Gli alias di ruolo consentono di modificare il ruolo di scambio di token per un dispositivo ma mantengono invariata la configurazione del dispositivo. Per ulteriori informazioni, consulta [Autorizzazione delle chiamate dirette ai AWS servizi nella Guida per](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) gli *AWS IoT Core sviluppatori*.

In questa sezione, crei un ruolo IAM per lo scambio di token e un alias di AWS IoT ruolo che rimanda al ruolo. Se hai già configurato un dispositivo principale Greengrass, puoi utilizzare il ruolo di scambio di token e l'alias del ruolo invece di crearne di nuovi.

**Per creare un ruolo IAM per lo scambio di token**

1. <a name="create-token-exchange-role-create-iam-role"></a>Crea un ruolo IAM che il tuo dispositivo possa utilizzare come ruolo di scambio di token. Esegui questa operazione:

   1. Crea un file che contenga il documento sulla politica di fiducia richiesto dal ruolo di scambio di token.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano device-role-trust-policy.json
      ```

      Copiate il seguente codice JSON nel file.

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

   1. Crea il ruolo di scambio di token con il documento sulla politica di fiducia.
      + Sostituiscilo *GreengrassV2TokenExchangeRole* con il nome del ruolo IAM da creare.

      ```
      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "Role": {
          "Path": "/",
          "RoleName": "GreengrassV2TokenExchangeRole",
          "RoleId": "AROAZ2YMUHYHK5OKM77FB",
          "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
          "CreateDate": "2021-02-06T00:13:29+00:00",
          "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Service": "credentials.iot.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
              }
            ]
          }
        }
      ```

   1. Crea un file che contenga il documento sulla politica di accesso richiesto dal ruolo di scambio di token.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano device-role-access-policy.json
      ```

      Copiate il seguente codice JSON nel file.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "s3:GetBucketLocation"
            ],
            "Resource": "*"
          }
        ]
      }
      ```
**Nota**  
Questa politica di accesso non consente l'accesso agli artefatti dei componenti nei bucket S3. Per distribuire componenti personalizzati che definiscono gli artefatti in Amazon S3, devi aggiungere autorizzazioni al ruolo per consentire al dispositivo principale di recuperare gli artefatti dei componenti. Per ulteriori informazioni, consulta [Consenti l'accesso ai bucket S3 per gli artefatti dei componenti](device-service-role.md#device-service-role-access-s3-bucket).  
Se non disponi ancora di un bucket S3 per gli artefatti dei componenti, puoi aggiungere queste autorizzazioni in un secondo momento dopo aver creato un bucket.

   1. Crea la policy IAM dal documento di policy.
      + Sostituiscila *GreengrassV2TokenExchangeRoleAccess* con il nome della policy IAM da creare.

      ```
      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "Policy": {
          "PolicyName": "GreengrassV2TokenExchangeRoleAccess",
          "PolicyId": "ANPAZ2YMUHYHACI7C5Z66",
          "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
          "Path": "/",
          "DefaultVersionId": "v1",
          "AttachmentCount": 0,
          "PermissionsBoundaryUsageCount": 0,
          "IsAttachable": true,
          "CreateDate": "2021-02-06T00:37:17+00:00",
          "UpdateDate": "2021-02-06T00:37:17+00:00"
        }
      }
      ```

   1. Allega la policy IAM al ruolo di scambio di token.
      + Sostituisci *GreengrassV2TokenExchangeRole* con il nome del ruolo IAM.
      + Sostituisci l'ARN della policy con l'ARN della policy IAM che hai creato nel passaggio precedente.

      ```
      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

1. <a name="create-token-exchange-role-create-iot-role-alias"></a>Crea un alias di AWS IoT ruolo che punti al ruolo di scambio di token.
   + Sostituiscilo *GreengrassCoreTokenExchangeRoleAlias* con il nome dell'alias del ruolo da creare.
   + Sostituisci il ruolo ARN con l'ARN del ruolo IAM creato nel passaggio precedente.

   ```
   aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "roleAlias": "GreengrassCoreTokenExchangeRoleAlias",
     "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
   }
   ```
**Nota**  
Per creare un alias di ruolo, devi disporre dell'autorizzazione a passare il ruolo IAM per lo scambio di token a. AWS IoT Se ricevi un messaggio di errore quando tenti di creare un alias di ruolo, verifica che AWS l'utente disponga di questa autorizzazione. *Per ulteriori informazioni, consulta [Concessione a un utente delle autorizzazioni per il trasferimento di un ruolo a un AWS servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) nella Guida per l'AWS Identity and Access Management utente.*

## Crea una politica AWS IoT
<a name="create-iot-policy"></a>

Dopo aver registrato un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con AWS cui autenticarsi. Questo certificato include una o più AWS IoT politiche che definiscono le autorizzazioni che un dispositivo può utilizzare con il certificato. Queste politiche consentono al dispositivo di comunicare con AWS IoT e AWS IoT Greengrass.

Con AWS IoT Fleet Provisioning, i dispositivi si connettono AWS IoT per creare e scaricare un certificato del dispositivo. Nel modello di provisioning del parco veicoli creato nella sezione successiva, puoi specificare se AWS IoT allega la stessa AWS IoT policy ai certificati di tutti i dispositivi o crea una nuova policy per ogni dispositivo.

In questa sezione, crei una AWS IoT policy da AWS IoT allegare ai certificati di tutti i dispositivi. Con questo approccio, puoi gestire le autorizzazioni per tutti i dispositivi come una flotta. Se preferisci creare una nuova AWS IoT politica per ogni dispositivo, puoi saltare questa sezione e fare riferimento alla politica in essa contenuta quando definisci il modello del tuo parco veicoli.

**Per creare una policy AWS IoT**
+ Crea una AWS IoT politica che definisca le AWS IoT autorizzazioni per la tua flotta di dispositivi principali Greengrass. La seguente politica consente l'accesso a tutti gli argomenti MQTT e alle operazioni di Greengrass, in modo che il dispositivo funzioni con applicazioni personalizzate e modifiche future che richiedono nuove operazioni Greengrass. Questa politica consente anche l'`iot:AssumeRoleWithCertificate`autorizzazione, che consente ai dispositivi di utilizzare il ruolo di scambio di token creato nella sezione precedente. Puoi limitare questa politica in base al tuo caso d'uso. Per ulteriori informazioni, consulta [AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali](device-auth.md#greengrass-core-minimal-iot-policy).

  Esegui questa operazione:

  1. Crea un file che contenga il documento di AWS IoT policy richiesto dai dispositivi core Greengrass.

     <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

     ```
     nano greengrass-v2-iot-policy.json
     ```

     Copiate il seguente codice JSON nel file.
     + Sostituisci la `iot:AssumeRoleWithCertificate` risorsa con l'ARN dell'alias del AWS IoT ruolo creato nella sezione precedente.

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Action": [
             "iot:Publish",
             "iot:Subscribe",
             "iot:Receive",
             "iot:Connect",
             "greengrass:*"
           ],
           "Resource": [
             "*"
           ]
         },
         {
           "Effect": "Allow",
           "Action": "iot:AssumeRoleWithCertificate",
           "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
         }
       ]
     }
     ```

------

  1. Crea una AWS IoT politica dal documento di policy.
     + Sostituisci *GreengrassV2IoTThingPolicy* con il nome della politica da creare.

     ```
     aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json
     ```

     La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

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

****  

     ```
     {
       "policyName": "GreengrassV2IoTThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{
         \"Version\": \"2012-10-17\",
         \"Statement\": [
           {
             \"Effect\": \"Allow\",
             \"Action\": [
               \"iot:Publish\",
               \"iot:Subscribe\",
               \"iot:Receive\",
               \"iot:Connect\",
               \"greengrass:*\"
             ],
             \"Resource\": [
               \"*\"
             ]
           },
           {
             \"Effect\": \"Allow\",
             \"Action\": \"iot:AssumeRoleWithCertificate\",
             \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\"
           }
         ]
       }",
       "policyVersionId": "1"
     }
     ```

------

## Crea un modello di approvvigionamento del parco veicoli
<a name="create-provisioning-template"></a>

AWS IoT i modelli di provisioning della flotta definiscono come fornire AWS IoT oggetti, politiche e certificati. Per effettuare il provisioning dei dispositivi core Greengrass con il plug-in fleet provisioning, è necessario creare un modello che specifichi quanto segue:<a name="installation-fleet-provisioning-template-requirements"></a>
+ Una cosa, una risorsa AWS IoT . È possibile specificare un elenco di gruppi di oggetti esistenti per distribuire i componenti su ciascun dispositivo quando è online.
+ Una risorsa AWS IoT politica. Questa risorsa può definire una delle seguenti proprietà:
  + Il nome di una AWS IoT politica esistente. Se scegli questa opzione, i dispositivi principali che crei con questo modello utilizzano la stessa AWS IoT politica e puoi gestirne le autorizzazioni come flotta.
  + Un documento AWS IoT di policy. Se scegli questa opzione, ogni dispositivo principale creato a partire da questo modello utilizza una AWS IoT policy unica e puoi gestire le autorizzazioni per ogni singolo dispositivo principale.
+ Una risorsa AWS IoT certificata. Questa risorsa di certificato deve utilizzare il `AWS::IoT::Certificate::Id` parametro per allegare il certificato al dispositivo principale. Per ulteriori informazioni, consulta la sezione [Just-in-time Provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html) nella *AWS IoT Developer Guide*.

Nel modello, è possibile specificare di aggiungere l' AWS IoT oggetto a un elenco di gruppi di oggetti esistenti. Quando il dispositivo principale si connette AWS IoT Greengrass per la prima volta, riceve le distribuzioni Greengrass per ogni gruppo di cose di cui è membro. Puoi utilizzare i gruppi di oggetti per distribuire il software più recente su ciascun dispositivo non appena è online. Per ulteriori informazioni, consulta [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md).

Il AWS IoT servizio richiede le autorizzazioni per creare e aggiornare AWS IoT le risorse nei dispositivi Account AWS durante il provisioning. Per consentire l'accesso al AWS IoT servizio, crei un ruolo IAM e lo fornisci quando crei il modello. AWS IoT fornisce una policy gestita, [AWSIoTThingsRegistration](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration), che consente l'accesso a tutte le autorizzazioni che AWS IoT potrebbero essere utilizzate per il provisioning dei dispositivi. È possibile utilizzare questa policy gestita o creare una policy personalizzata che definisca le autorizzazioni nella policy gestita in base al proprio caso d'uso.

In questa sezione, crei un ruolo IAM che consente di AWS IoT effettuare il provisioning di risorse per i dispositivi e crei un modello di provisioning della flotta che utilizza quel ruolo IAM.

**Per creare un modello di provisioning della flotta**

1. Crea un ruolo IAM che AWS IoT possa pretendere di fornire risorse nel tuo Account AWS. Esegui questa operazione:

   1. Crea un file che contenga il documento sulla politica di fiducia che AWS IoT consente di assumere il ruolo.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il seguente comando per utilizzare GNU nano per creare il file.

      ```
      nano aws-iot-trust-policy.json
      ```

      Copiate il seguente codice JSON nel file.

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

****  

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

------

   1. Crea un ruolo IAM con il documento sulla politica di fiducia.
      + Sostituiscilo *GreengrassFleetProvisioningRole* con il nome del ruolo IAM da creare.

      ```
      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "iot:Connect",
              "iot:Publish",
              "iot:Subscribe",
              "iot:Receive"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Consulta la politica [AWSIoTThingsdi registrazione](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration), che consente l'accesso a tutte le autorizzazioni che AWS IoT potrebbero essere utilizzate per il provisioning dei dispositivi. Puoi utilizzare questa politica gestita o creare una politica personalizzata che definisca autorizzazioni ridotte per il tuo caso d'uso. Se scegli di creare una politica personalizzata, fallo ora.

   1. Allega la policy IAM al ruolo di provisioning della flotta.
      + Sostituisci *GreengrassFleetProvisioningRole* con il nome del ruolo IAM.
      + Se hai creato una policy personalizzata nel passaggio precedente, sostituisci l'ARN della policy con l'ARN della policy IAM da utilizzare.

      ```
      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

1. (Facoltativo) Crea un *hook di pre-provisioning*, che è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Puoi utilizzare un hook di pre-provisioning per avere un maggiore controllo su quali e quanti dispositivi sono integrati nel tuo dispositivo. Account AWS*Per ulteriori informazioni, consulta gli [hook di pre-provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html) nella Developer Guide.AWS IoT Core *

1. Crea un modello di provisioning del parco veicoli. Esegui questa operazione:

   1. Crea un file per contenere il documento del modello di approvvigionamento.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano greengrass-fleet-provisioning-template.json
      ```

      Scrivete il documento modello di provisioning. È possibile iniziare dal seguente esempio di modello di provisioning, che specifica di creare un AWS IoT oggetto con le seguenti proprietà:
      + Il nome dell'oggetto è il valore specificato nel parametro `ThingName` template.
      + L'oggetto è un membro del gruppo di oggetti specificato nel parametro `ThingGroupName` template. Il gruppo di cose deve esistere nel tuo Account AWS.
      + Al certificato dell'oggetto è `GreengrassV2IoTThingPolicy` allegata la AWS IoT politica denominata.

      Per ulteriori informazioni, consulta [Provisioning templates](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html) nella *AWS IoT Core Developer Guide*.

      ```
      {
        "Parameters": {
          "ThingName": {
            "Type": "String"
          },
          "ThingGroupName": {
            "Type": "String"
          },
          "AWS::IoT::Certificate::Id": {
            "Type": "String"
          }
        },
        "Resources": {
          "MyThing": {
            "OverrideSettings": {
              "AttributePayload": "REPLACE",
              "ThingGroups": "REPLACE",
              "ThingTypeName": "REPLACE"
            },
            "Properties": {
              "AttributePayload": {},
              "ThingGroups": [
                {
                  "Ref": "ThingGroupName"
                }
              ],
              "ThingName": {
                "Ref": "ThingName"
              }
            },
            "Type": "AWS::IoT::Thing"
          },
          "MyPolicy": {
            "Properties": {
              "PolicyName": "GreengrassV2IoTThingPolicy"
            },
            "Type": "AWS::IoT::Policy"
          },
          "MyCertificate": {
            "Properties": {
              "CertificateId": {
                "Ref": "AWS::IoT::Certificate::Id"
              },
              "Status": "Active"
            },
            "Type": "AWS::IoT::Certificate"
          }
        }
      }
      ```
**Nota**  
*MyThing**MyPolicy*, e *MyCertificate* sono nomi arbitrari che identificano ogni specifica di risorsa nel modello di provisioning del parco veicoli. AWS IoT non utilizza questi nomi nelle risorse che crea dal modello. È possibile utilizzare questi nomi o sostituirli con valori che consentano di identificare ogni risorsa nel modello.

   1. Crea il modello di approvvigionamento del parco veicoli dal documento relativo al modello di approvvigionamento.
      + Sostituisci *GreengrassFleetProvisioningTemplate* con il nome del modello da creare.
      + Sostituisci la descrizione del modello con una descrizione per il tuo modello.
      + Sostituisci l'ARN del ruolo di provisioning con l'ARN del ruolo creato in precedenza.

------
#### [ Linux or Unix ]

      ```
      aws iot create-provisioning-template \
        --template-name GreengrassFleetProvisioningTemplate \
        --description "A provisioning template for Greengrass core devices." \
        --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \
        --template-body file://greengrass-fleet-provisioning-template.json \
        --enabled
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      aws iot create-provisioning-template ^
        --template-name GreengrassFleetProvisioningTemplate ^
        --description "A provisioning template for Greengrass core devices." ^
        --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^
        --template-body file://greengrass-fleet-provisioning-template.json ^
        --enabled
      ```

------
#### [ PowerShell ]

      ```
      aws iot create-provisioning-template `
        --template-name GreengrassFleetProvisioningTemplate `
        --description "A provisioning template for Greengrass core devices." `
        --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" `
        --template-body file://greengrass-fleet-provisioning-template.json `
        --enabled
      ```

------
**Nota**  
Se hai creato un hook di pre-provisioning, specifica l'ARN della funzione Lambda dell'hook di pre-provisioning con l'argomento. `--pre-provisioning-hook`  

      ```
      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
          "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate",
          "templateName": "GreengrassFleetProvisioningTemplate",
          "defaultVersionId": 1
      }
      ```

## Crea un certificato di richiesta di approvvigionamento e una chiave privata
<a name="create-claim-certificates"></a>

I certificati di attestazione sono certificati X.509 che consentono ai dispositivi di registrarsi come AWS IoT oggetti e di recuperare un certificato di dispositivo X.509 univoco da utilizzare per le normali operazioni. Dopo aver creato un certificato di attestazione, alleghi una AWS IoT politica che consente ai dispositivi di utilizzarlo per creare certificati di dispositivo unici e fornire un modello di provisioning del parco veicoli. I dispositivi con il certificato di richiesta possono effettuare il provisioning utilizzando solo il modello di provisioning consentito nella AWS IoT politica.

In questa sezione, crei il certificato di richiesta e lo configuri per i dispositivi da utilizzare con il modello di provisioning del parco veicoli creato nella sezione precedente.

**Importante**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
Il provisioning dichiara che le chiavi private devono essere protette in ogni momento, anche sui dispositivi core Greengrass. Ti consigliamo di utilizzare i CloudWatch parametri e i log di Amazon per monitorare eventuali indicazioni di uso improprio, come l'uso non autorizzato del certificato di attestazione per il provisioning dei dispositivi. Se rilevi un uso improprio, disattiva il certificato di richiesta di approvvigionamento in modo che non possa essere utilizzato per il provisioning dei dispositivi. *Per ulteriori informazioni, consulta [Monitoring AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html) nella Developer Guide.AWS IoT Core *  
Per aiutarti a gestire meglio il numero di dispositivi e i dispositivi che si registrano automaticamente nel tuo sistema Account AWS, puoi specificare un hook di pre-provisioning quando crei un modello di provisioning del parco veicoli. Un hook di pre-provisioning è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Ad esempio, è possibile creare un hook di pre-provisioning che controlli l'ID di un dispositivo confrontandolo con un database per verificare che il dispositivo disponga dell'autorizzazione al provisioning. *Per ulteriori informazioni, consulta [Pre-provisioning hook](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html) nella Developer Guide.AWS IoT Core *

**Per creare un certificato di richiesta di approvvigionamento e una chiave privata**

1. Crea una cartella in cui scaricare il certificato di richiesta e la chiave privata.

   ```
   mkdir claim-certs
   ```

1. Crea e salva un certificato e una chiave privata da utilizzare per il provisioning. AWS IoT fornisce certificati client firmati dall'autorità di certificazione Amazon Root (CA).

------
#### [ Linux or Unix ]

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

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iot create-keys-and-certificate ^
     --certificate-pem-outfile "claim-certs/claim.pem.crt" ^
     --public-key-outfile "claim-certs/claim.public.pem.key" ^
     --private-key-outfile "claim-certs/claim.private.pem.key" ^
     --set-as-active
   ```

------
#### [ PowerShell ]

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

------

   La risposta contiene informazioni sul certificato, se la richiesta ha esito positivo. Salva l'ARN del certificato per utilizzarlo in seguito.

1. Crea e allega una AWS IoT policy che consenta ai dispositivi di utilizzare il certificato per creare certificati univoci per i dispositivi ed esegui il provisioning con il modello di provisioning del parco veicoli. La seguente policy consente l'accesso all'API MQTT per il provisioning dei dispositivi. *Per ulteriori informazioni, consulta [Device Provisioning MQTT API nella Device Provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html) nella Developer Guide.AWS IoT Core *

   Esegui questa operazione:

   1. Crea un file che contenga il documento di AWS IoT policy richiesto dai dispositivi core Greengrass.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano greengrass-provisioning-claim-iot-policy.json
      ```

      Copiate il seguente codice JSON nel file.
      + Sostituisci ogni istanza di *region* con quella Regione AWS in cui hai impostato il provisioning della flotta.
      + Sostituisci ogni istanza di *account-id* con il tuo Account AWS ID.
      + Sostituisci ogni istanza di *GreengrassFleetProvisioningTemplate* con il nome del modello di approvvigionamento della flotta creato nella sezione precedente.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:Connect",
            "Resource": "*"
          },
          {
            "Effect": "Allow",
            "Action": [
              "iot:Publish",
              "iot:Receive"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*"
            ]
          },
          {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": [
            "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*"
            ]
          }
        ]
      }
      ```

------

   1. Crea una AWS IoT politica dal documento di policy.
      + Sostituisci *GreengrassProvisioningClaimPolicy* con il nome della politica da creare.

      ```
      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

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

****  

      ```
      {
        "policyName": "GreengrassProvisioningClaimPolicy",
        "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy",
        "policyDocument": "{
          \"Version\": \"2012-10-17\",
          \"Statement\": [
            {
              \"Effect\": \"Allow\",
              \"Action\": \"iot:Connect\",
              \"Resource\": \"*\"
            },
            {
              \"Effect\": \"Allow\",
              \"Action\": [
                \"iot:Publish\",
                \"iot:Receive\"
              ],
              \"Resource\": [
              \"arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*\",
        \"arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\"
              ]
            },
            {
              \"Effect\": \"Allow\",
              \"Action\": \"iot:Subscribe\",
              \"Resource\": [
              \"arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*\",
        \"arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\"
              ]
            }
          ]
        }",
        "policyVersionId": "1"
      }
      ```

------

1. Allega la AWS IoT politica al certificato di richiesta di approvvigionamento.
   + Sostituiscila *GreengrassProvisioningClaimPolicy* con il nome della politica da allegare.
   + Sostituisci l'ARN di destinazione con l'ARN del certificato di richiesta di approvvigionamento.

   ```
   aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
   ```

   Il comando non produce alcun output se la richiesta ha esito positivo.

Ora disponi di un certificato di richiesta di provisioning e di una chiave privata che i dispositivi possono utilizzare per registrarsi AWS IoT e rifornirsi come dispositivi core Greengrass. È possibile incorporare il certificato di richiesta e la chiave privata nei dispositivi durante la produzione oppure copiare il certificato e la chiave sui dispositivi prima di installare il AWS IoT Greengrass software Core. Per ulteriori informazioni, consulta [Installa il software AWS IoT Greengrass Core con il provisioning AWS IoT della flotta](fleet-provisioning.md).

# Configurare il plug-in per il provisioning AWS IoT della flotta
<a name="fleet-provisioning-configuration"></a>

Il plug-in per il provisioning AWS IoT della flotta fornisce i seguenti parametri di configurazione che è possibile personalizzare quando si [installa il software AWS IoT Greengrass Core con il](fleet-provisioning.md) provisioning della flotta.

`rootPath`  
Il percorso della cartella da utilizzare come root per il software AWS IoT Greengrass Core.

`awsRegion`  
 Regione AWS Quello che il plug-in Fleet Provisioning utilizza per fornire AWS le risorse.

`iotDataEndpoint`  
<a name="nucleus-component-configuration-iot-data-endpoint"></a>L'endpoint di AWS IoT dati per il tuo. Account AWS

`iotCredentialEndpoint`  
<a name="nucleus-component-configuration-iot-cred-endpoint"></a>L'endpoint di AWS IoT credenziali per il tuo. Account AWS

`iotRoleAlias`  
<a name="nucleus-component-configuration-iot-role-alias"></a>L'alias del AWS IoT ruolo che rimanda a un ruolo IAM per lo scambio di token. Il fornitore di AWS IoT credenziali assume questo ruolo per consentire al dispositivo principale Greengrass di interagire con i servizi. AWS Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).

`provisioningTemplate`  
Il modello di provisioning AWS IoT della flotta da utilizzare per il provisioning delle risorse. AWS Questo modello deve specificare quanto segue:  <a name="installation-fleet-provisioning-template-requirements"></a>
+ Qualsiasi AWS IoT cosa, risorsa. È possibile specificare un elenco di gruppi di oggetti esistenti per distribuire i componenti su ciascun dispositivo quando è online.
+ Una risorsa AWS IoT politica. Questa risorsa può definire una delle seguenti proprietà:
  + Il nome di una AWS IoT politica esistente. Se scegli questa opzione, i dispositivi principali che crei a partire da questo modello utilizzano la stessa AWS IoT politica e puoi gestirne le autorizzazioni come flotta.
  + Un documento AWS IoT di policy. Se scegli questa opzione, ogni dispositivo principale creato a partire da questo modello utilizza una AWS IoT policy unica e puoi gestire le autorizzazioni per ogni singolo dispositivo principale.
+ Una risorsa AWS IoT certificata. Questa risorsa di certificato deve utilizzare il `AWS::IoT::Certificate::Id` parametro per allegare il certificato al dispositivo principale. Per ulteriori informazioni, consulta la sezione [Just-in-time Provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html) nella *AWS IoT Developer Guide*.
Per ulteriori informazioni, consulta [Provisioning templates](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html) nella *AWS IoT Core Developer* Guide.

`claimCertificatePath`  
Il percorso del certificato di richiesta di provisioning per il modello di provisioning specificato in. `provisioningTemplate` Per ulteriori informazioni, consulta [CreateProvisioningClaim](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningClaim.html) nella *documentazione di riferimento dell’API AWS IoT Core *.

`claimCertificatePrivateKeyPath`  
Il percorso della chiave privata del certificato di richiesta di approvvigionamento per il modello di provisioning specificato in. `provisioningTemplate` Per ulteriori informazioni, consulta [CreateProvisioningClaim](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningClaim.html) nella *documentazione di riferimento dell’API AWS IoT Core *.  
Il provisioning dichiara che le chiavi private devono essere protette in ogni momento, anche sui dispositivi core Greengrass. Ti consigliamo di utilizzare i CloudWatch parametri e i log di Amazon per monitorare eventuali indicazioni di uso improprio, come l'uso non autorizzato del certificato di attestazione per il provisioning dei dispositivi. Se rilevi un uso improprio, disattiva il certificato di richiesta di approvvigionamento in modo che non possa essere utilizzato per il provisioning dei dispositivi. *Per ulteriori informazioni, consulta [Monitoring AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html) nella Developer Guide.AWS IoT Core *  
Per aiutarti a gestire meglio il numero di dispositivi e i dispositivi che si registrano automaticamente nel tuo sistema Account AWS, puoi specificare un hook di pre-provisioning quando crei un modello di provisioning del parco veicoli. Un hook di pre-provisioning è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Ad esempio, è possibile creare un hook di pre-provisioning che controlli l'ID di un dispositivo confrontandolo con un database per verificare che il dispositivo disponga dell'autorizzazione al provisioning. *Per ulteriori informazioni, consulta [Pre-provisioning hook](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html) nella Developer Guide.AWS IoT Core *

`rootCaPath`  
Il percorso verso il certificato Amazon Root Certificate Authority (CA).

`templateParameters`  
(Facoltativo) La mappa dei parametri da fornire al modello di provisioning della flotta. *Per ulteriori informazioni, consulta la [sezione Parametri dei modelli di provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html#parameters-section) nella Guida per gli sviluppatori.AWS IoT Core *

`deviceId`  
(Facoltativo) L'identificatore del dispositivo da utilizzare come ID client quando il plug-in Fleet Provisioning crea una connessione MQTT. AWS IoT  
Impostazione predefinita: un UUID casuale.

`mqttPort`  
(Facoltativo) La porta da usare per le connessioni MQTT.  
Impostazione predefinita: `8883`

`proxyUrl`  
(Facoltativo) L'URL del server proxy nel formato`scheme://userinfo@host:port`. Per utilizzare un proxy HTTPS, è necessario utilizzare la versione 1.1.0 o successiva del plug-in Fleet Provisioning.  <a name="nucleus-component-configuration-proxy-url-segments"></a>
+ `scheme`— Lo schema, che deve essere `http` o. `https`
**Importante**  
<a name="https-proxy-greengrass-nucleus-requirement"></a>I dispositivi core Greengrass devono eseguire [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.0 o versione successiva per utilizzare i proxy HTTPS.  
Se configuri un proxy HTTPS, devi aggiungere il certificato CA del server proxy al certificato Amazon root CA del dispositivo principale. Per ulteriori informazioni, consulta [Abilita il dispositivo principale in modo che consideri attendibile un proxy HTTPS](configure-greengrass-core-v2.md#https-proxy-certificate-trust).
+ `userinfo`— (Facoltativo) Le informazioni sul nome utente e sulla password. Se si specificano queste informazioni nel`url`, il dispositivo principale Greengrass ignora i `username` campi and. `password`
+ `host`— Il nome host o l'indirizzo IP del server proxy.
+ `port`— (Facoltativo) Il numero di porta. Se non specifichi la porta, il dispositivo principale Greengrass utilizza i seguenti valori predefiniti:
  + `http`— 80
  + `https`— 443

`proxyUserName`  
(Facoltativo) Il nome utente che autentica il server proxy.

`proxyPassword`  
(Facoltativo) Il nome utente che autentica il server proxy.

CSRPath  
(Facoltativo) Il percorso del file di richiesta di firma del certificato (CSR) da utilizzare per creare il certificato del dispositivo da una CSR. *Per ulteriori informazioni, consulta [Provisioning by claim nella guida per](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based) sviluppatori. AWS IoT Core *

csrPrivateKeyPercorso  
(Facoltativo, `csrPath` obbligatorio se dichiarato) Il percorso della chiave privata utilizzata per generare la CSR. La chiave privata deve essere stata utilizzata per generare la CSR. Per ulteriori informazioni, consulta [Provisioning by claim](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based) nella guida per *AWS IoT Core sviluppatori*.

Percorso del certificato  
(Facoltativo) Il percorso da utilizzare per salvare il certificato del dispositivo scaricato.

privateKeyPath  
(Facoltativo) Il percorso da utilizzare per salvare la chiave privata del dispositivo scaricata.

# AWS IoT log delle modifiche del plugin per il provisioning della flotta
<a name="fleet-provisioning-changelog"></a>

La tabella seguente descrive le modifiche apportate a ciascuna versione del plug-in AWS IoT Fleet Provisioning by claim (`aws.greengrass.FleetProvisioningByClaim`).


|  Versione  |  Modifiche  | 
| --- | --- | 
|  1.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.0.0  |  Versione iniziale.  | 

# Installa il software AWS IoT Greengrass Core con provisioning personalizzato delle risorse
<a name="custom-provisioning"></a>

Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.

Il programma di installazione del software AWS IoT Greengrass Core fornisce un'interfaccia Java che è possibile implementare in un plug-in personalizzato che fornisce le risorse necessarie. AWS È possibile sviluppare un plug-in di provisioning per utilizzare certificati client X.509 personalizzati o per eseguire passaggi di provisioning complessi che altri processi di installazione non supportano. *Per ulteriori informazioni, consulta [Creare i propri certificati client](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) nella Guida per gli sviluppatori.AWS IoT Core *

Per eseguire un plug-in di provisioning personalizzato quando installate il software AWS IoT Greengrass Core, create un file JAR da fornire all'installatore. Il programma di installazione esegue il plug-in e il plug-in restituisce una configurazione di provisioning che definisce AWS le risorse per il dispositivo principale Greengrass. Il programma di installazione utilizza queste informazioni per configurare il software AWS IoT Greengrass Core sul dispositivo. Per ulteriori informazioni, consulta [Sviluppa plugin di provisioning personalizzati](develop-custom-provisioning-plugins.md).

**Importante**  <a name="install-greengrass-core-requirements-note"></a>
Prima di scaricare il software AWS IoT Greengrass Core, verifica che il dispositivo principale soddisfi i [requisiti](greengrass-nucleus-component.md#greengrass-v2-requirements) per installare ed eseguire il software AWS IoT Greengrass Core v2.0.

**Topics**
+ [Prerequisiti](#custom-provisioning-prerequisites)
+ [Configura l'ambiente del dispositivo](#set-up-device-environment)
+ [Scaricate il software Core AWS IoT Greengrass](#download-greengrass-core-v2)
+ [Installa il software Core AWS IoT Greengrass](#run-greengrass-core-v2-installer-custom)
+ [Sviluppa plugin di provisioning personalizzati](develop-custom-provisioning-plugins.md)

## Prerequisiti
<a name="custom-provisioning-prerequisites"></a>

Per installare il software AWS IoT Greengrass Core con provisioning personalizzato, è necessario disporre di quanto segue:
+ Un file JAR per un plug-in di provisioning personalizzato che implementa il. `DeviceIdentityInterface` Il plug-in di provisioning personalizzato deve restituire valori per ogni parametro di configurazione del sistema e del nucleo. Altrimenti, è necessario fornire tali valori nel file di configurazione durante l'installazione. Per ulteriori informazioni, consulta [Sviluppa plugin di provisioning personalizzati](develop-custom-provisioning-plugins.md).

## Configura l'ambiente del dispositivo
<a name="set-up-device-environment"></a>

Segui i passaggi di questa sezione per configurare un dispositivo Linux o Windows da utilizzare come dispositivo AWS IoT Greengrass principale.

### Configura un dispositivo Linux
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**Per configurare un dispositivo Linux per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva. I seguenti comandi mostrano come installare OpenJDK sul tuo dispositivo.
   + Per le distribuzioni basate su Debian o basate su Ubuntuu:

     ```
     sudo apt install default-jdk
     ```
   + Per le distribuzioni basate su Red Hat:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + Per Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Per Amazon Linux 2023:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   Al termine dell'installazione, esegui il comando seguente per verificare che Java funzioni sul tuo dispositivo Linux.

   ```
   java -version
   ```

   Il comando stampa la versione di Java in esecuzione sul dispositivo. Ad esempio, su una distribuzione basata su Debian, l'output potrebbe essere simile all'esempio seguente.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (Facoltativo) Crea l'utente e il gruppo di sistema predefiniti che eseguono i componenti sul dispositivo. Puoi anche scegliere di lasciare che il programma di installazione del software AWS IoT Greengrass Core crei questo utente e gruppo durante l'installazione con l'argomento `--component-default-user` installer. Per ulteriori informazioni, consulta [Argomenti dell'installatore](configure-installer.md).

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. Verificate che l'utente che esegue il software AWS IoT Greengrass Core (in genere`root`) sia autorizzato a funzionare `sudo` con qualsiasi utente e gruppo.

   1. Eseguite il comando seguente per aprire il `/etc/sudoers` file.

      ```
      sudo visudo
      ```

   1. Verificate che l'autorizzazione per l'utente sia simile all'esempio seguente.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. **(Facoltativo) Per [eseguire funzioni Lambda containerizzate](run-lambda-functions.md), è necessario abilitare [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1 e abilitare e montare i cgroup di memoria e dispositivi.** Se non intendi eseguire funzioni Lambda containerizzate, puoi saltare questo passaggio.

   Per abilitare queste opzioni di cgroups, avvia il dispositivo con i seguenti parametri del kernel Linux.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   Per informazioni sulla visualizzazione e l'impostazione dei parametri del kernel per il tuo dispositivo, consulta la documentazione del tuo sistema operativo e del boot loader. Segui le istruzioni per impostare in modo permanente i parametri del kernel.

1. Installa tutte le altre dipendenze richieste sul tuo dispositivo come indicato dall'elenco dei requisiti in. [Requisiti per il dispositivo](greengrass-nucleus-component.md#greengrass-v2-requirements)

### Configura un dispositivo Windows
<a name="set-up-windows-device-environment"></a>

**Nota**  
Questa funzionalità è disponibile per la versione 2.5.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.<a name="set-up-windows-device-environment-procedure"></a>

**Per configurare un dispositivo Windows per AWS IoT Greengrass V2**

1. Installa il runtime Java, necessario per l'esecuzione del software AWS IoT Greengrass Core. Ti consigliamo di utilizzare le versioni di supporto a lungo termine di [Amazon Corretto](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/). È richiesta la versione 8 o successiva.

1. Controlla se Java è disponibile nella variabile di sistema [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) e aggiungilo in caso contrario. L' LocalSystem account esegue il software AWS IoT Greengrass Core, quindi è necessario aggiungere Java alla variabile di sistema PATH anziché alla variabile utente PATH per l'utente. Esegui questa operazione:

   1. Premi il tasto Windows per aprire il menu di avvio.

   1. Digita **environment variables** per cercare le opzioni di sistema dal menu di avvio.

   1. Nei risultati della ricerca del menu di avvio, scegli **Modifica le variabili di ambiente di sistema** per aprire la finestra delle **proprietà del sistema**.

   1. Scegli **le variabili di ambiente...** per aprire la finestra **Variabili d'ambiente**.

   1. In **Variabili di sistema**, seleziona **Percorso**, quindi scegli **Modifica**. Nella finestra **Modifica variabile di ambiente**, puoi visualizzare ogni percorso su una riga separata.

   1. Controlla se è presente il percorso della `bin` cartella di installazione di Java. Il percorso potrebbe essere simile all'esempio seguente.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. Se la `bin` cartella di installazione Java non è presente in **Path**, scegliete **Nuovo** per aggiungerla, quindi scegliete **OK**.

1. <a name="set-up-windows-device-environment-open-cmd"></a>Aprite il prompt dei comandi di Windows (`cmd.exe`) come amministratore.

1. <a name="set-up-windows-device-environment-create"></a>Crea l'utente predefinito nell' LocalSystem account sul dispositivo Windows. Sostituiscilo *password* con una password sicura.

   ```
   net user /add ggc_user password
   ```
**Suggerimento**  <a name="windows-password-expiration-tip"></a>
A seconda della configurazione di Windows, la password dell'utente potrebbe essere impostata per scadere in date future. Per garantire che le tue applicazioni Greengrass continuino a funzionare, tieni traccia della scadenza della password e aggiornala prima che scada. Puoi anche impostare la password dell'utente in modo che non scada mai.  
Per verificare la scadenza di un utente e della relativa password, esegui il comando seguente.  

     ```
     net user ggc_user | findstr /C:expires
     ```
Per impostare la password di un utente in modo che non scada mai, esegui il comando seguente.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
Se utilizzi Windows 10 o versioni successive in cui il [`wmic`comando è obsoleto, esegui il comando](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic) seguente. PowerShell   

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Scarica e installa l'[PsExecutilità](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) di Microsoft sul dispositivo. 

1. <a name="set-up-windows-device-credentials"></a>Utilizzate l' PsExec utilità per memorizzare il nome utente e la password per l'utente predefinito nell'istanza di Credential Manager per l' LocalSystem account. Sostituiscila *password* con la password dell'utente che hai impostato in precedenza.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   Se si **PsExec License Agreement**apre, scegli **Accept**di accettare la licenza ed esegui il comando.
**Nota**  
Sui dispositivi Windows, l' LocalSystem account esegue il Greengrass nucleus ed è necessario utilizzare l' PsExec utilità per memorizzare le informazioni utente predefinite nell'account. LocalSystem L'utilizzo dell'applicazione Credential Manager archivia queste informazioni nell'account Windows dell'utente attualmente connesso, anziché nell'account. LocalSystem 

## Scaricate il software Core AWS IoT Greengrass
<a name="download-greengrass-core-v2"></a>

È possibile scaricare la versione più recente del software AWS IoT Greengrass Core dal seguente indirizzo:
+ [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

**Nota**  
È possibile scaricare una versione specifica del software AWS IoT Greengrass Core dal seguente percorso. Sostituiscila *version* con la versione da scaricare.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**Per scaricare il software AWS IoT Greengrass Core**

1. <a name="installation-download-ggc-software-step"></a>Sul dispositivo principale, scaricate il software AWS IoT Greengrass Core in un file denominato`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>Scaricando questo software accetti l'[Accordo di licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

1. <a name="verify-gg-nucleus-signature"></a>(Facoltativo) Per verificare la firma del software Greengrass nucleus
**Nota**  
Questa funzionalità è disponibile con Greengrass nucleus versione 2.9.5 e successive.

   1. Usa il seguente comando per verificare la firma del tuo artefatto Greengrass nucleus:

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      Il nome del file potrebbe avere un aspetto diverso a seconda della versione di JDK installata. *`jdk17.0.6_10`*Sostituiscilo con la versione JDK che hai installato.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. L'`jarsigner`invocazione produce un output che indica i risultati della verifica.

      1. Se il file zip Greengrass nucleus è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar verified.
         ```

      1. Se il file zip Greengrass nucleus non è firmato, l'output contiene la seguente dichiarazione:

         ```
         jar is unsigned.
         ```

   1. Se hai fornito l'`-certs`opzione Jarsigner insieme alle `-verbose` opzioni `-verify` e, l'output include anche informazioni dettagliate sul certificato del firmatario.

1. <a name="installation-unzip-ggc-software-step"></a>Decomprimi il software AWS IoT Greengrass Core in una cartella sul tuo dispositivo. Sostituiscilo *GreengrassInstaller* con la cartella che desideri utilizzare.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (Facoltativo) Eseguite il comando seguente per visualizzare la versione del software AWS IoT Greengrass Core.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**Importante**  <a name="installer-folder-2.4.0-warning"></a>
Se installi una versione del nucleo Greengrass precedente alla v2.4.0, non rimuovere questa cartella dopo aver installato il software Core. AWS IoT Greengrass Il software AWS IoT Greengrass Core utilizza i file in questa cartella per l'esecuzione.  
Se hai scaricato la versione più recente del software, installi la versione 2.4.0 o successiva e puoi rimuovere questa cartella dopo aver installato il software AWS IoT Greengrass Core.

## Installa il software Core AWS IoT Greengrass
<a name="run-greengrass-core-v2-installer-custom"></a>

Esegui il programma di installazione con argomenti che specificano le seguenti azioni:
+ Effettua l'installazione da un file di configurazione parziale che specifica di utilizzare il plug-in di provisioning personalizzato per il provisioning delle risorse. AWS Il software AWS IoT Greengrass Core utilizza un file di configurazione che specifica la configurazione di ogni componente Greengrass sul dispositivo. Il programma di installazione crea un file di configurazione completo a partire dal file di configurazione parziale fornito dall'utente e dalle AWS risorse create dal plug-in di provisioning personalizzato.
+ <a name="install-argument-component-default-user"></a>Specificate di utilizzare l'utente `ggc_user` del sistema per eseguire i componenti software sul dispositivo principale. Sui dispositivi Linux, questo comando specifica anche di utilizzare il gruppo di `ggc_group` sistema e il programma di installazione crea automaticamente l'utente e il gruppo di sistema.
+ <a name="install-argument-system-service"></a>Configura il software AWS IoT Greengrass Core come servizio di sistema che viene eseguito all'avvio. Sui dispositivi Linux, ciò richiede il [sistema di inizializzazione Systemd](https://en.wikipedia.org/wiki/Systemd).
**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Sui dispositivi Windows core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.

Per ulteriori informazioni sugli argomenti che è possibile specificare, vedere[Argomenti dell'installatore](configure-installer.md).

**Nota**  
<a name="jvm-tuning-note"></a>Se utilizzi AWS IoT Greengrass un dispositivo con memoria limitata, puoi controllare la quantità di memoria utilizzata dal software AWS IoT Greengrass Core. Per controllare l'allocazione della memoria, è possibile impostare le opzioni relative alla dimensione dell'heap JVM nel parametro di `jvmOptions` configurazione del componente nucleus. Per ulteriori informazioni, consulta [Controlla l'allocazione della memoria con le opzioni JVM](configure-greengrass-core-v2.md#jvm-tuning).

**Per installare il software Core (Linux AWS IoT Greengrass )**

1. <a name="installer-check-greengrass-core-software-version"></a>Controlla la versione del software AWS IoT Greengrass Core.
   + Sostituisci *GreengrassInstaller* con il percorso della cartella che contiene il software.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. Utilizzate un editor di testo per creare un file di configurazione denominato `config.yaml` da fornire all'installatore.

   <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   Copiate il seguente contenuto YAML nel file.

   ```
   ---
   system:
     rootpath: "/greengrass/v2"
     # The following values are optional. Return them from the provisioning plugin or set them here.
     # certificateFilePath: ""
     # privateKeyPath: ""
     # rootCaPath: ""
     # thingName: ""
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
       configuration:
         # The following values are optional. Return them from the provisioning plugin or set them here.
         # awsRegion: ""
         # iotRoleAlias: ""
         # iotDataEndpoint: ""
         # iotCredEndpoint: ""
     com.example.CustomProvisioning:
       configuration:
         # You can specify configuration parameters to provide to your plugin.
         # pluginParameter: ""
   ```

   Successivamente, esegui queste operazioni:
   + Sostituiscilo *2.16.1* con la versione del software AWS IoT Greengrass Core.
   + Sostituisci ogni istanza di `/greengrass/v2` con la cartella principale di Greengrass.
   + (Facoltativo) Specificate i valori di configurazione del sistema e del nucleo. È necessario impostare questi valori se il plug-in di provisioning non li fornisce.
   + (Facoltativo) Specificate i parametri di configurazione da fornire al vostro plugin di provisioning.
**Nota**  
In questo file di configurazione, è possibile personalizzare altre opzioni di configurazione, come le porte e il proxy di rete da utilizzare, come illustrato nell'esempio seguente. Per ulteriori informazioni, vedere [Greengrass nucleus](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration) configuration.  

   ```
   ---
   system:
     rootpath: "/greengrass/v2"
     # The following values are optional. Return them from the provisioning plugin or set them here.
     # certificateFilePath: ""
     # privateKeyPath: ""
     # rootCaPath: ""
     # thingName: ""
   services:
     aws.greengrass.Nucleus:
       version: "2.16.1"
       configuration:
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "http://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
         # The following values are optional. Return them from the provisioning plugin or set them here.
         # awsRegion: ""
         # iotRoleAlias: ""
         # iotDataEndpoint: ""
         # iotCredEndpoint: ""
     com.example.CustomProvisioning:
       configuration:
         # You can specify configuration parameters to provide to your plugin.
         # pluginParameter: ""
   ```

1. Eseguire il programma di installazione. Specificate `--trusted-plugin` di fornire il plug-in di provisioning personalizzato e specificate di `--init-config` fornire il file di configurazione.
**Nota**  
In Windows esiste un limite di lunghezza del percorso di 260 caratteri. Se usi Windows, usa una cartella principale come `C:\greengrass\v2` o `D:\greengrass\v2` per mantenere i percorsi dei componenti Greengrass al di sotto del limite di 260 caratteri.
   + Sostituisci `/greengrass/v2` o *C:\$1greengrass\$1v2* con la cartella principale di Greengrass.
   + Sostituisci ogni istanza di *GreengrassInstaller* con la cartella in cui hai decompresso il programma di installazione.
   + Sostituisci il percorso del file JAR del plug-in di provisioning personalizzato con il percorso del file JAR del plug-in.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin /path/to/com.example.CustomProvisioning.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --trusted-plugin /path/to/com.example.CustomProvisioning.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --trusted-plugin /path/to/com.example.CustomProvisioning.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**Importante**  <a name="windows-system-service-installer-argument-important-note"></a>
Nei dispositivi Windows core, è necessario specificare `--setup-system-service true` di configurare il software AWS IoT Greengrass Core come servizio di sistema.

   <a name="installer-setup-system-service-output-message"></a>Se si specifica`--setup-system-service true`, il programma di installazione stampa `Successfully set up Nucleus as a system service` se ha configurato ed eseguito il software come servizio di sistema. In caso contrario, il programma di installazione non emette alcun messaggio se installa il software correttamente.
**Nota**  <a name="installer-deploy-dev-tools-without-provision"></a>
Non è possibile utilizzare l'`deploy-dev-tools`argomento per distribuire strumenti di sviluppo locali quando si esegue il programma di installazione senza l'argomento. `--provision true` Per informazioni sulla distribuzione della CLI Greengrass direttamente sul dispositivo, consulta. [Interfaccia a riga di comando Greengrass](gg-cli.md)

1. <a name="installer-verify-installation"></a>Verifica l'installazione visualizzando i file nella cartella principale.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   Se l'installazione è riuscita, la cartella principale contiene diverse cartelle, ad esempio `config``packages`, e`logs`.

<a name="install-greengrass-core-run-software"></a>Se avete installato il software AWS IoT Greengrass Core come servizio di sistema, il programma di installazione esegue il software automaticamente. In caso contrario, è necessario eseguire il software manualmente. Per ulteriori informazioni, consulta [Esegui il software AWS IoT Greengrass Core](run-greengrass-core-v2.md).

<a name="install-greengrass-core-next-steps-intro"></a>Per ulteriori informazioni su come configurare e utilizzare il software e AWS IoT Greengrass, vedere quanto segue:<a name="install-greengrass-core-next-steps-links"></a>
+ [Configurare il software AWS IoT Greengrass Core](configure-greengrass-core-v2.md)
+ [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md)
+ [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md)
+ [Interfaccia a riga di comando Greengrass](gg-cli.md)

# Sviluppa plugin di provisioning personalizzati
<a name="develop-custom-provisioning-plugins"></a>

Per sviluppare un plug-in di provisioning personalizzato, create una classe Java che implementa l'interfaccia. `com.aws.greengrass.provisioning.DeviceIdentityInterface` Puoi includere il file JAR Greengrass nucleus nel tuo progetto per accedere a questa interfaccia e alle sue classi. Questa interfaccia definisce un metodo che immette una configurazione di plugin e genera una configurazione di provisioning. La configurazione di provisioning definisce le configurazioni per il sistema e il componente [Greengrass](greengrass-nucleus-component.md) nucleus. Il programma di installazione del software AWS IoT Greengrass Core utilizza questa configurazione di provisioning per configurare il AWS IoT Greengrass software Core su un dispositivo.

Dopo aver sviluppato un plug-in di provisioning personalizzato, crealo come file JAR da fornire al programma di installazione del software AWS IoT Greengrass Core per eseguire il plug-in durante l'installazione. Il programma di installazione esegue il plug-in di provisioning personalizzato nella stessa JVM utilizzata dal programma di installazione, in modo da poter creare un JAR che contenga solo il codice del plug-in.

**Nota**  
Il [plug-in AWS IoT Fleet Provisioning implementa l'utilizzo del fleet provisioning](fleet-provisioning.md) durante l'`DeviceIdentityInterface`installazione. Il plug-in fleet provisioning è open source, quindi puoi esplorarne il codice sorgente per vedere un esempio di come utilizzare l'interfaccia del plug-in di provisioning. Per ulteriori informazioni, consulta il plug-in [AWS IoT Fleet Provisioning](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) su. GitHub

**Topics**
+ [Requisiti](#custom-provisioning-plugin-requirements)
+ [Implementa l'interfaccia DeviceIdentityInterface](#implement-device-identity-interface)

## Requisiti
<a name="custom-provisioning-plugin-requirements"></a>

Per sviluppare un plug-in di provisioning personalizzato, è necessario creare una classe Java che soddisfi i seguenti requisiti:
+ Utilizza il `com.aws.greengrass` pacchetto o un pacchetto all'interno del `com.aws.greengrass` pacchetto.
+ Ha un costruttore senza argomenti.
+ Implementa l'interfaccia. `DeviceIdentityInterface` Per ulteriori informazioni, consulta [Implementa l'interfaccia DeviceIdentityInterface](#implement-device-identity-interface).

## Implementa l'interfaccia DeviceIdentityInterface
<a name="implement-device-identity-interface"></a>

Per utilizzare l'`com.aws.greengrass.provisioning.DeviceIdentityInterface`interfaccia del tuo plugin personalizzato, aggiungi il nucleo Greengrass come dipendenza al tuo progetto.

**Per utilizzarlo DeviceIdentityInterface in un progetto di plug-in di provisioning personalizzato**
+ Puoi aggiungere il file JAR Greengrass nucleus come libreria o aggiungere il nucleo Greengrass come dipendenza Maven. Esegui una delle seguenti operazioni:
  + Per aggiungere il file JAR Greengrass nucleus come libreria, scaricate il software AWS IoT Greengrass Core, che contiene il file JAR Greengrass nucleus. È possibile scaricare la versione più recente del software AWS IoT Greengrass Core dal seguente percorso:
    + [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

    È possibile trovare il file JAR Greengrass nucleus (`Greengrass.jar`) nella `lib` cartella del file ZIP. Aggiungi questo file JAR al tuo progetto.
  + Per utilizzare il nucleo Greengrass in un progetto Maven, aggiungi una dipendenza dall'artefatto del gruppo. `nucleus` `com.aws.greengrass` È inoltre necessario aggiungere il `greengrass-common` repository, poiché il nucleo Greengrass non è disponibile nel Maven Central Repository.

    ```
    <project ...>
        ...
        <repositories>
            <repository>
                <id>greengrass-common</id>
                <name>greengrass common</name>
                <url>https://d2jrmugq4soldf.cloudfront.net/snapshots</url>
            </repository>
        </repositories>
        ...
        <dependencies>
            <dependency>
                <groupId>com.aws.greengrass</groupId>
                <artifactId>nucleus</artifactId>
                <version>2.5.0-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </project>
    ```

### L'interfaccia DeviceIdentityInterface
<a name="device-identity-interface-shape"></a>

L'`com.aws.greengrass.provisioning.DeviceIdentityInterface`interfaccia ha la seguente forma.

**Nota**  
[Puoi anche esplorare queste classi nel [pacchetto com.aws.greengrass.provisioning del codice sorgente Greengrass](https://github.com/aws-greengrass/aws-greengrass-nucleus/tree/main/src/main/java/com/aws/greengrass/provisioning) nucleus on.](https://github.com/aws-greengrass/aws-greengrass-nucleus) GitHub

```
public interface com.aws.greengrass.provisioning.DeviceIdentityInterface {
    ProvisionConfiguration updateIdentityConfiguration(ProvisionContext context)
            throws RetryableProvisioningException, InterruptedException;

    // Return the name of the plugin.
    String name(); 
}

com.aws.greengrass.provisioning.ProvisionConfiguration {
    SystemConfiguration systemConfiguration;
    NucleusConfiguration nucleusConfiguration    
}

com.aws.greengrass.provisioning.ProvisionConfiguration.SystemConfiguration {
    String certificateFilePath;
    String privateKeyPath;
    String rootCAPath;
    String thingName;
}

com.aws.greengrass.provisioning.ProvisionConfiguration.NucleusConfiguration {
    String awsRegion;
    String iotCredentialsEndpoint;
    String iotDataEndpoint;
    String iotRoleAlias;
}

com.aws.greengrass.provisioning.ProvisioningContext {
    Map<String, Object> parameterMap;
    String provisioningPolicy;  // The policy is always "PROVISION_IF_NOT_PROVISIONED".
}
   
com.aws.greengrass.provisioning.exceptions.RetryableProvisioningException {}
```

Ogni valore di configurazione nella `SystemConfiguration` e `NucleusConfiguration` è necessario per installare il software Core, ma è possibile restituirlo. AWS IoT Greengrass `null` Se il plug-in di provisioning personalizzato restituisce `null` un valore di configurazione, è necessario fornire tale valore nella configurazione del sistema o del nucleo quando si crea il `config.yaml` file da fornire al programma di installazione del software AWS IoT Greengrass Core. Se il plug-in di provisioning personalizzato restituisce un valore diverso da nullo per un'opzione anch'essa definita in`config.yaml`, il programma di installazione sostituisce il valore in `config.yaml` con il valore restituito dal plug-in.

# Argomenti dell'installatore
<a name="configure-installer"></a>

Il software AWS IoT Greengrass Core include un programma di installazione che configura il software e fornisce le AWS risorse necessarie per il funzionamento del dispositivo principale Greengrass. Il programma di installazione include i seguenti argomenti che è possibile specificare per configurare l'installazione:

`-h`, `--help`  
(Facoltativo) Mostra le informazioni di aiuto dell'installatore.

`--version`  
(Facoltativo) Mostra la versione del software AWS IoT Greengrass Core.

`-Droot`  
(Facoltativo) Il percorso della cartella da utilizzare come root per il software AWS IoT Greengrass Core.  
Questo argomento imposta una proprietà JVM, quindi è necessario specificarla prima di eseguire `-jar` il programma di installazione. Ad esempio, specifica `java -Droot="/greengrass/v2" -jar /path/to/Greengrass.jar`.
Impostazione predefinita:  
+ Linux: `~/.greengrass`
+ Windows: `%USERPROFILE%/.greengrass`

`-ar`, `--aws-region`  
 Regione AWS Quello che il software AWS IoT Greengrass Core utilizza per recuperare o creare le risorse richieste. AWS 

`-p`, `--provision`  
(Facoltativo) È possibile registrare questo dispositivo come AWS IoT oggetto e fornire le AWS risorse richieste dal dispositivo principale. Se si specifica`true`, il software AWS IoT Greengrass Core fornisce qualsiasi AWS IoT oggetto, (facoltativo) un AWS IoT gruppo di oggetti, un ruolo IAM e un alias di AWS IoT ruolo.  
Impostazione predefinita: `false`

`-tn`, `--thing-name`  
(Facoltativo) Il nome dell' AWS IoT elemento che registrate come dispositivo principale. Se l'oggetto con questo nome non esiste nel tuo computer Account AWS, il software AWS IoT Greengrass Core lo crea.  
Il nome dell'oggetto non può contenere i due punti (`:`).
È necessario specificare `--provision true` se applicare questo argomento.  
Impostazione predefinita: `GreengrassV2IotThing_` più un UUID casuale.

`-tgn`, `--thing-group-name`  
(Facoltativo) Il nome del AWS IoT gruppo di oggetti a cui aggiungi l'elemento del AWS IoT dispositivo principale. Se una distribuzione ha come target questo gruppo di oggetti, il dispositivo principale riceve tale distribuzione quando si connette a AWS IoT Greengrass. Se il gruppo di oggetti con questo nome non esiste nel tuo computer Account AWS, il software AWS IoT Greengrass Core lo crea.  
Il nome del gruppo di cose non può contenere i due punti (`:`).
È necessario specificare `--provision true` se applicare questo argomento.

`-tpn`, `--thing-policy-name`  
Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.  
(Facoltativo) Il nome della AWS IoT policy da allegare al thing certificate di questo dispositivo principale. AWS IoT Se la AWS IoT politica con questo nome non esiste nel tuo computer Account AWS, il software AWS IoT Greengrass Core la crea.  
Il software AWS IoT Greengrass Core crea una AWS IoT politica permissiva per impostazione predefinita. È possibile definire l'ambito di questa politica o creare una politica personalizzata in cui limitare le autorizzazioni per il proprio caso d'uso. Per ulteriori informazioni, consulta [AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali](device-auth.md#greengrass-core-minimal-iot-policy).  
È necessario specificare `--provision true` se applicare questo argomento.  
Impostazione predefinita: `GreengrassV2IoTThingPolicy`

`-trn`, `--tes-role-name`  
(Facoltativo) Il nome del ruolo IAM da utilizzare per acquisire AWS credenziali che consentono al dispositivo principale di interagire con AWS i servizi. Se il ruolo con questo nome non esiste nel tuo Account AWS, il software AWS IoT Greengrass Core lo crea con la `GreengrassV2TokenExchangeRoleAccess` policy. Questo ruolo non ha accesso ai tuoi bucket S3 dove ospiti gli artefatti dei componenti. Pertanto, è necessario aggiungere le autorizzazioni ai bucket e agli oggetti S3 degli artefatti quando si crea un componente. Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).  
È necessario specificare se applicare questo argomento. `--provision true`  
Impostazione predefinita: `GreengrassV2TokenExchangeRole`

`-tra`, `--tes-role-alias-name`  
(Facoltativo) Il nome dell'alias del AWS IoT ruolo che punta al ruolo IAM che fornisce AWS le credenziali per questo dispositivo principale. Se l'alias del ruolo con questo nome non esiste nel tuo computer Account AWS, il software AWS IoT Greengrass Core lo crea e lo indirizza al ruolo IAM da te specificato.  
È necessario specificare `--provision true` se applicare questo argomento.  
Impostazione predefinita: `GreengrassV2TokenExchangeRoleAlias`

`-ss`, `--setup-system-service`  
(Facoltativo) È possibile configurare il software AWS IoT Greengrass Core come servizio di sistema che viene eseguito all'avvio del dispositivo. Il nome del servizio di sistema è`greengrass`. Per ulteriori informazioni, consulta [Configurare il nucleo Greengrass come servizio di sistema](configure-greengrass-core-v2.md#configure-system-service).  
Nei sistemi operativi Linux, questo argomento richiede che il sistema init systemd sia disponibile sul dispositivo.  
Nei dispositivi Windows core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.
Impostazione predefinita: `false`

`-u`, `--component-default-user`  
Il nome o l'ID dell'utente utilizzato dal software AWS IoT Greengrass Core per eseguire i componenti. Ad esempio, puoi specificare **ggc\$1user**. Questo valore è richiesto quando si esegue il programma di installazione su sistemi operativi Windows.  
Nei sistemi operativi Linux, è anche possibile specificare facoltativamente il gruppo. Specificare l'utente e il gruppo separati da due punti. Ad esempio **ggc\$1user:ggc\$1group**.  

Le seguenti considerazioni aggiuntive si applicano ai sistemi operativi Linux:
+ Se si esegue come root, l'utente predefinito del componente è l'utente definito nel file di configurazione. Se il file di configurazione non definisce un utente, il valore predefinito è. `ggc_user:ggc_group` Se esistono `ggc_user` o `ggc_group` non esistono, il software li crea.
+ Se si esegue come utente non root, il software AWS IoT Greengrass Core utilizza quell'utente per eseguire i componenti.
+ Se non specificate un gruppo, il software AWS IoT Greengrass Core utilizza il gruppo principale dell'utente del sistema.
Per ulteriori informazioni, consulta [Configurare l'utente che esegue i componenti](configure-greengrass-core-v2.md#configure-component-user).

`-d`, `--deploy-dev-tools`  
(Facoltativo) È possibile scaricare e distribuire il componente [Greengrass](greengrass-cli-component.md) CLI su questo dispositivo principale. È possibile utilizzare questo strumento per sviluppare ed eseguire il debug di componenti su questo dispositivo principale.  
 <a name="local-dev-tools-production-environment-warning"></a>Si consiglia di utilizzare questo componente solo in ambienti di sviluppo, non in ambienti di produzione. Questo componente fornisce l'accesso a informazioni e operazioni che in genere non sono necessarie in un ambiente di produzione. Segui il principio del privilegio minimo distribuendo questo componente solo sui dispositivi principali dove ne hai bisogno. 
È necessario specificare se `--provision true` applicare questo argomento.  
Impostazione predefinita: `false`

`-init`, `--init-config`  
(Facoltativo) Il percorso del file di configurazione da utilizzare per installare il software AWS IoT Greengrass Core. È possibile utilizzare questa opzione per configurare nuovi dispositivi principali con una configurazione di nucleo specifica, ad esempio.   
Il file di configurazione specificato si fonde con il file di configurazione esistente sul dispositivo principale. Ciò include i componenti e le configurazioni dei componenti sul dispositivo principale. È consigliabile che il file di configurazione elenchi solo le configurazioni che si sta tentando di modificare.

`-tp`, `--trusted-plugin`  
(Facoltativo) Il percorso di un file JAR da caricare come plugin affidabile. Utilizzate questa opzione per fornire i file JAR del plug-in di provisioning, ad esempio per l'installazione con [fleet provisioning](fleet-provisioning.md) o il [provisioning personalizzato](custom-provisioning.md), oppure per l'installazione con la chiave privata e il certificato in un modulo di sicurezza [hardware](hardware-security.md).

`-s`, `--start`  
(Facoltativo) È possibile avviare il software AWS IoT Greengrass Core dopo l'installazione e, facoltativamente, effettuare il provisioning delle risorse.  
Impostazione predefinita: `true`

# Esegui il software AWS IoT Greengrass Core
<a name="run-greengrass-core-v2"></a>

Dopo aver [installato il software AWS IoT Greengrass Core](install-greengrass-core-v2.md), eseguilo per connettere il dispositivo a AWS IoT Greengrass.

Quando installi il software AWS IoT Greengrass Core, puoi specificare se installarlo come servizio di sistema con [systemd.](https://en.wikipedia.org/wiki/Systemd) Se scegliete questa opzione, il programma di installazione esegue il software automaticamente e lo configura per l'esecuzione all'avvio del dispositivo.

**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Nei dispositivi Windows Core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.

**Topics**
+ [Verificate se il software AWS IoT Greengrass Core funziona come servizio di sistema](#check-system-service)
+ [Esegui il software AWS IoT Greengrass Core come servizio di sistema](#run-greengrass-core-system-service)
+ [Esegui il software AWS IoT Greengrass Core senza un servizio di sistema](#run-greengrass-core-no-system-service)

## Verificate se il software AWS IoT Greengrass Core funziona come servizio di sistema
<a name="check-system-service"></a>

Quando installi il software AWS IoT Greengrass Core, puoi specificare l'`--setup-system-service true`argomento per installare il software AWS IoT Greengrass Core come servizio di sistema. I dispositivi Linux richiedono il sistema [systemd](https://en.wikipedia.org/wiki/Systemd) init per configurare il software AWS IoT Greengrass Core come servizio di sistema. Se si utilizza questa opzione, il programma di installazione esegue il software automaticamente e lo configura per l'esecuzione all'avvio del dispositivo. Il programma di installazione emette il seguente messaggio se installa correttamente il software AWS IoT Greengrass Core come servizio di sistema.

```
Successfully set up Nucleus as a system service
```

Se in precedenza avete installato il software AWS IoT Greengrass Core e non avete l'output del programma di installazione, potete verificare se il software è installato come servizio di sistema.

**Per verificare se il software AWS IoT Greengrass Core è installato come servizio di sistema**
+ Esegui il seguente comando per verificare lo stato del servizio di sistema Greengrass.

------
#### [ Linux or Unix (systemd) ]

  ```
  sudo systemctl status greengrass.service
  ```

  La risposta è simile all'esempio seguente se il software AWS IoT Greengrass Core è installato come servizio di sistema e attivo.

  ```
  ● greengrass.service - Greengrass Core
     Loaded: loaded (/etc/systemd/system/greengrass.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2021-02-11 01:33:44 UTC; 4 days ago
   Main PID: 16107 (sh)
     CGroup: /system.slice/greengrass.service
             ├─16107 /bin/sh /greengrass/v2/alts/current/distro/bin/loader
             └─16111 java -Dlog.store=FILE -Droot=/greengrass/v2 -jar /greengrass/v2/alts/current/distro/lib/Greengrass...
  ```

  Se `systemctl` o `greengrass.service` non viene trovato, il software AWS IoT Greengrass Core non viene installato come servizio di sistema. Per eseguire il software, vedi[Esegui il software AWS IoT Greengrass Core senza un servizio di sistema](#run-greengrass-core-no-system-service).

------
#### [ Windows Command Prompt (CMD) ]

  ```
  sc query greengrass
  ```

  La risposta è simile all'esempio seguente se il software AWS IoT Greengrass Core è installato come servizio Windows e attivo.

  ```
  SERVICE_NAME: greengrass
          TYPE               : 10  WIN32_OWN_PROCESS
          STATE              : 4  RUNNING
                                  (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
          WIN32_EXIT_CODE    : 0  (0x0)
          SERVICE_EXIT_CODE  : 0  (0x0)
          CHECKPOINT         : 0x0
          WAIT_HINT          : 0x0
  ```

------
#### [ PowerShell ]

  ```
  Get-Service greengrass
  ```

  La risposta è simile all'esempio seguente se il software AWS IoT Greengrass Core è installato come servizio Windows e attivo.

  ```
  Status   Name               DisplayName
  ------   ----               -----------
  Running  greengrass         greengrass
  ```

------

## Esegui il software AWS IoT Greengrass Core come servizio di sistema
<a name="run-greengrass-core-system-service"></a>

Se il software AWS IoT Greengrass Core è installato come servizio di sistema, è possibile utilizzare il gestore dei servizi di sistema per avviare, arrestare e gestire il software. Per ulteriori informazioni, consulta [Configurare il nucleo Greengrass come servizio di sistema](configure-greengrass-core-v2.md#configure-system-service).

**Per eseguire il software AWS IoT Greengrass Core**
+ Esegui il seguente comando per avviare il software AWS IoT Greengrass Core.

------
#### [ Linux or Unix (systemd) ]

  ```
  sudo systemctl start greengrass.service
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  sc start greengrass
  ```

------
#### [ PowerShell ]

  ```
  Start-Service greengrass
  ```

------

## Esegui il software AWS IoT Greengrass Core senza un servizio di sistema
<a name="run-greengrass-core-no-system-service"></a>

Sui dispositivi Linux core, se il software AWS IoT Greengrass Core non è installato come servizio di sistema, puoi eseguire lo script di caricamento del software per eseguire il software.

**Per eseguire il software AWS IoT Greengrass Core senza un servizio di sistema**
+ Esegui il seguente comando per avviare il software AWS IoT Greengrass Core. Se si esegue questo comando in un terminale, è necessario mantenere aperta la sessione del terminale per mantenere in esecuzione il software AWS IoT Greengrass Core.
  + Sostituisci `/greengrass/v2` o *C:\$1greengrass\$1v2* con la cartella principale Greengrass che usi.

  ```
  sudo /greengrass/v2/alts/current/distro/bin/loader
  ```

  Il software stampa il seguente messaggio se viene avviato correttamente.

  ```
  Launched Nucleus successfully.
  ```

# Esegui il software AWS IoT Greengrass Core in un contenitore Docker
<a name="run-greengrass-docker"></a>

AWS IoT Greengrass può essere configurato per l'esecuzione in un contenitore Docker. Docker è una piattaforma che fornisce gli strumenti per creare, eseguire, testare e distribuire applicazioni basate su contenitori Linux. Quando esegui un'immagine AWS IoT Greengrass Docker, puoi scegliere se fornire AWS le tue credenziali al contenitore Docker e consentire al programma di installazione del software AWS IoT Greengrass Core di fornire automaticamente le risorse necessarie per il AWS funzionamento di un dispositivo core Greengrass. Se non desideri fornire AWS le credenziali, puoi effettuare manualmente il provisioning AWS delle risorse ed eseguire il software AWS IoT Greengrass Core nel contenitore Docker.

**Topics**
+ [Piattaforme supportate e requisiti](#greengrass-docker-supported-platforms)
+ [Download di software](#greengrass-docker-downloads)
+ [Scegli come effettuare il provisioning delle risorse AWS](#greengrass-docker-resource-provisioning)
+ [Crea l' AWS IoT Greengrass immagine da un Dockerfile](build-greengrass-dockerfile.md)
+ [Esegui AWS IoT Greengrass in Docker con provisioning automatico](run-greengrass-docker-automatic-provisioning.md)
+ [Esegui AWS IoT Greengrass in Docker con provisioning manuale](run-greengrass-docker-manual-provisioning.md)
+ [Risoluzione dei problemi AWS IoT Greengrass in un contenitore Docker](docker-troubleshooting.md)

## Piattaforme supportate e requisiti
<a name="greengrass-docker-supported-platforms"></a>

I computer host devono soddisfare i seguenti requisiti minimi per installare ed eseguire il software AWS IoT Greengrass Core in un contenitore Docker:
+ <a name="docker-host-reqs"></a>Un sistema operativo basato su Linux con una connessione Internet.
+ <a name="docker-engine-reqs"></a>[Docker Engine](https://docs.docker.com/engine/install/) versione 18.09 o successiva.
+ <a name="docker-compose-reqs"></a>(Facoltativo) [Docker Compose](https://docs.docker.com/compose/install/) versione 1.22 o successiva. Docker Compose è necessario solo se si desidera utilizzare la CLI Docker Compose per eseguire le immagini Docker.

Per eseguire i componenti della funzione Lambda all'interno del contenitore Docker, è necessario configurare il contenitore per soddisfare requisiti aggiuntivi. Per ulteriori informazioni, consulta [Requisiti della funzione Lambda](setting-up.md#greengrass-v2-lambda-requirements).

### Esegui i componenti in modalità processo
<a name="docker-container-mode-limitation"></a>

AWS IoT Greengrass non supporta l'esecuzione di funzioni Lambda o componenti AWS forniti in un ambiente di runtime isolato all'interno del AWS IoT Greengrass contenitore Docker. È necessario eseguire questi componenti in modalità processo senza alcun isolamento.

Quando configuri un componente della funzione Lambda, imposta la modalità di isolamento su **Nessun** contenitore. Per ulteriori informazioni, consulta [Esegui AWS Lambda funzioni](run-lambda-functions.md). 

Quando distribuisci uno dei seguenti componenti AWS forniti, aggiorna la configurazione di ogni componente su cui impostare il `containerMode` parametro. `NoContainer` Per ulteriori informazioni sugli aggiornamenti della configurazione, vedere. [Aggiornamento delle configurazioni dei componenti](update-component-configurations.md)
+ [CloudWatch metriche](cloudwatch-metrics-component.md)
+ [Device Defender](device-defender-component.md)
+ [Firehose](kinesis-firehose-component.md)
+ [Adattatore di protocollo Modbus-RTU](modbus-rtu-protocol-adapter-component.md)
+ [Amazon SNS](sns-component.md)

## AWS IoT Greengrass Download del software Docker
<a name="greengrass-docker-downloads"></a>

AWS IoT Greengrass fornisce un Dockerfile per creare un'immagine del contenitore con software AWS IoT Greengrass Core e dipendenze installati su un'immagine base Amazon Linux 2 (x86\$164). Puoi modificare l'immagine di base nel Dockerfile per eseguirla su un'architettura di piattaforma diversa. AWS IoT Greengrass 

Scarica il pacchetto Dockerfile da. [GitHub](https://github.com/aws-greengrass/aws-greengrass-docker)

Il Dockerfile utilizza una versione precedente di Greengrass. È necessario aggiornare il file per utilizzare la versione di Greengrass desiderata. Per informazioni sulla creazione dell'immagine del AWS IoT Greengrass contenitore dal Dockerfile, consulta. [Crea l'immagine del AWS IoT Greengrass contenitore da un Dockerfile](build-greengrass-dockerfile.md)

## Scegli come effettuare il provisioning delle risorse AWS
<a name="greengrass-docker-resource-provisioning"></a>

Quando installi il software AWS IoT Greengrass Core in un contenitore Docker, puoi scegliere se effettuare il provisioning automatico AWS delle risorse necessarie al funzionamento di un dispositivo core Greengrass o utilizzare le risorse che effettui il provisioning manuale.
+ **Provisioning automatico delle risorse**: il programma di installazione esegue il provisioning dell' AWS IoT AWS IoT oggetto, del gruppo di oggetti, del ruolo IAM e dell'alias del AWS IoT ruolo quando si esegue l'immagine del AWS IoT Greengrass contenitore per la prima volta. Il programma di installazione può anche distribuire gli strumenti di sviluppo locali sul dispositivo principale, in modo da poter utilizzare il dispositivo per sviluppare e testare componenti software personalizzati. Per effettuare automaticamente il provisioning di queste risorse, è necessario fornire AWS le credenziali come variabili di ambiente all'immagine Docker.

  Per utilizzare il provisioning automatico, è necessario impostare la variabile di ambiente Docker `PROVISION=true` e montare un file di credenziali per fornire le AWS credenziali al contenitore.
+ Fornitura **manuale delle risorse: se non desideri fornire AWS credenziali al contenitore, puoi effettuare il provisioning** manuale AWS delle risorse prima di eseguire l'immagine del contenitore. AWS IoT Greengrass È necessario creare un file di configurazione per fornire informazioni su queste risorse al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker.

  Per utilizzare il provisioning manuale, è necessario impostare la variabile di ambiente Docker. `PROVISION=false` Il provisioning manuale è l'opzione predefinita.

Per ulteriori informazioni, consulta [Crea l'immagine del AWS IoT Greengrass contenitore da un Dockerfile](build-greengrass-dockerfile.md).

# Crea l'immagine del AWS IoT Greengrass contenitore da un Dockerfile
<a name="build-greengrass-dockerfile"></a>

AWS fornisce un Dockerfile che puoi scaricare e utilizzare per eseguire AWS IoT Greengrass il software Core in un contenitore Docker. I Dockerfile contengono il codice sorgente per la creazione di immagini dei container. AWS IoT Greengrass 

Prima di creare un'immagine del AWS IoT Greengrass contenitore, devi configurare il tuo Dockerfile per selezionare la versione del software AWS IoT Greengrass Core che desideri installare. Puoi anche configurare le variabili di ambiente per scegliere come fornire le risorse durante l'installazione e personalizzare altre opzioni di installazione. Questa sezione descrive come configurare e creare un'immagine AWS IoT Greengrass Docker da un Dockerfile. 



## Scarica il pacchetto Dockerfile
<a name="download-dockerfile-package"></a>

Puoi scaricare il pacchetto AWS IoT Greengrass Dockerfile da: GitHub

[Repository Docker AWS Greengrass](https://github.com/aws-greengrass/aws-greengrass-docker)

Dopo aver scaricato il pacchetto, estrai il contenuto `download-directory/aws-greengrass-docker-nucleus-version` nella cartella sul tuo computer. Il Dockerfile utilizza una versione precedente di Greengrass. È necessario aggiornare il file per utilizzare la versione di Greengrass desiderata.

## Specificare la versione del software AWS IoT Greengrass Core
<a name="set-dockerfile-build-argument"></a>

Utilizzate il seguente argomento di compilazione nel Dockerfile per specificare la versione del software AWS IoT Greengrass Core che desiderate utilizzare nell'immagine AWS IoT Greengrass Docker. Per impostazione predefinita, il Dockerfile utilizza l'ultima versione del software Core. AWS IoT Greengrass 

`GREENGRASS_RELEASE_VERSION`  
La versione del software AWS IoT Greengrass Core. Per impostazione predefinita, il Dockerfile scarica l'ultima versione disponibile del nucleo Greengrass. Imposta il valore sulla versione del nucleo che desideri scaricare.

## Impostazione delle variabili di ambiente
<a name="set-dockerfile-environment-variables"></a>

Le variabili di ambiente consentono di personalizzare il modo in cui il software AWS IoT Greengrass Core viene installato nel contenitore Docker. Puoi impostare le variabili di ambiente per l'immagine AWS IoT Greengrass Docker in vari modi. 
+ Per utilizzare le stesse variabili di ambiente per creare più immagini, imposta le variabili di ambiente direttamente nel Dockerfile.
+ Se lo usi `docker run` per avviare il contenitore, passa le variabili di ambiente come argomenti nel comando o imposta le variabili di ambiente in un file di variabili di ambiente e poi passa il file come argomento. Per ulteriori informazioni sull'impostazione delle variabili di ambiente in Docker, consulta le [variabili di ambiente](https://docs.docker.com/engine/reference/commandline/run/#env) nella documentazione di Docker.
+ Se lo usi `docker-compose up` per avviare il contenitore, imposta le variabili di ambiente in un file di variabili di ambiente e poi passa il file come argomento. Per ulteriori informazioni sull'impostazione delle variabili di ambiente in Compose, consulta la [documentazione Docker](https://docs.docker.com/compose/environment-variables/).

È possibile configurare le seguenti variabili di ambiente per l'immagine AWS IoT Greengrass Docker.

**Nota**  
Non modificare la `TINI_KILL_PROCESS_GROUP` variabile nel Dockerfile. Questa variabile consente l'inoltro `SIGTERM` a tutti i membri del gruppo PID PIDs in modo che il software AWS IoT Greengrass Core possa spegnersi correttamente quando il contenitore Docker viene arrestato.

`GGC_ROOT_PATH`  
(Facoltativo) Il percorso della cartella all'interno del contenitore da utilizzare come root per AWS IoT Greengrass il software Core.  
Impostazione predefinita: `/greengrass/v2`

`PROVISION`  
(Facoltativo) Determina se il AWS IoT Greengrass Core fornisce AWS le risorse.   
+ Se si specifica`true`, il software AWS IoT Greengrass Core registra l'immagine del contenitore come AWS IoT oggetto e fornisce le AWS risorse richieste dal dispositivo principale Greengrass. Il software AWS IoT Greengrass Core fornisce qualsiasi AWS IoT oggetto, (opzionale) un gruppo di oggetti, un AWS IoT ruolo IAM e un alias di AWS IoT ruolo. Per ulteriori informazioni, consulta [Esegui AWS IoT Greengrass in un contenitore Docker con provisioning automatico delle risorse](run-greengrass-docker-automatic-provisioning.md).
+ Se lo specifichi`false`, devi creare un file di configurazione da fornire al programma di installazione AWS IoT Greengrass Core che specifichi di utilizzare le AWS risorse e i certificati creati manualmente. Per ulteriori informazioni, consulta [Esegui AWS IoT Greengrass in un contenitore Docker con provisioning manuale delle risorse](run-greengrass-docker-manual-provisioning.md).
Default: `false`

`AWS_REGION`  
(Facoltativo) Regione AWS Quello che il software AWS IoT Greengrass Core utilizza per recuperare o creare le risorse richieste. AWS   
Default: `us-east-1`.

`THING_NAME`  
(Facoltativo) Il nome dell' AWS IoT elemento che registri come dispositivo principale. Se l'oggetto con questo nome non esiste nel tuo computer Account AWS, il software AWS IoT Greengrass Core lo crea.   
È necessario specificare se si `PROVISION=true` desidera applicare questo argomento.  
Impostazione predefinita: `GreengrassV2IotThing_` più un UUID casuale.

`THING_GROUP_NAME`  
(Facoltativo) Il nome del gruppo di oggetti a cui aggiungi questo dispositivo principale è AWS IoT Se una distribuzione è destinata a questo gruppo di oggetti, questo e gli altri dispositivi principali di quel gruppo ricevono quella distribuzione quando si connette. AWS IoT AWS IoT Greengrass Se il gruppo di oggetti con questo nome non esiste nel tuo Account AWS, il software AWS IoT Greengrass Core lo crea.  
È necessario specificare `PROVISION=true` di applicare questo argomento.

`TES_ROLE_NAME`  
(Facoltativo) Il nome del ruolo IAM da utilizzare per acquisire AWS credenziali che consentono al dispositivo principale Greengrass di interagire con AWS i servizi. Se il ruolo con questo nome non esiste nel tuo account Account AWS, il software AWS IoT Greengrass Core lo crea con la `GreengrassV2TokenExchangeRoleAccess` policy. Questo ruolo non ha accesso ai tuoi bucket S3 dove ospiti gli artefatti dei componenti. Pertanto, è necessario aggiungere le autorizzazioni ai bucket e agli oggetti S3 degli artefatti quando si crea un componente. Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).  
Default: `GreengrassV2TokenExchangeRole`

`TES_ROLE_ALIAS_NAME`  
(Facoltativo) Il nome dell'alias del AWS IoT ruolo che punta al ruolo IAM che fornisce AWS le credenziali per il dispositivo principale Greengrass. Se l'alias del ruolo con questo nome non esiste nel tuo computer Account AWS, il software AWS IoT Greengrass Core lo crea e lo indirizza al ruolo IAM da te specificato.  
Impostazione predefinita: `GreengrassV2TokenExchangeRoleAlias`

`COMPONENT_DEFAULT_USER`  
(Facoltativo) Il nome o l'ID dell'utente e del gruppo di sistema utilizzati dal software AWS IoT Greengrass Core per eseguire i componenti. Specificate l'utente e il gruppo, separati da due punti. Il gruppo è facoltativo. Ad esempio, puoi specificare **ggc\$1user:ggc\$1group** o **ggc\$1user**.  
+ Se esegui come root, per impostazione predefinita sono l'utente e il gruppo definiti dal file di configurazione. Se il file di configurazione non definisce un utente e un gruppo, il valore predefinito è. `ggc_user:ggc_group` Se esistono `ggc_user` o `ggc_group` non esistono, il software li crea.
+ Se si esegue come utente non root, il software AWS IoT Greengrass Core utilizza quell'utente per eseguire i componenti.
+ Se non specificate un gruppo, il software AWS IoT Greengrass Core utilizza il gruppo principale dell'utente del sistema.
Per ulteriori informazioni, consulta [Configurare l'utente che esegue i componenti](configure-greengrass-core-v2.md#configure-component-user).

`DEPLOY_DEV_TOOLS`  
Definisce se scaricare e distribuire il componente [Greengrass CLI](greengrass-cli-component.md) nell'immagine del contenitore. È possibile utilizzare la Greengrass CLI per sviluppare ed eseguire il debug dei componenti localmente.  
 <a name="local-dev-tools-production-environment-warning"></a>Si consiglia di utilizzare questo componente solo in ambienti di sviluppo, non in ambienti di produzione. Questo componente fornisce l'accesso a informazioni e operazioni che in genere non sono necessarie in un ambiente di produzione. Segui il principio del privilegio minimo distribuendo questo componente solo sui dispositivi principali dove ne hai bisogno. 
Impostazione predefinita: `false`

`INIT_CONFIG`  
(Facoltativo) Il percorso del file di configurazione da utilizzare per installare il software AWS IoT Greengrass Core. È possibile utilizzare questa opzione per configurare nuovi dispositivi core Greengrass con una configurazione del nucleo specifica o per specificare risorse assegnate manualmente, ad esempio. È necessario montare il file di configurazione nel percorso specificato in questo argomento. 

`TRUSTED_PLUGIN`  
Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.  
(Facoltativo) Il percorso di un file JAR da caricare come plugin affidabile. Utilizzate questa opzione per fornire i file JAR del plug-in di provisioning, ad esempio da installare con [fleet provisioning o [custom](custom-provisioning.md) provisioning](fleet-provisioning.md). 

`THING_POLICY_NAME`  
Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.  
(Facoltativo) Il nome della AWS IoT policy da allegare al thing certificate di questo dispositivo principale. AWS IoT Se la AWS IoT politica con questo nome non esiste nel tuo computer, Account AWS il software AWS IoT Greengrass Core la crea.   
È necessario specificare `PROVISION=true` se applicare questo argomento.  
Il software AWS IoT Greengrass Core crea una AWS IoT politica permissiva per impostazione predefinita. È possibile definire l'ambito di questa politica o creare una politica personalizzata in cui limitare le autorizzazioni per il proprio caso d'uso. Per ulteriori informazioni, consulta [AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali](device-auth.md#greengrass-core-minimal-iot-policy). 

## Specificate le dipendenze da installare
<a name="dockerfile-run-instruction"></a>

L'istruzione RUN nel AWS IoT Greengrass Dockerfile prepara l'ambiente contenitore per eseguire il programma di installazione del AWS IoT Greengrass software Core. È possibile personalizzare le dipendenze installate prima dell'esecuzione del programma di installazione del software AWS IoT Greengrass Core nel contenitore Docker. 

## Costruisci l'immagine AWS IoT Greengrass
<a name="build-greengrass-docker-image"></a>

Usa il AWS IoT Greengrass Dockerfile per creare un'immagine del AWS IoT Greengrass contenitore. Puoi utilizzare la CLI Docker o la CLI Docker Compose per creare l'immagine e avviare il contenitore. Puoi anche utilizzare la CLI Docker per creare l'immagine e quindi utilizzare Docker Compose per avviare il contenitore da quell'immagine.

------
#### [ Docker ]

1. Sulla macchina host, esegui il seguente comando per passare alla directory che contiene il Dockerfile configurato.

   ```
   cd download-directory/aws-greengrass-docker-nucleus-version
   ```

1. Esegui il comando seguente per creare l'immagine del AWS IoT Greengrass contenitore dal Dockerfile.

   ```
   sudo docker build -t "platform/aws-iot-greengrass:nucleus-version" ./
   ```

------
#### [ Docker Compose ]

1. Sul computer host, esegui il comando seguente per passare alla directory che contiene il Dockerfile e il file Compose.

   ```
   cd download-directory/aws-greengrass-docker-nucleus-version
   ```

1. Esegui il comando seguente per utilizzare il file Compose per creare l'immagine del contenitore. AWS IoT Greengrass 

   ```
   docker-compose -f docker-compose.yml build
   ```

------

L'immagine del AWS IoT Greengrass contenitore è stata creata con successo. Nell'immagine Docker è installato il software AWS IoT Greengrass Core. Ora puoi eseguire il software AWS IoT Greengrass Core in un contenitore Docker.

# Esegui AWS IoT Greengrass in un contenitore Docker con provisioning automatico delle risorse
<a name="run-greengrass-docker-automatic-provisioning"></a>

Questo tutorial mostra come installare ed eseguire il software AWS IoT Greengrass Core in un contenitore Docker con AWS risorse assegnate automaticamente e strumenti di sviluppo locali. Puoi utilizzare questo ambiente di sviluppo per esplorare le AWS IoT Greengrass funzionalità di un contenitore Docker. Il software richiede AWS credenziali per fornire queste risorse e distribuire gli strumenti di sviluppo locali.

Se non è possibile fornire AWS le credenziali al contenitore, è possibile fornire le AWS risorse necessarie al funzionamento del dispositivo principale. Puoi anche distribuire gli strumenti di sviluppo su un dispositivo principale da utilizzare come dispositivo di sviluppo. Ciò consente di fornire meno autorizzazioni al dispositivo quando si esegue il contenitore. Per ulteriori informazioni, consulta [Esegui AWS IoT Greengrass in un contenitore Docker con provisioning manuale delle risorse](run-greengrass-docker-manual-provisioning.md).



## Prerequisiti
<a name="docker-automatic-provisioning-prereqs"></a>

Per completare questo tutorial, è necessario quanto segue.
+ Un Account AWS. Se non lo hai, consultare [Configura un Account AWS](setting-up.md#set-up-aws-account). 
+ Un utente AWS IAM con le autorizzazioni per effettuare il provisioning delle risorse AWS IoT e IAM per un dispositivo core Greengrass. Il programma di installazione del software AWS IoT Greengrass Core utilizza AWS le tue credenziali per effettuare automaticamente il provisioning di queste risorse. Per informazioni sulla politica minima di IAM per il provisioning automatico delle risorse, consulta. [Policy IAM minima per l'installatore per il provisioning delle risorse](provision-minimal-iam-policy.md)
+ Un'immagine AWS IoT Greengrass Docker. Puoi [creare un'immagine dal AWS IoT Greengrass Dockerfile](build-greengrass-dockerfile.md).
+ Il computer host su cui si esegue il contenitore Docker deve soddisfare i seguenti requisiti:
  + <a name="docker-host-reqs"></a>Un sistema operativo basato su Linux con una connessione Internet.
  + <a name="docker-engine-reqs"></a>[Docker Engine](https://docs.docker.com/engine/install/) versione 18.09 o successiva.
  + <a name="docker-compose-reqs"></a>(Facoltativo) [Docker Compose](https://docs.docker.com/compose/install/) versione 1.22 o successiva. Docker Compose è necessario solo se si desidera utilizzare la CLI Docker Compose per eseguire le immagini Docker.

## AWS Configura le tue credenziali
<a name="configure-aws-credentials-for-docker"></a>

In questo passaggio, crei un file di credenziali sul computer host che contiene le tue credenziali AWS di sicurezza. Quando esegui l'immagine AWS IoT Greengrass Docker, devi montare la cartella che contiene questo file di credenziali `/root/.aws/` nel contenitore Docker. Il AWS IoT Greengrass programma di installazione utilizza queste credenziali per fornire risorse nel tuo. Account AWS Per informazioni sulla politica IAM minima richiesta dal programma di installazione per il provisioning automatico delle risorse, consulta. [Policy IAM minima per l'installatore per il provisioning delle risorse](provision-minimal-iam-policy.md)

1. Recuperate uno dei seguenti elementi.
   + Credenziali a lungo termine per un utente IAM. *Per informazioni su come recuperare le credenziali a lungo termine, consulta [Managing access keys for IAM users nella IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) User Guide.*
   + (Consigliato) Credenziali temporanee per un ruolo IAM. *Per informazioni su come recuperare le credenziali temporanee, consulta [Using temporary security credentials with the AWS CLI](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli) nella IAM User Guide.*

1. Crea una cartella in cui inserire il file delle credenziali.

   ```
   mkdir ./greengrass-v2-credentials
   ```

1. Utilizzate un editor di testo per creare un file di configurazione denominato `credentials` nella `./greengrass-v2-credentials` cartella.

   Ad esempio, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il `credentials` file. 

   ```
   nano ./greengrass-v2-credentials/credentials
   ```

1. Aggiungi AWS le tue credenziali al `credentials` file nel seguente formato.

   ```
   [default]
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   aws_session_token = AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
   ```

   Includi `aws_session_token` solo per le credenziali temporanee.

**Importante**  
Rimuovi il file delle credenziali dal computer host dopo aver avviato il AWS IoT Greengrass contenitore. Se non rimuovi il file delle credenziali, le tue AWS credenziali rimarranno montate all'interno del contenitore. Per ulteriori informazioni, consulta [Esegui il software AWS IoT Greengrass Core in un contenitore](#run-greengrass-image-automatic-provisioning).

## Crea un file di ambiente
<a name="create-env-file-automatic-provisioning"></a>

Questo tutorial utilizza un file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Puoi anche usare [l'`--env`argomento `-e` or](https://docs.docker.com/engine/reference/commandline/run/#env) nel `docker run` comando per impostare le variabili di ambiente nel contenitore Docker oppure puoi impostare le variabili in [un `environment` blocco](https://docs.docker.com/compose/compose-file/compose-file-v3/#environment) del file. `docker-compose.yml`

1. Usa un editor di testo per creare un file di ambiente denominato`.env`.

   Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo `.env` nella directory corrente.

   ```
   nano .env
   ```

1. Copiate il seguente contenuto nel file.

   ```
   GGC_ROOT_PATH=/greengrass/v2
   AWS_REGION=region
   PROVISION=true
   THING_NAME=MyGreengrassCore
   THING_GROUP_NAME=MyGreengrassCoreGroup
   TES_ROLE_NAME=GreengrassV2TokenExchangeRole
   TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias
   COMPONENT_DEFAULT_USER=ggc_user:ggc_group
   ```

   Quindi, sostituisci i seguenti valori.
   + `/greengrass/v2`. La cartella principale di Greengrass che si desidera utilizzare per l'installazione. Utilizzate la variabile di `GGC_ROOT` ambiente per impostare questo valore.
   + *region*. Il Regione AWS luogo in cui hai creato le risorse.
   + *MyGreengrassCore*. Il nome della AWS IoT cosa. Se l'oggetto non esiste, il programma di installazione lo crea. Il programma di installazione scarica i certificati per autenticarsi come oggetto. AWS IoT 
   + *MyGreengrassCoreGroup*. Il nome del gruppo di AWS IoT cose. Se il gruppo di oggetti non esiste, il programma di installazione lo crea e vi aggiunge l'oggetto. Se il gruppo di oggetti esiste e dispone di una distribuzione attiva, il dispositivo principale scarica ed esegue il software specificato dalla distribuzione.
   +  *GreengrassV2TokenExchangeRole*. Sostituisci con il nome del ruolo di scambio di token IAM che consente al dispositivo principale Greengrass di ottenere credenziali temporanee AWS . Se il ruolo non esiste, l'installatore lo crea e crea e allega una policy denominata Access. *GreengrassV2TokenExchangeRole* Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).
   + *GreengrassCoreTokenExchangeRoleAlias*. L'alias del ruolo di scambio di token. Se l'alias del ruolo non esiste, il programma di installazione lo crea e lo indirizza al ruolo di scambio di token IAM specificato. Per ulteriori informazioni, consultare la pagina 
**Nota**  <a name="docker-local-dev-tools-production-environment-warning"></a>
È possibile impostare la variabile di `DEPLOY_DEV_TOOLS` ambiente su `true` per distribuire il componente [Greengrass CLI](greengrass-cli-component.md), che consente di sviluppare componenti personalizzati all'interno del contenitore Docker. <a name="local-dev-tools-production-environment-warning"></a>Si consiglia di utilizzare questo componente solo in ambienti di sviluppo, non in ambienti di produzione. Questo componente fornisce l'accesso a informazioni e operazioni che in genere non sono necessarie in un ambiente di produzione. Segui il principio del privilegio minimo distribuendo questo componente solo sui dispositivi principali dove ne hai bisogno. 

## Esegui il software AWS IoT Greengrass Core in un contenitore
<a name="run-greengrass-image-automatic-provisioning"></a>

Questo tutorial mostra come avviare l'immagine Docker che hai creato in un contenitore Docker. Puoi utilizzare la CLI Docker o la CLI Docker Compose per AWS IoT Greengrass eseguire l'immagine del software Core in un contenitore Docker. 

------
#### [ Docker ]

1. Esegui il comando seguente per avviare il contenitore Docker. 

   ```
   docker run --rm --init -it --name docker-image \
    -v path/to/greengrass-v2-credentials:/root/.aws/:ro \
    --env-file .env \
    -p 8883 \
    your-container-image:version
   ```

   Questo comando di esempio utilizza i seguenti argomenti per [docker run](https://docs.docker.com/engine/reference/commandline/run/):
   + <a name="docker-run-rm"></a>[https://docs.docker.com/engine/reference/run/#clean-up---rm](https://docs.docker.com/engine/reference/run/#clean-up---rm). Pulisce il contenitore quando esce.
   + <a name="docker-run-init"></a>[https://docs.docker.com/engine/reference/run/#specify-an-init-process](https://docs.docker.com/engine/reference/run/#specify-an-init-process). Utilizza un processo di inizializzazione nel contenitore. 
**Nota**  
L'`--init`argomento è necessario per chiudere il software AWS IoT Greengrass Core quando si arresta il contenitore Docker.
   + <a name="docker-run-it"></a>[https://docs.docker.com/engine/reference/run/#foreground](https://docs.docker.com/engine/reference/run/#foreground). (Facoltativo) Esegue il contenitore Docker in primo piano come processo interattivo. Puoi sostituirlo con l'`-d`argomento per eseguire invece il contenitore Docker in modalità distaccata. Per ulteriori informazioni, consulta [Detached vs foreground](https://docs.docker.com/engine/reference/run/#detached-vs-foreground) nella documentazione Docker.
   + <a name="docker-run-name"></a>[https://docs.docker.com/engine/reference/run/#name---name](https://docs.docker.com/engine/reference/run/#name---name). Esegue un contenitore denominato `aws-iot-greengrass` 
   + <a name="docker-run-v"></a>[https://docs.docker.com/storage/volumes/](https://docs.docker.com/storage/volumes/). Monta un volume nel contenitore Docker per rendere il file di configurazione e i file di certificato disponibili per l' AWS IoT Greengrass esecuzione all'interno del contenitore.
   + <a name="docker-run-env-file"></a>[https://docs.docker.com/engine/reference/commandline/run/#env](https://docs.docker.com/engine/reference/commandline/run/#env). (Facoltativo) Specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo argomento è richiesto solo se è stato creato un [file di ambiente per impostare le variabili](run-greengrass-docker-manual-provisioning.md#create-env-file-manual-provisioning) di ambiente. Se non hai creato un file di ambiente, puoi utilizzare `--env` gli argomenti per impostare le variabili di ambiente direttamente nel comando Docker run.
   + <a name="docker-run-p"></a>[https://docs.docker.com/engine/reference/commandline/run/#publish](https://docs.docker.com/engine/reference/commandline/run/#publish). (Facoltativo) Pubblica la porta container 8883 sulla macchina host. Questo argomento è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT. Per aprire altre porte, utilizzate argomenti aggiuntivi. `-p`
**Nota**  <a name="docker-run-cap-drop"></a>
Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare gli `--cap-add` argomenti `--cap-drop` e per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta [Privilegi di runtime e funzionalità Linux nella documentazione](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) Docker.

1. <a name="docker-automatic-provisioning-remove-credentials-file"></a>Rimuovi le credenziali dal dispositivo `./greengrass-v2-credentials` host.

   ```
   rm -rf ./greengrass-v2-credentials
   ```
**Importante**  
Stai rimuovendo queste credenziali perché forniscono ampie autorizzazioni di cui il dispositivo principale ha bisogno solo durante la configurazione. Se non rimuovi queste credenziali, i componenti Greengrass e gli altri processi in esecuzione nel contenitore possono accedervi. Se devi fornire AWS le credenziali a un componente Greengrass, utilizza il servizio di scambio di token. Per ulteriori informazioni, consulta [Interagisci con AWS i servizi](interact-with-aws-services.md).

------
#### [ Docker Compose ]

1. Usa un editor di testo per creare un file Docker Compose denominato. `docker-compose.yml`

   Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo nella directory corrente. `docker-compose.yml`

   ```
   nano docker-compose.yml
   ```
**Nota**  
È inoltre possibile scaricare e utilizzare la versione più recente del file Compose fornito AWS da. [GitHub](https://github.com/aws-greengrass/aws-greengrass-docker/releases/)

1. Aggiungi il seguente contenuto al file Compose. Il file si presenta in maniera simile al seguente frammento: *docker-image*Sostituiscilo con il nome della tua immagine Docker. 

   ```
   version: '3.7'
    
   services:
     greengrass:
       init: true
       container_name: aws-iot-greengrass
       image: docker-image
       volumes:
         - ./greengrass-v2-credentials:/root/.aws/:ro 
       env_file: .env
       ports:
         - "8883:8883"
   ```<a name="docker-compose-optional-params"></a>

   I seguenti parametri in questo file Compose di esempio sono facoltativi:
   + `ports`—Pubblica le porte del contenitore 8883 sul computer host. Questo parametro è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT. 
   + `env_file`: specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo parametro è richiesto solo se è stato creato un [file di ambiente per impostare le variabili di ambiente](run-greengrass-docker-manual-provisioning.md#create-env-file-manual-provisioning). Se non avete creato un file di ambiente, potete utilizzare il parametro [environment](https://docs.docker.com/compose/compose-file/compose-file-v3/#environment) per impostare le variabili direttamente nel file Compose.
**Nota**  <a name="docker-compose-cap-drop"></a>
Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare `cap_drop` e `cap_add` nel tuo file Compose per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta [Privilegi di runtime e funzionalità Linux](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) nella documentazione Docker.

1. Esegui il comando seguente per avviare il contenitore Docker.

   ```
   docker-compose -f docker-compose.yml up
   ```

1. <a name="docker-automatic-provisioning-remove-credentials-file"></a>Rimuovi le credenziali dal `./greengrass-v2-credentials` dispositivo host.

   ```
   rm -rf ./greengrass-v2-credentials
   ```
**Importante**  
Stai rimuovendo queste credenziali perché forniscono ampie autorizzazioni di cui il dispositivo principale ha bisogno solo durante la configurazione. Se non rimuovi queste credenziali, i componenti Greengrass e gli altri processi in esecuzione nel contenitore possono accedervi. Se devi fornire AWS le credenziali a un componente Greengrass, utilizza il servizio di scambio di token. Per ulteriori informazioni, consulta [Interagisci con AWS i servizi](interact-with-aws-services.md).

------

## Fasi successive
<a name="run-greengrass-docker-next-steps"></a>

<a name="run-greengrass-docker-success"></a>AWS IoT Greengrass Il software principale è ora in esecuzione in un contenitore Docker. Esegui il comando seguente per recuperare l'ID del contenitore attualmente in esecuzione.

```
docker ps
```

È quindi possibile eseguire il comando seguente per accedere al contenitore ed esplorare il software AWS IoT Greengrass Core in esecuzione all'interno del contenitore.

```
docker exec -it container-id /bin/bash
```

Per informazioni sulla creazione di un componente semplice, consulta [Fase 4: Sviluppa e testa un componente sul tuo dispositivo](create-first-component.md) in [Tutorial: Guida introduttiva a AWS IoT Greengrass V2](getting-started.md)

**Nota**  <a name="run-greengrass-commands-in-docker-note"></a>
Quando esegui comandi all'interno del contenitore Docker, tali comandi non vengono registrati nei log Docker. `docker exec` Per registrare i comandi nei log Docker, collega una shell interattiva al contenitore Docker. Per ulteriori informazioni, consulta [Collega una shell interattiva al contenitore Docker](docker-troubleshooting.md#debugging-docker-attach-shell).

Il file di registro AWS IoT Greengrass Core viene chiamato `greengrass.log` e si trova in. `/greengrass/v2/logs` Nella stessa directory si trovano anche i file di registro dei componenti. Per copiare i log di Greengrass in una directory temporanea sull'host, esegui il seguente comando:

```
docker cp container-id:/greengrass/v2/logs /tmp/logs
```

Se desideri mantenere i log dopo l'uscita o la rimozione di un contenitore, ti consigliamo di collegare solo la `/greengrass/v2/logs` directory alla directory dei log temporanei sull'host invece di montare l'intera directory Greengrass. Per ulteriori informazioni, consulta [Mantieni i log Greengrass all'esterno del contenitore Docker](docker-troubleshooting.md#debugging-docker-persist-logs).

<a name="greengrass-docker-stop"></a>Per fermare un contenitore Docker in esecuzione, esegui o. AWS IoT Greengrass `docker stop` `docker-compose -f docker-compose.yml stop` Questa azione invia `SIGTERM` al processo Greengrass e chiude tutti i processi associati che sono stati avviati nel contenitore. Il contenitore Docker viene inizializzato con l'`docker-init`eseguibile come processo PID 1, il che aiuta a rimuovere eventuali processi zombie rimanenti. Per ulteriori informazioni, consulta [Specificare un processo di inizializzazione nella documentazione di Docker](https://docs.docker.com/engine/reference/run/#specify-an-init-process).

<a name="see-docker-troubleshooting"></a>Per informazioni sulla risoluzione dei problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker, consulta. [Risoluzione dei problemi AWS IoT Greengrass in un contenitore Docker](docker-troubleshooting.md)

# Esegui AWS IoT Greengrass in un contenitore Docker con provisioning manuale delle risorse
<a name="run-greengrass-docker-manual-provisioning"></a>

Questo tutorial mostra come installare ed eseguire il software AWS IoT Greengrass Core in un contenitore Docker con risorse assegnate manualmente. AWS 

**Topics**
+ [Prerequisiti](#docker-manual-provisioning-prereqs)
+ [AWS IoT Recupera gli endpoint](#retrieve-iot-endpoints)
+ [Crea qualsiasi cosa AWS IoT](#create-iot-thing)
+ [Crea il certificato dell'oggetto](#create-thing-certificate-mp)
+ [Crea un ruolo di scambio di token](#create-token-exchange-role)
+ [Scarica i certificati sul dispositivo](#download-thing-certificates)
+ [Crea un file di configurazione](#create-docker-install-configuration-file)
+ [Crea un file di ambiente](#create-env-file-manual-provisioning)
+ [Esegui il software AWS IoT Greengrass Core in un contenitore](#run-greengrass-image-manual-provisioning)
+ [Fasi successive](#run-greengrass-docker-next-steps)

## Prerequisiti
<a name="docker-manual-provisioning-prereqs"></a>

Per completare questo tutorial, è necessario quanto segue:
+ Un. Account AWS Se non lo hai, consultare [Configura un Account AWS](setting-up.md#set-up-aws-account). 
+ Un'immagine AWS IoT Greengrass Docker. Puoi [creare un'immagine dal AWS IoT Greengrass Dockerfile](build-greengrass-dockerfile.md).
+ Il computer host su cui si esegue il contenitore Docker deve soddisfare i seguenti requisiti:
  + <a name="docker-host-reqs"></a>Un sistema operativo basato su Linux con una connessione Internet.
  + <a name="docker-engine-reqs"></a>[Docker Engine](https://docs.docker.com/engine/install/) versione 18.09 o successiva.
  + <a name="docker-compose-reqs"></a>(Facoltativo) [Docker Compose](https://docs.docker.com/compose/install/) versione 1.22 o successiva. Docker Compose è necessario solo se si desidera utilizzare la CLI Docker Compose per eseguire le immagini Docker.

## AWS IoT Recupera gli endpoint
<a name="retrieve-iot-endpoints"></a>

Ottieni gli AWS IoT endpoint per te e salvali per Account AWS utilizzarli in un secondo momento. Il tuo dispositivo utilizza questi endpoint per connettersi a. AWS IoT Esegui questa operazione:

1. Ottieni l'endpoint di AWS IoT dati per il tuo. Account AWS

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

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Ottieni l'endpoint delle AWS IoT credenziali per il tuo. Account AWS

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   }
   ```

## Crea qualsiasi cosa AWS IoT
<a name="create-iot-thing"></a>

AWS IoT *le cose* rappresentano dispositivi ed entità logiche a cui si connettono AWS IoT. I dispositivi core Greengrass sono AWS IoT cose. Quando registri un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con cui autenticarsi. AWS

In questa sezione, crei AWS IoT qualcosa che rappresenta il tuo dispositivo.

**Per creare qualsiasi AWS IoT cosa**

1. Crea AWS IoT qualcosa per il tuo dispositivo. Sul tuo computer di sviluppo, esegui il seguente comando.
   + Sostituisci *MyGreengrassCore* con il nome dell'oggetto da usare. Questo nome è anche il nome del dispositivo principale Greengrass.
**Nota**  <a name="install-argument-thing-name-constraint"></a>
Il nome dell'oggetto non può contenere i due punti (`:`).

   ```
   aws iot create-thing --thing-name MyGreengrassCore
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "thingName": "MyGreengrassCore",
     "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
     "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42"
   }
   ```

1. (Facoltativo) Aggiungere l' AWS IoT oggetto a un gruppo di oggetti nuovo o esistente. Utilizzi i gruppi di cose per gestire flotte di dispositivi core Greengrass. Quando distribuisci componenti software sui tuoi dispositivi, puoi scegliere come target singoli dispositivi o gruppi di dispositivi. È possibile aggiungere un dispositivo a un gruppo di cose con una distribuzione Greengrass attiva per distribuire i componenti software di quel gruppo di cose sul dispositivo. Esegui questa operazione:

   1. (Facoltativo) Crea un gruppo di AWS IoT cose.
      + Sostituirlo *MyGreengrassCoreGroup* con il nome del gruppo di oggetti da creare.
**Nota**  <a name="install-argument-thing-group-name-constraint"></a>
Il nome del gruppo di cose non può contenere i due punti (`:`).

      ```
      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "thingGroupName": "MyGreengrassCoreGroup",
        "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup",
        "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa"
      }
      ```

   1. Aggiungere l' AWS IoT oggetto a un gruppo di oggetti.
      + Sostituiscilo *MyGreengrassCore* con il nome del tuo AWS IoT oggetto.
      + Sostituisci *MyGreengrassCoreGroup* con il nome del gruppo di oggetti.

      ```
      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup
      ```

      Il comando non produce alcun output se la richiesta ha esito positivo.

## Crea il certificato dell'oggetto
<a name="create-thing-certificate-mp"></a>

<a name="create-thing-certificate-intro-1"></a>Quando si registra un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con AWS cui autenticarsi. Questo certificato consente al dispositivo di comunicare con AWS IoT e AWS IoT Greengrass.

<a name="create-thing-certificate-intro-2"></a>In questa sezione, crei e scarichi certificati a cui il tuo dispositivo può connettersi AWS.<a name="create-thing-certificate-cloud-steps"></a>

**Per creare il certificato dell'oggetto**

1. Crea una cartella in cui scaricare i certificati relativi all' AWS IoT oggetto.

   ```
   mkdir greengrass-v2-certs
   ```

1. Crea e scarica i certificati relativi all' AWS IoT oggetto.

   ```
   aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----",
     "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\
   MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\
   MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\
   59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\
   hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\
   FQIDAQAB\
   -----END PUBLIC KEY-----\
   ",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\
   key omitted for security reasons\
   -----END RSA PRIVATE KEY-----\
   "
     }
   }
   ```

   Salva l'Amazon Resource Name (ARN) del certificato da utilizzare per configurare il certificato in un secondo momento.

Quindi, configura il certificato del oggetto. Per ulteriori informazioni, consulta [Configura il certificato del oggetto](manual-installation.md#configure-thing-certificate).

## Crea un ruolo di scambio di token
<a name="create-token-exchange-role"></a>

<a name="installation-create-token-exchange-role-intro"></a>I dispositivi core Greengrass utilizzano un ruolo di servizio IAM, chiamato *token exchange role*, per autorizzare le chiamate ai servizi. AWS Il dispositivo utilizza il provider di AWS IoT credenziali per ottenere AWS credenziali temporanee per questo ruolo, che consente al dispositivo di interagire AWS IoT, inviare log ad Amazon CloudWatch Logs e scaricare elementi dei componenti personalizzati da Amazon S3. Per ulteriori informazioni, consulta [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md).

<a name="installation-create-token-exchange-role-alias-intro"></a>Si utilizza un *alias di AWS IoT ruolo* per configurare il ruolo di scambio di token per i dispositivi principali Greengrass. Gli alias di ruolo consentono di modificare il ruolo di scambio di token per un dispositivo ma mantengono invariata la configurazione del dispositivo. Per ulteriori informazioni, consulta [Autorizzazione delle chiamate dirette ai AWS servizi nella Guida per](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) gli *AWS IoT Core sviluppatori*.

In questa sezione, crei un ruolo IAM per lo scambio di token e un alias di AWS IoT ruolo che rimanda al ruolo. Se hai già configurato un dispositivo principale Greengrass, puoi utilizzare il ruolo di scambio di token e l'alias del ruolo invece di crearne di nuovi. Quindi, configuri il dispositivo in modo che utilizzi quel ruolo e quell'alias. AWS IoT 

**Per creare un ruolo IAM per lo scambio di token**

1. <a name="create-token-exchange-role-create-iam-role"></a>Crea un ruolo IAM che il tuo dispositivo possa utilizzare come ruolo di scambio di token. Esegui questa operazione:

   1. Crea un file che contenga il documento sulla politica di fiducia richiesto dal ruolo di scambio di token.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano device-role-trust-policy.json
      ```

      Copiate il seguente codice JSON nel file.

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

   1. Crea il ruolo di scambio di token con il documento sulla politica di fiducia.
      + Sostituiscilo *GreengrassV2TokenExchangeRole* con il nome del ruolo IAM da creare.

      ```
      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "Role": {
          "Path": "/",
          "RoleName": "GreengrassV2TokenExchangeRole",
          "RoleId": "AROAZ2YMUHYHK5OKM77FB",
          "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
          "CreateDate": "2021-02-06T00:13:29+00:00",
          "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Service": "credentials.iot.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
              }
            ]
          }
        }
      ```

   1. Crea un file che contenga il documento sulla politica di accesso richiesto dal ruolo di scambio di token.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano device-role-access-policy.json
      ```

      Copiate il seguente codice JSON nel file.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "s3:GetBucketLocation"
            ],
            "Resource": "*"
          }
        ]
      }
      ```
**Nota**  
Questa politica di accesso non consente l'accesso agli artefatti dei componenti nei bucket S3. Per distribuire componenti personalizzati che definiscono gli artefatti in Amazon S3, devi aggiungere autorizzazioni al ruolo per consentire al dispositivo principale di recuperare gli artefatti dei componenti. Per ulteriori informazioni, consulta [Consenti l'accesso ai bucket S3 per gli artefatti dei componenti](device-service-role.md#device-service-role-access-s3-bucket).  
Se non disponi ancora di un bucket S3 per gli artefatti dei componenti, puoi aggiungere queste autorizzazioni in un secondo momento dopo aver creato un bucket.

   1. Crea la policy IAM dal documento di policy.
      + Sostituiscila *GreengrassV2TokenExchangeRoleAccess* con il nome della policy IAM da creare.

      ```
      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "Policy": {
          "PolicyName": "GreengrassV2TokenExchangeRoleAccess",
          "PolicyId": "ANPAZ2YMUHYHACI7C5Z66",
          "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
          "Path": "/",
          "DefaultVersionId": "v1",
          "AttachmentCount": 0,
          "PermissionsBoundaryUsageCount": 0,
          "IsAttachable": true,
          "CreateDate": "2021-02-06T00:37:17+00:00",
          "UpdateDate": "2021-02-06T00:37:17+00:00"
        }
      }
      ```

   1. Allega la policy IAM al ruolo di scambio di token.
      + Sostituisci *GreengrassV2TokenExchangeRole* con il nome del ruolo IAM.
      + Sostituisci l'ARN della policy con l'ARN della policy IAM che hai creato nel passaggio precedente.

      ```
      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

1. <a name="create-token-exchange-role-create-iot-role-alias"></a>Crea un alias di AWS IoT ruolo che punti al ruolo di scambio di token.
   + Sostituiscilo *GreengrassCoreTokenExchangeRoleAlias* con il nome dell'alias del ruolo da creare.
   + Sostituisci il ruolo ARN con l'ARN del ruolo IAM creato nel passaggio precedente.

   ```
   aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
   ```

   La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

   ```
   {
     "roleAlias": "GreengrassCoreTokenExchangeRoleAlias",
     "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
   }
   ```
**Nota**  
Per creare un alias di ruolo, devi disporre dell'autorizzazione a passare il ruolo IAM per lo scambio di token a. AWS IoT Se ricevi un messaggio di errore quando tenti di creare un alias di ruolo, verifica che AWS l'utente disponga di questa autorizzazione. *Per ulteriori informazioni, consulta [Concessione a un utente delle autorizzazioni per il trasferimento di un ruolo a un AWS servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) nella Guida per l'AWS Identity and Access Management utente.*

1. Crea e allega una AWS IoT policy che consenta al tuo dispositivo principale Greengrass di utilizzare l'alias del ruolo per assumere il ruolo di scambio di token. Se hai già configurato un dispositivo principale Greengrass, puoi allegare la sua AWS IoT politica di alias di ruolo invece di crearne uno nuovo. Esegui questa operazione:

   1. (Facoltativo) Create un file che contenga il documento di AWS IoT policy richiesto dall'alias di ruolo.

      <a name="nano-command-intro"></a>Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      ```
      nano greengrass-v2-iot-role-alias-policy.json
      ```

      Copiate il seguente codice JSON nel file.
      + Sostituisci l'ARN della risorsa con l'ARN del tuo alias di ruolo.

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:AssumeRoleWithCertificate",
            "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
          }
        ]
      }
      ```

   1. Crea una AWS IoT politica dal documento di policy.
      + Sostituisci *GreengrassCoreTokenExchangeRoleAliasPolicy* con il nome della AWS IoT politica da creare.

      ```
      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json
      ```

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      ```
      {
        "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy",
        "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy",
        "policyDocument": "{
          \\"Version\\":\\"2012-10-17		 	 	 \\",
          \\"Statement\\": [
            {
              \\"Effect\\": \\"Allow\\",
              \\"Action\\": \\"iot:AssumeRoleWithCertificate\\",
              \\"Resource\\": \\"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\\"
            }
          ]
        }",
        "policyVersionId": "1"
      }
      ```

   1. Allega la AWS IoT policy al certificato dell' AWS IoT oggetto.
      + Sostituisci *GreengrassCoreTokenExchangeRoleAliasPolicy* con il nome della AWS IoT politica relativa agli alias del ruolo.
      + Sostituisci l'ARN di destinazione con l'ARN del certificato per il tuo oggetto. AWS IoT 

      ```
      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
      ```

      Il comando non ha alcun output se la richiesta ha esito positivo.

## Scarica i certificati sul dispositivo
<a name="download-thing-certificates"></a>

In precedenza, avevi scaricato il certificato del dispositivo sul computer di sviluppo. In questa sezione, scarichi il certificato Amazon Root Certificate Authority (CA). Quindi, se prevedi di eseguire il software AWS IoT Greengrass Core in Docker su un computer diverso da quello di sviluppo, copi i certificati su quel computer host. Il software AWS IoT Greengrass Core utilizza questi certificati per connettersi al servizio AWS IoT cloud.

**Per scaricare i certificati sul dispositivo**

1. Sul tuo computer di sviluppo, scarica il certificato Amazon Root Certificate Authority (CA). AWS IoT per impostazione predefinita, i certificati sono associati al certificato CA root di Amazon.

------
#### [ Linux or Unix ]

   ```
   sudo curl -o ./greengrass-v2-certs/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o .\greengrass-v2-certs\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile .\greengrass-v2-certs\AmazonRootCA1.pem
   ```

------

1. Se prevedi di eseguire il software AWS IoT Greengrass Core in Docker su un dispositivo diverso dal computer di sviluppo, copia i certificati sul computer host. Se SSH e SCP sono abilitati sul computer di sviluppo e sul computer host, puoi usare il `scp` comando sul tuo computer di sviluppo per trasferire i certificati. *device-ip-address*Sostituiscilo con l'indirizzo IP del tuo computer host.

   ```
   scp -r greengrass-v2-certs/ device-ip-address:~
   ```

## Crea un file di configurazione
<a name="create-docker-install-configuration-file"></a>

1. Sul computer host, crea una cartella in cui inserire il file di configurazione.

   ```
   mkdir ./greengrass-v2-config
   ```

1. Utilizzate un editor di testo per creare un file di configurazione denominato `config.yaml` nella `./greengrass-v2-config` cartella.

   Ad esempio, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il`config.yaml`. 

   ```
   nano ./greengrass-v2-config/config.yaml
   ```

1. Copiate il seguente contenuto YAML nel file. Questo file di configurazione parziale specifica i parametri di sistema e i parametri del nucleo di Greengrass.

   ```
   ---
   system:
     certificateFilePath: "/tmp/certs/device.pem.crt"
     privateKeyPath: "/tmp/certs/private.pem.key"
     rootCaPath: "/tmp/certs/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "nucleus-version"
       configuration:
         awsRegion: "region"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.region.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.region.amazonaws.com"
   ```

   Quindi, sostituite i seguenti valori:
   + */tmp/certs*. La directory nel contenitore Docker in cui vengono montati i certificati scaricati all'avvio del contenitore.
   + `/greengrass/v2`. La cartella principale di Greengrass che si desidera utilizzare per l'installazione. Utilizzate la variabile di `GGC_ROOT` ambiente per impostare questo valore.
   + *MyGreengrassCore*. Il nome della AWS IoT cosa.
   + *nucleus-version*. La versione del software AWS IoT Greengrass Core da installare. Questo valore deve corrispondere alla versione dell'immagine Docker o del Dockerfile che hai scaricato. Se hai scaricato l'immagine Greengrass Docker con il `latest` tag, usala ****docker inspect *image-id***** per vedere la versione dell'immagine.
   + *region*. Il Regione AWS luogo in cui hai creato AWS IoT le tue risorse. È inoltre necessario specificare lo stesso valore per la variabile di `AWS_REGION` ambiente nel [file di ambiente](#create-env-file-manual-provisioning).
   + *GreengrassCoreTokenExchangeRoleAlias*. L'alias del ruolo di scambio di token.
   + *device-data-prefix*. Il prefisso per il tuo endpoint di AWS IoT dati.
   + *device-credentials-prefix*. Il prefisso per l'endpoint AWS IoT delle credenziali.

## Crea un file di ambiente
<a name="create-env-file-manual-provisioning"></a>

Questo tutorial utilizza un file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Puoi anche usare [l'`--env`argomento `-e` or](https://docs.docker.com/engine/reference/commandline/run/#env) nel `docker run` comando per impostare le variabili di ambiente nel contenitore Docker oppure puoi impostare le variabili in [un `environment` blocco](https://docs.docker.com/compose/compose-file/compose-file-v3/#environment) del file. `docker-compose.yml`

1. Usa un editor di testo per creare un file di ambiente denominato`.env`.

   Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo `.env` nella directory corrente.

   ```
   nano .env
   ```

1. Copiate il seguente contenuto nel file.

   ```
   GGC_ROOT_PATH=/greengrass/v2
   AWS_REGION=region
   PROVISION=false
   COMPONENT_DEFAULT_USER=ggc_user:ggc_group
   INIT_CONFIG=/tmp/config/config.yaml
   ```

   Quindi, sostituisci i seguenti valori.
   + `/greengrass/v2`. Il percorso della cartella principale da utilizzare per installare il software AWS IoT Greengrass Core.
   + *region*. Il Regione AWS luogo in cui hai creato AWS IoT le tue risorse. È necessario specificare lo stesso valore per il parametro `awsRegion` di configurazione nel [file di configurazione](#create-docker-install-configuration-file).
   + */tmp/config/*. La cartella in cui monti il file di configurazione all'avvio del contenitore Docker.
**Nota**  <a name="docker-local-dev-tools-production-environment-warning"></a>
È possibile impostare la variabile di `DEPLOY_DEV_TOOLS` ambiente su `true` per distribuire il componente [Greengrass CLI](greengrass-cli-component.md), che consente di sviluppare componenti personalizzati all'interno del contenitore Docker. <a name="local-dev-tools-production-environment-warning"></a>Si consiglia di utilizzare questo componente solo in ambienti di sviluppo, non in ambienti di produzione. Questo componente fornisce l'accesso a informazioni e operazioni che in genere non sono necessarie in un ambiente di produzione. Segui il principio del privilegio minimo distribuendo questo componente solo sui dispositivi principali dove ne hai bisogno. 

## Esegui il software AWS IoT Greengrass Core in un contenitore
<a name="run-greengrass-image-manual-provisioning"></a>

Questo tutorial mostra come avviare l'immagine Docker che hai creato in un contenitore Docker. Puoi utilizzare la CLI Docker o la CLI Docker Compose per AWS IoT Greengrass eseguire l'immagine del software Core in un contenitore Docker. 

------
#### [ Docker ]
+ Questo tutorial mostra come avviare l'immagine Docker che hai creato in un contenitore Docker. 

  ```
  docker run --rm --init -it --name docker-image \
   -v path/to/greengrass-v2-config:/tmp/config/:ro \
   -v path/to/greengrass-v2-certs:/tmp/certs:ro \ 
   --env-file .env \
   -p 8883 \
   your-container-image:version
  ```

  Questo comando di esempio utilizza i seguenti argomenti per [docker run](https://docs.docker.com/engine/reference/commandline/run/):
  + <a name="docker-run-rm"></a>[https://docs.docker.com/engine/reference/run/#clean-up---rm](https://docs.docker.com/engine/reference/run/#clean-up---rm). Pulisce il contenitore quando esce.
  + <a name="docker-run-init"></a>[https://docs.docker.com/engine/reference/run/#specify-an-init-process](https://docs.docker.com/engine/reference/run/#specify-an-init-process). Utilizza un processo di inizializzazione nel contenitore. 
**Nota**  
L'`--init`argomento è necessario per chiudere il software AWS IoT Greengrass Core quando si arresta il contenitore Docker.
  + <a name="docker-run-it"></a>[https://docs.docker.com/engine/reference/run/#foreground](https://docs.docker.com/engine/reference/run/#foreground). (Facoltativo) Esegue il contenitore Docker in primo piano come processo interattivo. Puoi sostituirlo con l'`-d`argomento per eseguire invece il contenitore Docker in modalità distaccata. Per ulteriori informazioni, consulta [Detached vs foreground](https://docs.docker.com/engine/reference/run/#detached-vs-foreground) nella documentazione Docker.
  + <a name="docker-run-name"></a>[https://docs.docker.com/engine/reference/run/#name---name](https://docs.docker.com/engine/reference/run/#name---name). Esegue un contenitore denominato `aws-iot-greengrass` 
  + <a name="docker-run-v"></a>[https://docs.docker.com/storage/volumes/](https://docs.docker.com/storage/volumes/). Monta un volume nel contenitore Docker per rendere il file di configurazione e i file di certificato disponibili per l' AWS IoT Greengrass esecuzione all'interno del contenitore.
  + <a name="docker-run-env-file"></a>[https://docs.docker.com/engine/reference/commandline/run/#env](https://docs.docker.com/engine/reference/commandline/run/#env). (Facoltativo) Specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo argomento è richiesto solo se è stato creato un [file di ambiente per impostare le variabili](#create-env-file-manual-provisioning) di ambiente. Se non hai creato un file di ambiente, puoi utilizzare `--env` gli argomenti per impostare le variabili di ambiente direttamente nel comando Docker run.
  + <a name="docker-run-p"></a>[https://docs.docker.com/engine/reference/commandline/run/#publish](https://docs.docker.com/engine/reference/commandline/run/#publish). (Facoltativo) Pubblica la porta container 8883 sulla macchina host. Questo argomento è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT. Per aprire altre porte, utilizzate argomenti aggiuntivi. `-p`
**Nota**  <a name="docker-run-cap-drop"></a>
Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare gli `--cap-add` argomenti `--cap-drop` e per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta [Privilegi di runtime e funzionalità Linux nella documentazione](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) Docker.

------
#### [ Docker Compose ]

1. Usa un editor di testo per creare un file Docker Compose denominato. `docker-compose.yml`

   Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo nella directory corrente. `docker-compose.yml`

   ```
   nano docker-compose.yml
   ```
**Nota**  
È inoltre possibile scaricare e utilizzare la versione più recente del file Compose fornito AWS da. [GitHub](https://github.com/aws-greengrass/aws-greengrass-docker/releases/)

1. Aggiungi il seguente contenuto al file Compose. Il file si presenta in maniera simile al seguente frammento: *your-container-name:version*Sostituiscilo con il nome della tua immagine Docker. 

   ```
   version: '3.7'
    
   services:
     greengrass:
       init: true
       build:
         context: .
       container_name: aws-iot-greengrass
       image: your-container-name:version
       volumes:
         - /path/to/greengrass-v2-config:/tmp/config/:ro
         - /path/to/greengrass-v2-certs:/tmp/certs:ro 
       env_file: .env
       ports:
         - "8883:8883"
   ```<a name="docker-compose-optional-params"></a>

   I seguenti parametri in questo file Compose di esempio sono facoltativi:
   + `ports`—Pubblica le porte del contenitore 8883 sul computer host. Questo parametro è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT. 
   + `env_file`: specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo parametro è richiesto solo se è stato creato un [file di ambiente per impostare le variabili di ambiente](#create-env-file-manual-provisioning). Se non avete creato un file di ambiente, potete utilizzare il parametro [environment](https://docs.docker.com/compose/compose-file/compose-file-v3/#environment) per impostare le variabili direttamente nel file Compose.
**Nota**  <a name="docker-compose-cap-drop"></a>
Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare `cap_drop` e `cap_add` nel tuo file Compose per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta [Privilegi di runtime e funzionalità Linux](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) nella documentazione Docker.

1. Esegui il comando seguente per avviare il contenitore.

   ```
   docker-compose -f docker-compose.yml up
   ```

------

## Fasi successive
<a name="run-greengrass-docker-next-steps"></a>

<a name="run-greengrass-docker-success"></a>AWS IoT Greengrass Il software principale è ora in esecuzione in un contenitore Docker. Esegui il comando seguente per recuperare l'ID del contenitore attualmente in esecuzione.

```
docker ps
```

È quindi possibile eseguire il comando seguente per accedere al contenitore ed esplorare il software AWS IoT Greengrass Core in esecuzione all'interno del contenitore.

```
docker exec -it container-id /bin/bash
```

Per informazioni sulla creazione di un componente semplice, consulta [Fase 4: Sviluppa e testa un componente sul tuo dispositivo](create-first-component.md) in [Tutorial: Guida introduttiva a AWS IoT Greengrass V2](getting-started.md)

**Nota**  <a name="run-greengrass-commands-in-docker-note"></a>
Quando esegui comandi all'interno del contenitore Docker, tali comandi non vengono registrati nei log Docker. `docker exec` Per registrare i comandi nei log Docker, collega una shell interattiva al contenitore Docker. Per ulteriori informazioni, consulta [Collega una shell interattiva al contenitore Docker](docker-troubleshooting.md#debugging-docker-attach-shell).

Il file di registro AWS IoT Greengrass Core viene chiamato `greengrass.log` e si trova in. `/greengrass/v2/logs` Nella stessa directory si trovano anche i file di registro dei componenti. Per copiare i log di Greengrass in una directory temporanea sull'host, esegui il seguente comando:

```
docker cp container-id:/greengrass/v2/logs /tmp/logs
```

Se desideri mantenere i log dopo l'uscita o la rimozione di un contenitore, ti consigliamo di collegare solo la `/greengrass/v2/logs` directory alla directory dei log temporanei sull'host invece di montare l'intera directory Greengrass. Per ulteriori informazioni, consulta [Mantieni i log Greengrass all'esterno del contenitore Docker](docker-troubleshooting.md#debugging-docker-persist-logs).

<a name="greengrass-docker-stop"></a>Per fermare un contenitore Docker in esecuzione, esegui o. AWS IoT Greengrass `docker stop` `docker-compose -f docker-compose.yml stop` Questa azione invia `SIGTERM` al processo Greengrass e chiude tutti i processi associati che sono stati avviati nel contenitore. Il contenitore Docker viene inizializzato con l'`docker-init`eseguibile come processo PID 1, il che aiuta a rimuovere eventuali processi zombie rimanenti. Per ulteriori informazioni, consulta [Specificare un processo di inizializzazione nella documentazione di Docker](https://docs.docker.com/engine/reference/run/#specify-an-init-process).

<a name="see-docker-troubleshooting"></a>Per informazioni sulla risoluzione dei problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker, consulta. [Risoluzione dei problemi AWS IoT Greengrass in un contenitore Docker](docker-troubleshooting.md)

# Risoluzione dei problemi AWS IoT Greengrass in un contenitore Docker
<a name="docker-troubleshooting"></a>

Utilizza le seguenti informazioni per aiutarti a risolvere i problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker e per eseguire il debug dei problemi AWS IoT Greengrass nel contenitore Docker.

**Topics**
+ [Risoluzione dei problemi relativi all'esecuzione del contenitore Docker](#troubleshooting-container-errors)
+ [Esecuzione del debug in un contenitore Docker AWS IoT Greengrass](#debugging-greengrass-in-docker)

## Risoluzione dei problemi relativi all'esecuzione del contenitore Docker
<a name="troubleshooting-container-errors"></a>

Utilizza le seguenti informazioni per risolvere i problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker.

**Topics**
+ [Errore: impossibile eseguire un accesso interattivo da un dispositivo non TTY](#docker-troubleshootin-ecr-get-login-password)
+ [Errore: opzioni sconosciute: - no-include-email](#docker-troubleshooting-cli-version)
+ [Errore: un firewall sta bloccando la condivisione di file tra finestre e contenitori.](#docker-troubleshooting-firewall)
+ [Errore: si è verificato un errore (AccessDeniedException) durante la chiamata dell' GetAuthorizationToken operazione: User: arn:aws:iam: :user/ <user-name>non *account-id* è autorizzato a eseguire: ecr: on resource: \$1 GetAuthorizationToken](#docker-troubleshooting-ecr-perms)
+ [Errore: hai raggiunto il limite di pull rate](#docker-troubleshooting-too-many-requests)

### Errore: impossibile eseguire un accesso interattivo da un dispositivo non TTY
<a name="docker-troubleshootin-ecr-get-login-password"></a>

Questo errore può verificarsi quando si esegue il comando. `aws ecr get-login-password` Assicurati di aver installato la versione 2 o la AWS CLI versione 1 più recente. Ti consigliamo di utilizzare la AWS CLI versione 2. Per ulteriori informazioni, consulta [Installazione dell’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) nella *Guida per l’utente dell’AWS Command Line Interface *.

### Errore: opzioni sconosciute: - no-include-email
<a name="docker-troubleshooting-cli-version"></a>

Questo errore può verificarsi quando si esegue il `aws ecr get-login` comando. Assicurati di avere installata la AWS CLI versione più recente (ad esempio, Run:`pip install awscli --upgrade --user`). Per ulteriori informazioni, vedere [Installazione di AWS Command Line Interface su Microsoft Windows](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html) nella *Guida per l'AWS Command Line Interface utente*.

### Errore: un firewall sta bloccando la condivisione di file tra finestre e contenitori.
<a name="docker-troubleshooting-firewall"></a>

Potresti ricevere questo errore o un `Firewall Detected` messaggio quando esegui Docker su un computer Windows. Questo errore può inoltre verificarsi se sei connesso a una rete privata virtuale (VPN, Virtual Private Network) e le impostazioni di rete impediscono il montaggio dell'unità condivisa. In tal caso, disattivare la rete VPN e riavviare il container Docker.

### Errore: si è verificato un errore (AccessDeniedException) durante la chiamata dell' GetAuthorizationToken operazione: User: arn:aws:iam: :user/ <user-name>non *account-id* è autorizzato a eseguire: ecr: on resource: \$1 GetAuthorizationToken
<a name="docker-troubleshooting-ecr-perms"></a>

Potresti ricevere questo errore durante l'esecuzione del `aws ecr get-login-password` comando se non disponi di autorizzazioni sufficienti per accedere a un repository Amazon ECR. *Per ulteriori informazioni, consulta [Amazon ECR Repository Policy Examples e Accessing](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) [One Amazon ECR Repository nella Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html) User Guide.*

### Errore: hai raggiunto il limite di pull rate
<a name="docker-troubleshooting-too-many-requests"></a>

Docker Hub limita il numero di richieste pull che gli utenti anonimi e gratuiti di Docker Hub possono effettuare. Se superi i limiti di velocità per le pull request anonime o gratuite degli utenti, ricevi uno dei seguenti errori: 

  

```
ERROR: toomanyrequests: Too Many Requests.
```

  

```
You have reached your pull rate limit.
```

Per risolvere questi errori, puoi attendere qualche ora prima di provare un'altra pull request. Se prevedi di inviare costantemente un numero elevato di pull request, consulta il [sito Web di Docker Hub](https://www.docker.com/increase-rate-limits) per informazioni sui limiti di velocità e sulle opzioni per l'autenticazione e l'aggiornamento del tuo account Docker. 

## Esecuzione del debug in un contenitore Docker AWS IoT Greengrass
<a name="debugging-greengrass-in-docker"></a>

Per il debug dei problemi relativi a un container Docker, puoi rendere persistenti i log di runtime Greengrass o collegare una shell interattiva al container Docker.

### Mantieni i log Greengrass all'esterno del contenitore Docker
<a name="debugging-docker-persist-logs"></a>

Dopo aver fermato un AWS IoT Greengrass contenitore, puoi usare il seguente `docker cp ` comando per copiare i log di Greengrass dal contenitore Docker in una directory di log temporanea. 

```
docker cp container-id:/greengrass/v2/logs /tmp/logs
```

Per mantenere i log anche dopo l'uscita o la rimozione di un contenitore, è necessario eseguire il contenitore Docker dopo aver montato la AWS IoT Greengrass directory tramite bind. `/greengrass/v2/logs` 

Per montare in modo bind-mount la `/greengrass/v2/logs` directory, esegui una delle seguenti operazioni quando esegui un nuovo contenitore Docker. AWS IoT Greengrass 
+ Includi `-v /tmp/logs:/greengrass/v2/logs:ro` nel tuo comando. `docker run`

  Modifica il `volumes` blocco nel file Compose per includere la riga seguente prima di eseguire il `docker-compose up` comando.

  ```
  volumes:
   - /tmp/logs:/greengrass/v2/logs:ro
  ```

Puoi quindi controllare i log `/tmp/logs` sul tuo host per vedere i log di Greengrass AWS IoT Greengrass mentre è in esecuzione all'interno del contenitore Docker.

Per informazioni sull'esecuzione dei contenitori Greengrass Docker, vedere e [Esegui AWS IoT Greengrass in Docker con provisioning manuale](run-greengrass-docker-manual-provisioning.md) [Esegui AWS IoT Greengrass in Docker con provisioning automatico](run-greengrass-docker-automatic-provisioning.md)

### Collega una shell interattiva al contenitore Docker
<a name="debugging-docker-attach-shell"></a>

Quando esegui comandi all'interno del contenitore Docker, tali comandi non vengono acquisiti nei log Docker. `docker exec` La registrazione dei comandi nei registri Docker può aiutarti a esaminare lo stato del contenitore Greengrass Docker. Esegui una delle seguenti operazioni:
+ Esegui il comando seguente in un terminale separato per collegare l'input, l'output e l'errore standard del tuo terminale al contenitore in esecuzione. Ciò consente di visualizzare e controllare il contenitore Docker dal terminale corrente.

  ```
  docker attach container-id
  ```
+ Esegui il comando seguente in un terminale separato. Ciò consente di eseguire i comandi in modalità interattiva, anche se il contenitore non è collegato.

  ```
  docker exec -it container-id sh -c "command > /proc/1/fd/1"
  ```

Per una AWS IoT Greengrass risoluzione generale dei problemi, vedere[Risoluzione dei problemi AWS IoT Greengrass V2](troubleshooting.md).

# Configurare il software AWS IoT Greengrass Core
<a name="configure-greengrass-core-v2"></a>

Il software AWS IoT Greengrass Core offre opzioni che è possibile utilizzare per configurare il software. È possibile creare distribuzioni per configurare il software AWS IoT Greengrass Core su ciascun dispositivo principale.

**Topics**
+ [Implementa il componente Greengrass nucleus](#configure-nucleus-component)
+ [Configurare il nucleo Greengrass come servizio di sistema](#configure-system-service)
+ [Controlla l'allocazione della memoria con le opzioni JVM](#jvm-tuning)
+ [Configurare l'utente che esegue i componenti](#configure-component-user)
+ [Configura i limiti delle risorse di sistema per i componenti](#configure-component-system-resource-limits)
+ [Connessione alla porta 443 o tramite un proxy di rete](#configure-alpn-network-proxy)
+ [Utilizza un certificato del dispositivo firmato da una CA privata](#configure-nucleus-private-ca)
+ [Configurare i timeout MQTT e le impostazioni della cache](#configure-mqtt)
+ [Configurare Greengrass Nucleus sulla rete IPv6](#configure-ipv6)

## Implementa il componente Greengrass nucleus
<a name="configure-nucleus-component"></a>

AWS IoT Greengrass fornisce il software AWS IoT Greengrass Core come componente che puoi distribuire sui tuoi dispositivi principali Greengrass. Puoi creare una distribuzione per applicare la stessa configurazione a più dispositivi core Greengrass. Per ulteriori informazioni, consultare [Nucleo Greengrass](greengrass-nucleus-component.md) e [Aggiornamento del software AWS IoT Greengrass Core (OTA)](update-greengrass-core-v2.md).

## Configurare il nucleo Greengrass come servizio di sistema
<a name="configure-system-service"></a>

È necessario configurare il software AWS IoT Greengrass Core come servizio di sistema nel sistema init del dispositivo per effettuare le seguenti operazioni:
+ Avvia il software AWS IoT Greengrass Core all'avvio del dispositivo. Questa è una buona pratica se gestisci grandi flotte di dispositivi.
+ Installa ed esegui i componenti del plug-in. Diversi componenti AWS forniti sono componenti plug-in, che consentono loro di interfacciarsi direttamente con il nucleo Greengrass. Per ulteriori informazioni sui tipi di componenti, vedere. [Tipi di componenti](develop-greengrass-components.md#component-types)
+ Applica gli aggiornamenti over-the-air (OTA) al software AWS IoT Greengrass Core del dispositivo principale. Per ulteriori informazioni, consulta [Aggiornamento del software AWS IoT Greengrass Core (OTA)](update-greengrass-core-v2.md).
+ Abilita i componenti per riavviare il software AWS IoT Greengrass Core o il dispositivo principale quando una distribuzione aggiorna il componente a una nuova versione o aggiorna determinati parametri di configurazione. Per ulteriori informazioni, consulta la fase del [ciclo di vita di bootstrap](component-recipe-reference.md#bootstrap-lifecycle-definition).

**Importante**  <a name="windows-system-service-requirement-important-note"></a>
Nei dispositivi Windows Core, è necessario configurare il software AWS IoT Greengrass Core come servizio di sistema.

**Topics**
+ [Configurate il nucleo come servizio di sistema (Linux)](#configure-system-service-linux)
+ [Configurare il nucleo come servizio di sistema (Windows)](#configure-system-service-windows)

### Configurate il nucleo come servizio di sistema (Linux)
<a name="configure-system-service-linux"></a>

I dispositivi Linux supportano diversi sistemi di init, come initd, systemd e SystemV. L'`--setup-system-service true`argomento viene utilizzato quando si installa il software AWS IoT Greengrass Core per avviare il nucleus come servizio di sistema e configurarlo per l'avvio all'avvio del dispositivo. Il programma di installazione configura il software AWS IoT Greengrass Core come servizio di sistema con systemd.

È anche possibile configurare manualmente il nucleo per l'esecuzione come servizio di sistema. L'esempio seguente è un file di servizio per systemd.

```
[Unit]
Description=Greengrass Core

[Service]
Type=simple
PIDFile=/greengrass/v2/alts/loader.pid
RemainAfterExit=no
Restart=on-failure
RestartSec=10
ExecStart=/bin/sh /greengrass/v2/alts/current/distro/bin/loader

[Install]
WantedBy=multi-user.target
```

Dopo aver configurato il servizio di sistema, è possibile eseguire i seguenti comandi per configurare l'avvio del dispositivo all'avvio e per avviare o arrestare il software AWS IoT Greengrass Core.
+ Per verificare lo stato del servizio (systemd)

  ```
  sudo systemctl status greengrass.service
  ```
+ Per consentire al nucleo di avviarsi all'avvio del dispositivo.

  ```
  sudo systemctl enable greengrass.service
  ```
+ Per impedire che il nucleo si avvii all'avvio del dispositivo.

  ```
  sudo systemctl disable greengrass.service
  ```
+ Per avviare il software AWS IoT Greengrass Core.

  ```
  sudo systemctl start greengrass.service
  ```
+ Per interrompere il software AWS IoT Greengrass Core.

  ```
  sudo systemctl stop greengrass.service
  ```

### Configurare il nucleo come servizio di sistema (Windows)
<a name="configure-system-service-windows"></a>

L'`--setup-system-service true`argomento viene utilizzato quando si installa il software AWS IoT Greengrass Core per avviare il nucleo come servizio Windows e configurarlo per l'avvio all'avvio del dispositivo.

Dopo aver configurato il servizio, puoi eseguire i seguenti comandi per configurare l'avvio del dispositivo all'avvio e per avviare o arrestare il software AWS IoT Greengrass Core. È necessario eseguire il prompt dei comandi o PowerShell come amministratore per eseguire questi comandi.

------
#### [ Windows Command Prompt (CMD) ]
+ Per verificare lo stato del servizio

  ```
  sc query "greengrass"
  ```
+ Per consentire al nucleo di avviarsi all'avvio del dispositivo.

  ```
  sc config "greengrass" start=auto
  ```
+ Per impedire che il nucleo si avvii all'avvio del dispositivo.

  ```
  sc config "greengrass" start=disabled
  ```
+ Per avviare il software AWS IoT Greengrass Core.

  ```
  sc start "greengrass"
  ```
+ Per interrompere il software AWS IoT Greengrass Core.

  ```
  sc stop "greengrass"
  ```
**Nota**  <a name="windows-ignore-shutdown-signal-behavior-note"></a>
Sui dispositivi Windows, il software AWS IoT Greengrass Core ignora questo segnale di spegnimento mentre interrompe i processi dei componenti Greengrass. Se il software AWS IoT Greengrass Core ignora il segnale di spegnimento quando esegui questo comando, attendi qualche secondo e riprova.

------
#### [ PowerShell ]
+ Per verificare lo stato del servizio

  ```
  Get-Service -Name "greengrass"
  ```
+ Per consentire al nucleo di avviarsi all'avvio del dispositivo.

  ```
  Set-Service -Name "greengrass" -Status stopped -StartupType automatic
  ```
+ Per impedire che il nucleo si avvii all'avvio del dispositivo.

  ```
  Set-Service -Name "greengrass" -Status stopped -StartupType disabled
  ```
+ Per avviare il software AWS IoT Greengrass Core.

  ```
  Start-Service -Name "greengrass"
  ```
+ Per interrompere il software AWS IoT Greengrass Core.

  ```
  Stop-Service -Name "greengrass"
  ```
**Nota**  <a name="windows-ignore-shutdown-signal-behavior-note"></a>
Sui dispositivi Windows, il software AWS IoT Greengrass Core ignora questo segnale di spegnimento mentre interrompe i processi dei componenti Greengrass. Se il software AWS IoT Greengrass Core ignora il segnale di spegnimento quando esegui questo comando, attendi qualche secondo e riprova.

------

## Controlla l'allocazione della memoria con le opzioni JVM
<a name="jvm-tuning"></a>

Se utilizzi AWS IoT Greengrass un dispositivo con memoria limitata, puoi utilizzare le opzioni della macchina virtuale Java (JVM) per controllare la dimensione massima dell'heap, le modalità di raccolta dei rifiuti e le opzioni del compilatore, che controllano la quantità di memoria utilizzata dal software Core. AWS IoT Greengrass La dimensione dell'heap nella JVM determina la quantità di memoria che un'applicazione può utilizzare prima che si verifichi la [raccolta dei dati indesiderati o prima che l'applicazione esaurisca la](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/introduction.html) memoria. La dimensione heap massima specifica la quantità massima di memoria che JVM può allocare durante l'espansione dell'heap nel quadro di un'attività intensa. 

[Per controllare l'allocazione della memoria, create una nuova distribuzione o modificate una distribuzione esistente che include il componente nucleus e specificate le opzioni JVM nel parametro di configurazione nella configurazione del componente nucleus. `jvmOptions`](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-jvm-options) 

A seconda delle esigenze, è possibile eseguire il software AWS IoT Greengrass Core con un'allocazione di memoria ridotta o con un'allocazione di memoria minima. 

**Allocazione di memoria ridotta**  
Per eseguire il software AWS IoT Greengrass Core con un'allocazione di memoria ridotta, si consiglia di utilizzare il seguente esempio di configurazione merge update per impostare le opzioni JVM nella configurazione del nucleo:

```
{
  "jvmOptions": "-XX:+UseSerialGC -XX:TieredStopAtLevel=1"
}
```

**Allocazione minima di memoria**  
Per eseguire il software AWS IoT Greengrass Core con un'allocazione di memoria minima, si consiglia di utilizzare il seguente esempio di configurazione merge update per impostare le opzioni JVM nella configurazione del nucleo:

```
{
  "jvmOptions": "-Xmx32m -XX:+UseSerialGC -Xint"
}
```

**Importante**  
L'esecuzione del software AWS IoT Greengrass Core con un'allocazione di memoria minima può avere un impatto significativo sulle prestazioni dei sistemi con specifiche ridotte, poiché la JVM eseguirà una maggiore elaborazione utilizzando meno memoria. Consigliamo di ottimizzare le opzioni per bilanciare le esigenze di memoria e prestazioni.

Questi esempi di aggiornamenti di fusione della configurazione utilizzano le seguenti opzioni JVM:

`-XX:+UseSerialGC`  
Specifica l'utilizzo di serial garbage collection per lo spazio heap JVM. Il serial garbage collector è più lento, ma utilizza meno memoria rispetto ad altre implementazioni di JVM Garbage Collector.

`-XX:TieredStopAtLevel=1`  
Indica alla JVM di utilizzare il compilatore Java (JIT) una volta. just-in-time Poiché il codice compilato JIT utilizza spazio nella memoria del dispositivo, l'utilizzo del compilatore JIT più di una volta consuma più memoria di una singola compilazione.

`-XmxNNm`  
Imposta la dimensione massima dell'heap JVM.  
L'impostazione di una dimensione massima dell'heap su un valore troppo basso può causare un rallentamento delle prestazioni o errori. out-of-memory Ti consigliamo di misurare l'utilizzo corrente dell'heap prima di impostare una dimensione massima con l'opzione. `-XmxNNm` Configura la tua JVM con l'`-XX:NativeMemoryTracking=detail`opzione JVM. [Quindi, misura l'utilizzo corrente dell'heap utilizzando la richiesta di `VM.native_memory` comando all'interno dell'utilità jcmd.](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html)
Se la misurazione dell'heap non è un'opzione, usala `-Xmx64m` come valore iniziale per limitare la dimensione dell'heap a 64 MB. È quindi possibile ridurre in modo incrementale la dimensione massima dell'heap da lì. Per un'allocazione minima di memoria, usa `-Xmx32m` come valore iniziale per limitare la dimensione dell'heap a 32 MB.  
Puoi aumentare o diminuire il `-Xmx` valore in base alle tue effettive esigenze; tuttavia, ti consigliamo vivamente di non impostare la dimensione massima dell'heap al di sotto di 16 MB. La quantità di dimensione dell'heap JVM necessaria può inoltre variare nel tempo in base ai componenti del plug-in distribuiti sul dispositivo principale. Se la dimensione massima dell'heap è troppo bassa per il tuo ambiente, il software AWS IoT Greengrass Core potrebbe riscontrare errori imprevisti a causa della memoria insufficiente. Se riscontri un rallentamento delle prestazioni o riscontri errori a causa di una memoria insufficiente, ripristina un'impostazione nota come valida. Ad esempio, se la dimensione normale dell'heap impegnato è`41428KB`, usala `-Xmx40m` per limitare leggermente l'utilizzo dell'heap.

`-Xint`  
Indica alla JVM di non utilizzare il compilatore (JIT). just-in-time La JVM viene invece eseguita in modalità solo interpretata. Questa modalità è più lenta (potenzialmente 20 volte più lenta per le distribuzioni su sistemi di fascia bassa) rispetto all'esecuzione del codice compilato JIT; tuttavia, il codice compilato non utilizza spazio in memoria.

Per informazioni sulla creazione di aggiornamenti di fusione della configurazione, vedere. [Aggiornamento delle configurazioni dei componenti](update-component-configurations.md)

## Configurare l'utente che esegue i componenti
<a name="configure-component-user"></a>

Il software AWS IoT Greengrass Core può eseguire i processi dei componenti come utente e gruppo di sistema diversi da quello che esegue il software. Ciò aumenta la sicurezza, poiché è possibile eseguire il software AWS IoT Greengrass Core come utente root o come utente amministratore, senza concedere tali autorizzazioni ai componenti in esecuzione sul dispositivo principale.

La tabella seguente indica i tipi di componenti che il software AWS IoT Greengrass Core può eseguire come utente specificato. Per ulteriori informazioni, consulta [Tipi di componenti](develop-greengrass-components.md#component-types).


| Tipo di componente | Configura l'utente del componente | 
| --- | --- | 
|  Nucleo  |  <a name="polaris-no-para"></a> ![\[No\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-no.png) No   | 
|  Plug-in  |  <a name="polaris-no-para"></a> ![\[No\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-no.png) No   | 
|  Generico  |  <a name="polaris-yes-para"></a> ![\[Yes\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-yes.png) Sì   | 
|  Lambda (non containerizzata)  |  <a name="polaris-yes-para"></a> ![\[Yes\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-yes.png) Sì   | 
|  Lambda (containerizzata)  |  <a name="polaris-yes-para"></a> ![\[Yes\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-yes.png) Sì   | 

È necessario creare l'utente del componente prima di poterlo specificare in una configurazione di distribuzione. Nei dispositivi basati su Windows, è inoltre necessario memorizzare il nome utente e la password dell'utente nell'istanza di gestione delle credenziali dell'account. LocalSystem Per ulteriori informazioni, consulta [Configura un utente del componente sui dispositivi Windows](#create-component-user-windows).

Quando si configura l'utente del componente su un dispositivo basato su Linux, è possibile facoltativamente specificare anche un gruppo. Specificate l'utente e il gruppo separati da due punti (`:`) nel seguente formato:. `user:group` Se non specifichi un gruppo, il software AWS IoT Greengrass Core utilizza per impostazione predefinita il gruppo principale dell'utente. È possibile utilizzare il nome o l'ID per identificare l'utente e il gruppo. 

Sui dispositivi basati su Linux, puoi anche eseguire componenti come utente di sistema inesistente, chiamato anche utente sconosciuto, per aumentare la sicurezza. Un processo Linux può segnalare qualsiasi altro processo eseguito dallo stesso utente. Un utente sconosciuto non esegue altri processi, quindi puoi eseguire i componenti come utente sconosciuto per evitare che i componenti segnalino altri componenti sul dispositivo principale. Per eseguire i componenti come utente sconosciuto, specifica un ID utente che non esiste sul dispositivo principale. Puoi anche specificare un ID di gruppo che non esiste da eseguire come gruppo sconosciuto.

È possibile configurare l'utente per ogni componente e per ogni dispositivo principale.
+ **Configurazione per un componente**

  È possibile configurare ogni componente in modo che venga eseguito con un utente specifico per quel componente. Quando si crea una distribuzione, è possibile specificare l'utente per ogni componente nella `runWith` configurazione di quel componente. Il software AWS IoT Greengrass Core esegue i componenti come utente specificato se li configurate. Altrimenti, per impostazione predefinita, esegue i componenti come utente predefinito configurato per il dispositivo principale. Per ulteriori informazioni sulla specificazione dell'utente del componente nella configurazione di distribuzione, vedere il parametro di [`runWith`](create-deployments.md#component-run-with-config)configurazione in. [Creare distribuzione](create-deployments.md)
+ **Configura l'utente predefinito per un dispositivo principale**

  È possibile configurare un utente predefinito utilizzato dal software AWS IoT Greengrass Core per eseguire i componenti. Quando il software AWS IoT Greengrass Core esegue un componente, verifica se è stato specificato un utente per quel componente e lo utilizza per eseguire il componente. Se il componente non specifica un utente, il software AWS IoT Greengrass Core esegue il componente come utente predefinito configurato per il dispositivo principale. Per ulteriori informazioni, consulta [Configura l'utente predefinito del componente](#configure-default-component-user).

**Nota**  
Sui dispositivi basati su Windows, è necessario specificare almeno un utente predefinito per eseguire i componenti.  
Sui dispositivi basati su Linux, si applicano le seguenti considerazioni se non si configura un utente per l'esecuzione dei componenti:   
Se esegui il software AWS IoT Greengrass Core come root, il software non eseguirà componenti. È necessario specificare un utente predefinito per eseguire i componenti se si esegue come root.
Se esegui il software AWS IoT Greengrass Core come utente non root, il software esegue i componenti come tale utente.

**Topics**
+ [Configura un utente del componente sui dispositivi Windows](#create-component-user-windows)
+ [Configura l'utente predefinito del componente](#configure-default-component-user)

### Configura un utente del componente sui dispositivi Windows
<a name="create-component-user-windows"></a>

**Per configurare un utente del componente su un dispositivo basato su Windows**

1. Crea l'utente del componente nell' LocalSystem account sul dispositivo.

   ```
   net user /add component-user password
   ```

1. Utilizza l'[ PsExec utilità Microsoft](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) per memorizzare il nome utente e la password per l'utente del componente nell'istanza di Credential Manager per l' LocalSystem account.

   ```
   psexec -s cmd /c cmdkey /generic:component-user /user:component-user /pass:password
   ```
**Nota**  
Sui dispositivi basati su Windows, l' LocalSystem account esegue il Greengrass nucleus ed è necessario utilizzare l' PsExec utilità per memorizzare le informazioni utente del componente nell'account. LocalSystem L'utilizzo dell'applicazione Credential Manager archivia queste informazioni nell'account Windows dell'utente attualmente connesso, anziché nell'account. LocalSystem

### Configura l'utente predefinito del componente
<a name="configure-default-component-user"></a>

È possibile utilizzare una distribuzione per configurare l'utente predefinito su un dispositivo principale. In questa distribuzione, aggiorni la configurazione del [componente nucleus](greengrass-nucleus-component.md).

**Nota**  
Puoi anche impostare l'utente predefinito quando installi il software AWS IoT Greengrass Core con l'`--component-default-user`opzione. Per ulteriori informazioni, consulta [Installare il software AWS IoT Greengrass Core](install-greengrass-core-v2.md).

[Crea una distribuzione](create-deployments.md) che specifichi il seguente aggiornamento di configurazione per il `aws.greengrass.Nucleus` componente.

------
#### [ Linux ]

```
{
  "runWithDefault": {
    "posixUser": "ggc_user:ggc_group"
  }
}
```

------
#### [ Windows ]

```
{
  "runWithDefault": {
    "windowsUser": "ggc_user"
  }
}
```

**Nota**  
L'utente specificato deve esistere e il nome utente e la password per questo utente devono essere archiviati nell'istanza di gestione delle credenziali dell' LocalSystem account sul dispositivo Windows. Per ulteriori informazioni, consulta [Configura un utente del componente sui dispositivi Windows](#create-component-user-windows).

------

L'esempio seguente definisce una distribuzione per un dispositivo basato su Linux che si configura `ggc_user` come utente e `ggc_group` gruppo predefiniti. L'aggiornamento della `merge` configurazione richiede un oggetto JSON serializzato.

```
{
  "components": {
    "aws.greengrass.Nucleus": {
      "version": "2.16.1",
      "configurationUpdate": {
        "merge": "{\"runWithDefault\":{\"posixUser\":\"ggc_user:ggc_group\"}}"
      }
    }
  }
}
```

## Configura i limiti delle risorse di sistema per i componenti
<a name="configure-component-system-resource-limits"></a>

**Nota**  
Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus. AWS IoT Greengrass attualmente non supporta questa funzionalità sui dispositivi Windows core. 

È possibile configurare la quantità massima di utilizzo di CPU e RAM che i processi di ciascun componente possono utilizzare sul dispositivo principale.

La tabella seguente mostra i tipi di componenti che supportano i limiti delle risorse di sistema. Per ulteriori informazioni, consulta [Tipi di componenti](develop-greengrass-components.md#component-types).


| Tipo di componente | Configura i limiti delle risorse di sistema | 
| --- | --- | 
|  Nucleo  |  <a name="polaris-no-para"></a> ![\[No\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-no.png) No   | 
|  Plug-in  |  <a name="polaris-no-para"></a> ![\[No\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-no.png) No   | 
|  Generico  |  <a name="polaris-yes-para"></a> ![\[Yes\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-yes.png) Sì   | 
|  Lambda (non containerizzata)  |  <a name="polaris-yes-para"></a> ![\[Yes\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-yes.png) Sì   | 
|  Lambda (containerizzata)  |  <a name="polaris-no-para"></a> ![\[No\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/icon-no.png) No   | 

**Importante**  
I limiti delle risorse di sistema non sono supportati quando si [esegue il software AWS IoT Greengrass Core in un](run-greengrass-docker.md) contenitore Docker.

Puoi configurare i limiti delle risorse di sistema per ogni componente e per ogni dispositivo principale.
+ **Configurazione per un componente**

  È possibile configurare ogni componente con limiti di risorse di sistema specifici per quel componente. Quando si crea una distribuzione, è possibile specificare i limiti delle risorse di sistema per ogni componente della distribuzione. Se il componente supporta i limiti delle risorse di sistema, il software AWS IoT Greengrass Core applica i limiti ai processi del componente. Se non specificate i limiti delle risorse di sistema per un componente, il software AWS IoT Greengrass Core utilizza tutte le impostazioni predefinite che avete configurato per il dispositivo principale. Per ulteriori informazioni, consulta [Creare distribuzione](create-deployments.md).
+ **Configura le impostazioni predefinite per un dispositivo principale**

  È possibile configurare i limiti di risorse di sistema predefiniti che il software AWS IoT Greengrass Core applica ai componenti che supportano tali limiti. Quando il software AWS IoT Greengrass Core esegue un componente, applica i limiti delle risorse di sistema specificati per quel componente. Se quel componente non specifica i limiti delle risorse di sistema, il software AWS IoT Greengrass Core applica i limiti di risorse di sistema predefiniti configurati per il dispositivo principale. Se non specificate i limiti predefiniti delle risorse di sistema, per impostazione predefinita il software AWS IoT Greengrass Core non applica alcun limite alle risorse di sistema. Per ulteriori informazioni, consulta [Configura i limiti predefiniti delle risorse di sistema](#configure-default-component-system-resource-limits).

### Configura i limiti predefiniti delle risorse di sistema
<a name="configure-default-component-system-resource-limits"></a>

È possibile implementare il componente [Greengrass nucleus](greengrass-nucleus-component.md) per configurare i limiti di risorse di sistema predefiniti per un dispositivo principale. Per configurare i limiti predefiniti delle risorse di sistema, [create una distribuzione](create-deployments.md) che specifichi il seguente aggiornamento della configurazione per il componente. `aws.greengrass.Nucleus`

```
{
  "runWithDefault": {
    "systemResourceLimits": {
      "cpu": cpuTimeLimit,
      "memory": memoryLimitInKb
    }
  }
}
```

L'esempio seguente definisce una distribuzione che configura il limite di tempo della CPU su`2`, che equivale al 50% di utilizzo su un dispositivo con 4 core CPU. Questo esempio configura anche l'utilizzo della memoria su 100 MB.

```
{
  "components": {
    "aws.greengrass.Nucleus": {
      "version": "2.16.1",
      "configurationUpdate": {
        "merge": "{\"runWithDefault\":{\"systemResourceLimits\":\"cpus\":2,\"memory\":102400}}}"
      }
    }
  }
}
```

## Connessione alla porta 443 o tramite un proxy di rete
<a name="configure-alpn-network-proxy"></a>

AWS IoT Greengrass i dispositivi principali comunicano AWS IoT Core utilizzando il protocollo di messaggistica MQTT con autenticazione client TLS. Per convenzione, il protocollo MQTT su TLS utilizza la porta 8883. Tuttavia, come misura di sicurezza, gli ambienti restrittivi potrebbero limitare il traffico in entrata e in uscita a un numero ridotto di porte TCP. Ad esempio, un firewall aziendale potrebbe aprire la porta 443 per il traffico HTTPS, ma chiudere le altre porte utilizzate per i protocolli meno comuni, come la porta 8883 per il traffico MQTT. Altri ambienti restrittivi potrebbero richiedere che tutto il traffico passi attraverso un proxy prima di connettersi a Internet.

**Nota**  
I dispositivi core Greengrass che eseguono il [componente Greengrass nucleus](greengrass-nucleus-component.md) v2.0.3 e versioni precedenti utilizzano la porta 8443 per connettersi all'endpoint del piano dati. AWS IoT Greengrass Questi dispositivi devono essere in grado di connettersi a questo endpoint sulla porta 8443. Per ulteriori informazioni, consulta [Consenti il traffico dei dispositivi tramite un proxy o un firewall](allow-device-traffic.md).

Per abilitare la comunicazione in questi scenari, AWS IoT Greengrass fornisce le seguenti opzioni di configurazione:
+ **Comunicazione MQTT tramite la porta 443**. Se la rete consente le connessioni alla porta 443, è possibile configurare il dispositivo principale Greengrass in modo che utilizzi la porta 443 per il traffico MQTT anziché la porta predefinita 8883. Si può trattare di una connessione diretta alla porta 443 o di una connessione tramite un server proxy di rete. [A differenza della configurazione predefinita, che utilizza l'autenticazione client basata su certificati, MQTT sulla porta 443 utilizza il ruolo del servizio del dispositivo per l'autenticazione.](device-service-role.md)

  Per ulteriori informazioni, consulta [Configura MQTT sulla porta 443](#configure-mqtt-port-443).
+ **Comunicazione HTTPS tramite** la porta 443. Per impostazione predefinita, il software AWS IoT Greengrass Core invia il traffico HTTPS sulla porta 8443, ma è possibile configurarlo per utilizzare la porta 443. AWS IoT Greengrass utilizza l'estensione TLS [Application Layer Protocol Network](https://tools.ietf.org/html/rfc7301) (ALPN) per abilitare questa connessione. Come nella configurazione predefinita, HTTPS sulla porta 443 utilizza l'autenticazione client basata su certificati.
**Importante**  
Per utilizzare ALPN e abilitare la comunicazione HTTPS sulla porta 443, il dispositivo principale deve eseguire Java 8 update 252 o versione successiva. Tutti gli aggiornamenti di Java versione 9 e successive supportano anche ALPN.

  Per ulteriori informazioni, consulta [Configura HTTPS sulla porta 443](#configure-https-port-443).
+ **Connessione tramite un proxy di rete**. È possibile configurare un server proxy di rete che funga da intermediario per la connessione al dispositivo principale Greengrass. AWS IoT Greengrass supporta l'autenticazione di base per i proxy HTTP e HTTPS.

  <a name="https-proxy-greengrass-nucleus-requirement"></a>I dispositivi core Greengrass devono eseguire [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.0 o versione successiva per utilizzare i proxy HTTPS.

  Il software AWS IoT Greengrass Core trasmette la configurazione del proxy ai componenti tramite le variabili,, e di ambiente. `ALL_PROXY` `HTTP_PROXY` `HTTPS_PROXY` `NO_PROXY` I componenti devono utilizzare queste impostazioni per connettersi tramite il proxy. I componenti utilizzano librerie comuni (come boto3, cURL e il `requests` pacchetto python) che in genere utilizzano queste variabili di ambiente per impostazione predefinita per effettuare connessioni. Se un componente specifica anche queste variabili di ambiente, AWS IoT Greengrass non le sovrascrive.

  Per ulteriori informazioni, consulta [Configurare un proxy di rete](#configure-network-proxy).

### Configura MQTT sulla porta 443
<a name="configure-mqtt-port-443"></a>

È possibile configurare MQTT tramite la porta 443 su dispositivi core esistenti o quando si installa il software AWS IoT Greengrass Core su un nuovo dispositivo core.

**Topics**
+ [Configurate MQTT tramite la porta 443 su dispositivi core esistenti](#configure-mqtt-port-443-deployment)
+ [Configurare MQTT sulla porta 443 durante l'installazione](#configure-mqtt-port-443-installer)

#### Configurate MQTT tramite la porta 443 su dispositivi core esistenti
<a name="configure-mqtt-port-443-deployment"></a>

È possibile utilizzare una distribuzione per configurare MQTT sulla porta 443 su un dispositivo single core o su un gruppo di dispositivi core. In questa distribuzione, aggiorni la configurazione del componente [nucleus.](greengrass-nucleus-component.md) Il nucleo si riavvia quando si aggiorna la configurazione. `mqtt`

Per configurare MQTT sulla porta 443, [create una distribuzione](create-deployments.md) che specifichi il seguente aggiornamento della configurazione per il componente. `aws.greengrass.Nucleus`

```
{
  "mqtt": {
    "port": 443
  }
}
```

L'esempio seguente definisce una distribuzione che configura MQTT sulla porta 443. L'aggiornamento della `merge` configurazione richiede un oggetto JSON serializzato.

```
{
  "components": {
    "aws.greengrass.Nucleus": {
      "version": "2.16.1",
      "configurationUpdate": {
        "merge": "{\"mqtt\":{\"port\":443}}"
      }
    }
  }
}
```

#### Configurare MQTT sulla porta 443 durante l'installazione
<a name="configure-mqtt-port-443-installer"></a>

È possibile configurare MQTT sulla porta 443 quando si installa il software AWS IoT Greengrass Core su un dispositivo principale. Utilizzate l'argomento `--init-config` installer per configurare MQTT sulla porta 443. [È possibile specificare questo argomento quando si esegue l'installazione con il provisioning [manuale, il provisioning](manual-installation.md) del [parco veicoli o il provisioning personalizzato](fleet-provisioning.md).](custom-provisioning.md)

### Configura HTTPS sulla porta 443
<a name="configure-https-port-443"></a>

Questa funzionalità richiede la [Nucleo Greengrass](greengrass-nucleus-component.md) versione 2.0.4 o successiva.

È possibile configurare HTTPS tramite la porta 443 su dispositivi core esistenti o quando si installa il software AWS IoT Greengrass Core su un nuovo dispositivo core.

**Topics**
+ [Configura HTTPS tramite la porta 443 sui dispositivi principali esistenti](#configure-https-port-443-deployment)
+ [Configura HTTPS sulla porta 443 durante l'installazione](#configure-https-port-443-installer)

#### Configura HTTPS tramite la porta 443 sui dispositivi principali esistenti
<a name="configure-https-port-443-deployment"></a>

Puoi utilizzare una distribuzione per configurare HTTPS sulla porta 443 su un dispositivo single core o su un gruppo di dispositivi core. In questa distribuzione, aggiorni la configurazione del [componente nucleus](greengrass-nucleus-component.md).

Per configurare HTTPS sulla porta 443, [crea una distribuzione](create-deployments.md) che specifichi il seguente aggiornamento della configurazione per il componente. `aws.greengrass.Nucleus`

```
{
  "greengrassDataPlanePort": 443
}
```

L'esempio seguente definisce una distribuzione che configura HTTPS sulla porta 443. L'aggiornamento della `merge` configurazione richiede un oggetto JSON serializzato.

```
{
  "components": {
    "aws.greengrass.Nucleus": {
      "version": "2.16.1",
      "configurationUpdate": {
        "merge": "{\"greengrassDataPlanePort\":443}"
      }
    }
  }
}
```

#### Configura HTTPS sulla porta 443 durante l'installazione
<a name="configure-https-port-443-installer"></a>

È possibile configurare HTTPS sulla porta 443 quando si installa il software AWS IoT Greengrass Core su un dispositivo principale. Utilizzate l'argomento `--init-config` installer per configurare HTTPS sulla porta 443. [È possibile specificare questo argomento quando si esegue l'installazione con il provisioning [manuale, il provisioning del](manual-installation.md)[parco veicoli o il provisioning personalizzato](fleet-provisioning.md).](custom-provisioning.md)

### Configurare un proxy di rete
<a name="configure-network-proxy"></a>

Segui una procedura in questa sezione per configurare i dispositivi core Greengrass per la connessione a Internet tramite un proxy di rete HTTP o HTTPS. Per ulteriori informazioni sugli endpoint e le porte utilizzati dai dispositivi principali, consulta. [Consenti il traffico dei dispositivi tramite un proxy o un firewall](allow-device-traffic.md)

**Importante**  
Se il dispositivo principale esegue una versione del [nucleo di Greengrass](greengrass-nucleus-component.md) precedente alla v2.4.0, il ruolo del dispositivo deve consentire le seguenti autorizzazioni per utilizzare un proxy di rete:  
`iot:Connect`
`iot:Publish`
`iot:Receive`
`iot:Subscribe`
Ciò è necessario perché il dispositivo utilizza le AWS credenziali del servizio di scambio di token per autenticare le connessioni MQTT. AWS IoT Il dispositivo utilizza MQTT per ricevere e installare distribuzioni da Cloud AWS, quindi il dispositivo non funzionerà a meno che non si definiscano queste autorizzazioni in base al suo ruolo. I dispositivi utilizzano in genere certificati X.509 per autenticare le connessioni MQTT, ma i dispositivi non possono eseguire questa operazione per l'autenticazione quando utilizzano un proxy.  
Per ulteriori informazioni su come configurare il ruolo del dispositivo, vedere. [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)

**Topics**
+ [Configurare un proxy di rete sui dispositivi principali esistenti](#configure-network-proxy-deployment)
+ [Configurare un proxy di rete durante l'installazione](#configure-network-proxy-installer)
+ [Abilita il dispositivo principale in modo che consideri attendibile un proxy HTTPS](#https-proxy-certificate-trust)
+ [L'oggetto NetworkProxy](#network-proxy-object)

#### Configurare un proxy di rete sui dispositivi principali esistenti
<a name="configure-network-proxy-deployment"></a>

È possibile utilizzare una distribuzione per configurare un proxy di rete su un dispositivo a core singolo o su un gruppo di dispositivi principali. In questa distribuzione, aggiorni la configurazione del [componente nucleus](greengrass-nucleus-component.md). Il nucleo si riavvia quando si aggiorna la configurazione. `networkProxy`

Per configurare un proxy di rete, [crea una distribuzione](create-deployments.md) per il `aws.greengrass.Nucleus` componente che unisca il seguente aggiornamento di configurazione. Questo aggiornamento di configurazione contiene l'oggetto [NetworkProxy](#network-proxy-object).

```
{
  "networkProxy": {
    "noProxyAddresses": "http://192.168.0.1,www.example.com",
    "proxy": {
      "url": "https://my-proxy-server:1100"
    }
  }
}
```

L'esempio seguente definisce una distribuzione che configura un proxy di rete. L'aggiornamento della `merge` configurazione richiede un oggetto JSON serializzato.

```
{
  "components": {
    "aws.greengrass.Nucleus": {
      "version": "2.16.1",
      "configurationUpdate": {
        "merge": "{\"networkProxy\":{\"noProxyAddresses\":\"http://192.168.0.1,www.example.com\",\"proxy\":{\"url\":\"https://my-proxy-server:1100\",\"username\":\"Mary_Major\",\"password\":\"pass@word1357\"}}}"
      }
    }
  }
}
```

#### Configurare un proxy di rete durante l'installazione
<a name="configure-network-proxy-installer"></a>

È possibile configurare un proxy di rete quando si installa il software AWS IoT Greengrass Core su un dispositivo principale. Utilizzate l'argomento `--init-config` installer per configurare il proxy di rete. [È possibile specificare questo argomento quando si esegue l'installazione con il provisioning [manuale, il provisioning](manual-installation.md) del [parco veicoli o il provisioning](fleet-provisioning.md) personalizzato.](custom-provisioning.md)

#### Abilita il dispositivo principale in modo che consideri attendibile un proxy HTTPS
<a name="https-proxy-certificate-trust"></a>

Quando configuri un dispositivo principale per utilizzare un proxy HTTPS, devi aggiungere la catena di certificati del server proxy a quella del dispositivo principale per consentirgli di considerare attendibile il proxy HTTPS. In caso contrario, il dispositivo principale potrebbe riscontrare errori quando tenta di indirizzare il traffico attraverso il proxy. Aggiungi il certificato CA del server proxy al file di certificato CA root Amazon del dispositivo principale.

**Per consentire al dispositivo principale di considerare attendibile il proxy HTTPS**

1. Trova il file del certificato Amazon root CA sul dispositivo principale.
   + Se hai installato il software AWS IoT Greengrass Core con [provisioning automatico](quick-installation.md), il file di certificato CA root di Amazon esiste in`/greengrass/v2/rootCA.pem`.
   + Se hai installato il software AWS IoT Greengrass Core con il [provisioning [manuale](manual-installation.md) o del parco veicoli](fleet-provisioning.md), il file di certificato Amazon root CA potrebbe esistere in`/greengrass/v2/AmazonRootCA1.pem`.

   Se il certificato Amazon root CA non esiste in queste sedi, controlla la `system.rootCaPath` proprietà `/greengrass/v2/config/effectiveConfig.yaml` per trovarne la posizione.

1. Aggiungi il contenuto del file di certificato CA del server proxy al file di certificato CA root di Amazon.

   L'esempio seguente mostra un certificato CA del server proxy aggiunto al file di certificato CA root di Amazon.

   ```
   -----BEGIN CERTIFICATE-----
   MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK
   \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww
   ... content of proxy CA certificate ...
   +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui
   GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216
   gJMIADggEPADf2/m45hzEXAMPLE=
   -----END CERTIFICATE-----
   
   -----BEGIN CERTIFICATE-----
   MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg
   ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW
   ... content of root CA certificate ...
   o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa
   5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy
   rqXRfKoQnoZsG4q5WTP46EXAMPLE
   -----END CERTIFICATE-----
   ```

#### L'oggetto NetworkProxy
<a name="network-proxy-object"></a>

Utilizza l'oggetto `networkProxy` per specificare le informazioni sul proxy di rete. Questo oggetto contiene le seguenti informazioni:

`noProxyAddresses`  
(Facoltativo) Un elenco separato da virgole di indirizzi IP o nomi host esenti dal proxy.

`proxy`  
Il proxy a cui connettersi. Questo oggetto contiene le seguenti informazioni:    
`url`  
L'URL del server proxy nel formato`scheme://userinfo@host:port`.  <a name="nucleus-component-configuration-proxy-url-segments"></a>
+ `scheme`— Lo schema, che deve essere `http` o`https`.
**Importante**  
<a name="https-proxy-greengrass-nucleus-requirement"></a>I dispositivi core Greengrass devono eseguire [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.0 o versione successiva per utilizzare i proxy HTTPS.  
Se configuri un proxy HTTPS, devi aggiungere il certificato CA del server proxy al certificato Amazon root CA del dispositivo principale. Per ulteriori informazioni, consulta [Abilita il dispositivo principale in modo che consideri attendibile un proxy HTTPS](#https-proxy-certificate-trust).
+ `userinfo`— (Facoltativo) Le informazioni sul nome utente e sulla password. Se si specificano queste informazioni nel`url`, il dispositivo principale Greengrass ignora i `username` campi and. `password`
+ `host`— Il nome host o l'indirizzo IP del server proxy.
+ `port`— (Facoltativo) Il numero di porta. Se non specifichi la porta, il dispositivo principale Greengrass utilizza i seguenti valori predefiniti:
  + `http`— 80
  + `https`— 443  
`username`  
(Facoltativo) Il nome utente che autentica il server proxy.  
`password`  
(Facoltativo) La password che autentica il server proxy.

## Utilizza un certificato del dispositivo firmato da una CA privata
<a name="configure-nucleus-private-ca"></a>

Se si utilizza un'autorità di certificazione (CA) privata personalizzata, è necessario impostare il «nucleo **greengrassDataPlaneEndpoint** Greengrass» su. **iotdata** È possibile impostare questa opzione durante la distribuzione o l'installazione utilizzando l'argomento **--init-config** [installer](configure-installer.md).

È possibile personalizzare l'endpoint del piano dati Greengrass a cui si connette il dispositivo. È possibile impostare questa opzione di configurazione in **iotdata** modo da impostare l'endpoint del piano dati Greengrass sullo stesso endpoint dell'endpoint dati IoT, che è possibile specificare con. **iotDataEndpoint**

## Configurare i timeout MQTT e le impostazioni della cache
<a name="configure-mqtt"></a>

Nell' AWS IoT Greengrass ambiente, i componenti possono utilizzare MQTT per comunicare con. AWS IoT Core Il software AWS IoT Greengrass Core gestisce i messaggi MQTT per i componenti. Quando il dispositivo principale perde la connessione a Cloud AWS, il software memorizza nella cache i messaggi MQTT per riprovare più tardi quando la connessione viene ripristinata. È possibile configurare impostazioni come i timeout dei messaggi e la dimensione della cache. Per ulteriori informazioni, vedere i parametri `mqtt` e i parametri di `mqtt.spooler` configurazione del componente [Greengrass nucleus](greengrass-nucleus-component.md).

AWS IoT Core impone quote di servizio al suo broker di messaggi MQTT. Queste quote potrebbero applicarsi ai messaggi inviati tra dispositivi principali e. AWS IoT Core Per ulteriori informazioni, consulta le [quote del servizio di mediazione AWS IoT Core messaggi nel](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits). *Riferimenti generali di AWS*

## Configurare Greengrass Nucleus sulla rete IPv6
<a name="configure-ipv6"></a>

 [Greengrass Nucleus parla con Greengrass. AWS IoT Core APIs](https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html) APIs Supporto Greengrass in ambiente IPv6 dualstack.

Per abilitare gli endpoint dualstack per: IPv6
+  Aggiungere proprietà di sistema e a `aws.useDualstackEndpoint=true` `java.net.preferIPv6Addresses=true` `jvmOptions` 
+  Imposta `s3EndpointType` su `DUALSTACK` 

 Imposta questa opzione durante la [distribuzione](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html) o esegui il provisioning manualmente con l'[argomento `--init-config` installer](https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-installer.html). Per ulteriori dettagli, consulta [Utilizzo degli endpoint dual-stack Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/dual-stack-endpoints.html). 

**Example codice per la distribuzione:**  

```
{
    "jvmOptions": "-Daws.useDualstackEndpoint=true",
    "s3EndpointType":"DUALSTACK"
}
```

**Example `config.yaml`tramite fornitura manuale:**  

```
---
system:
  ...
services:
  aws.greengrass.Nucleus:
    ...
    configuration:
      ...
      jvmOptions: "-Daws.useDualstackEndpoint=true -Djava.net.preferIPv6Addresses=true"
      s3EndpointType: "DUALSTACK"
```

# Aggiornamento del software AWS IoT Greengrass Core (OTA)
<a name="update-greengrass-core-v2"></a>

Il software AWS IoT Greengrass Core comprende il [componente Greengrass nucleus](greengrass-nucleus-component.md) e altri componenti opzionali che è possibile distribuire sui dispositivi per eseguire aggiornamenti over-the-air (OTA) del software. Questa funzionalità è integrata nel software Core. AWS IoT Greengrass 

Gli aggiornamenti OTA rendono più efficiente:
+ la correzione delle vulnerabilità in termini di sicurezza;
+ la risoluzione dei problemi di stabilità del software;
+ la distribuzione delle funzionalità nuove o migliorate.

**Topics**
+ [Requisiti](#ota-update-requirements)
+ [Considerazioni per i dispositivi principali](#ota-update-considerations)
+ [Comportamento dell'aggiornamento del nucleo di Greengrass](#ota-update-behavior-nucleus)
+ [Esegui un aggiornamento OTA](#create-ota-update)

## Requisiti
<a name="ota-update-requirements"></a>

I seguenti requisiti si applicano alla distribuzione degli aggiornamenti OTA del software AWS IoT Greengrass Core:
+ Il dispositivo principale Greengrass deve disporre di una connessione a per Cloud AWS ricevere la distribuzione.
+ Il dispositivo principale Greengrass deve essere configurato correttamente e dotato di certificati e chiavi per l'autenticazione con e. AWS IoT Core AWS IoT Greengrass
+ Il software AWS IoT Greengrass Core deve essere configurato e funzionante come servizio di sistema. Gli aggiornamenti OTA non funzionano se si esegue il nucleo dal file JAR,`Greengrass.jar`. Per ulteriori informazioni, consulta [Configurare il nucleo Greengrass come servizio di sistema](configure-greengrass-core-v2.md#configure-system-service).

## Considerazioni per i dispositivi principali
<a name="ota-update-considerations"></a>

Prima di eseguire un aggiornamento OTA, tieni presente l'impatto sui dispositivi principali che aggiorni e sui relativi dispositivi client collegati:
+ Il nucleo Greengrass si spegne. 
+ Inoltre, tutti i componenti in esecuzione sul dispositivo principale si sono spenti. Se tali componenti scrivono su risorse locali, potrebbero lasciare tali risorse in uno stato errato a meno che non vengano disattivati correttamente. I componenti possono utilizzare la [comunicazione tra processi](interprocess-communication.md) per dire al componente nucleus di posticipare l'aggiornamento fino a quando non ripuliscono le risorse che utilizzano.
+ Quando il componente nucleus viene spento, il dispositivo principale perde le connessioni con i Cloud AWS dispositivi locali. Il dispositivo principale non indirizzerà i messaggi dai dispositivi client quando è spento.
+ Le funzioni Lambda di lunga durata eseguite come componenti perdono le informazioni sullo stato dinamico e interrompono tutto il lavoro in sospeso.

## Comportamento dell'aggiornamento del nucleo di Greengrass
<a name="ota-update-behavior-nucleus"></a>

<a name="component-patch-update"></a>Quando si distribuisce un componente, AWS IoT Greengrass installa le ultime versioni supportate di tutte le dipendenze del componente. Per questo motivo, le nuove versioni patch dei componenti pubblici AWS forniti potrebbero essere distribuite automaticamente sui dispositivi principali se si aggiungono nuovi dispositivi a un gruppo di oggetti o si aggiorna la distribuzione destinata a tali dispositivi. Alcuni aggiornamenti automatici, come un aggiornamento Nucleus, possono causare il riavvio imprevisto dei dispositivi. 

Quando la versione del [componente Greengrass nucleus](greengrass-nucleus-component.md) cambia, il software AWS IoT Greengrass Core, che include il nucleo e tutti gli altri componenti del dispositivo, si riavvia per applicare le modifiche. A causa dell'[impatto sui dispositivi principali](#ota-update-considerations) quando il componente nucleus viene aggiornato, potresti voler controllare quando una nuova versione della patch nucleus viene implementata sui tuoi dispositivi. A tal fine, è necessario includere direttamente il componente Greengrass nucleus nella distribuzione. L'inclusione diretta di un componente significa includere una versione specifica di quel componente nella configurazione di distribuzione e non fare affidamento sulle dipendenze dei componenti per distribuire quel componente sui dispositivi. Per ulteriori informazioni sulla definizione delle dipendenze nelle ricette dei componenti, consulta. [Formato della ricetta](component-recipe-reference.md#recipe-format)

Consulta la tabella seguente per comprendere il comportamento di aggiornamento del componente Greengrass nucleus in base alle azioni e alle configurazioni di distribuzione.


| Azione | Configurazione dell'implementazione | Comportamento di aggiornamento di Nucleus | 
| --- | --- | --- | 
| Aggiungi nuovi dispositivi a un gruppo di oggetti destinato a una distribuzione esistente senza modificare la distribuzione. | L'implementazione non include direttamente Greengrass nucleus.La distribuzione include direttamente almeno un componente AWS fornito o include un componente personalizzato che dipende da un componente AWS fornito o dal nucleo Greengrass. | Sui nuovi dispositivi, installa la versione patch più recente di nucleus che soddisfa tutti i requisiti di dipendenza dei componenti.Sui dispositivi esistenti, non aggiorna la versione installata del nucleus. | 
| Aggiungi nuovi dispositivi a un gruppo di oggetti destinato a una distribuzione esistente senza modificare la distribuzione. |  L'implementazione include direttamente una versione specifica del nucleo Greengrass.  | Sui nuovi dispositivi, installa la versione del nucleo specificata.Sui dispositivi esistenti, non aggiorna la versione installata del nucleus. | 
| Crea una nuova distribuzione o modifica una distribuzione esistente. | L'implementazione non include direttamente Greengrass nucleus.La distribuzione include direttamente almeno un componente AWS fornito o include un componente personalizzato che dipende da un componente AWS fornito o dal nucleo Greengrass. | Su tutti i dispositivi interessati, installa la versione patch più recente del nucleus che soddisfa tutti i requisiti di dipendenza dai componenti, inclusi tutti i nuovi dispositivi aggiunti al gruppo di oggetti di destinazione. | 
| Crea una nuova distribuzione o modifica una distribuzione esistente. | L'implementazione include direttamente una versione specifica del nucleo Greengrass. | Su tutti i dispositivi di destinazione, installa la versione di nucleus specificata, inclusi tutti i nuovi dispositivi aggiunti al gruppo di oggetti di destinazione.  | 

## Esegui un aggiornamento OTA
<a name="create-ota-update"></a>

Per eseguire un aggiornamento OTA, [crea una distribuzione](create-deployments.md) che includa il [componente nucleus](greengrass-nucleus-component.md) e la versione da installare.

# Disinstalla il software AWS IoT Greengrass Core
<a name="uninstall-greengrass-core-v2"></a>

Puoi disinstallare il software AWS IoT Greengrass Core per rimuoverlo da un dispositivo che non desideri utilizzare come dispositivo principale Greengrass. Puoi anche utilizzare questi passaggi per ripulire un'installazione che non va a buon fine.

**Per disinstallare il software AWS IoT Greengrass Core**

1. Se si esegue il software come servizio di sistema, è necessario interrompere, disabilitare e rimuovere il servizio. Eseguite i seguenti comandi in base al sistema operativo in uso.

------
#### [ Linux ]

   1. Arresta il servizio .

      ```
      sudo systemctl stop greengrass.service
      ```

   1. Disabilita il servizio.

      ```
      sudo systemctl disable greengrass.service
      ```

   1. Rimuovi il servizio.

      ```
      sudo rm /etc/systemd/system/greengrass.service
      ```

   1. Verifica che il servizio sia stato eliminato.

      ```
      sudo systemctl daemon-reload && sudo systemctl reset-failed
      ```

------
#### [ Windows (Command Prompt) ]

**Nota**  
È necessario eseguire il prompt dei comandi come amministratore per eseguire questi comandi.

   1. Arresta il servizio .

      ```
      sc stop "greengrass"
      ```

   1. Disabilita il servizio.

      ```
      sc config "greengrass" start=disabled
      ```

   1. Rimuovi il servizio.

      ```
      sc delete "greengrass"
      ```

   1. Riavviare il dispositivo.

------
#### [ Windows (PowerShell) ]

**Nota**  
È necessario eseguire PowerShell l'esecuzione come amministratore per eseguire questi comandi.

   1. Arresta il servizio .

      ```
      Stop-Service -Name "greengrass"
      ```

   1. Disabilita il servizio.

      ```
      Set-Service -Name "greengrass" -Status stopped -StartupType disabled
      ```

   1. Rimuovi il servizio.
      + Per PowerShell 6.0 e versioni successive:

        ```
        Remove-Service -Name "greengrass" -Confirm:$false -Verbose
        ```
      + Per PowerShell le versioni precedenti alla 6.0:

        ```
        Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\greengrass | Remove-Item -Force -Verbose
        ```

   1. Riavviare il dispositivo.

------

1. Rimuovi la cartella principale dal dispositivo. Sostituisci `/greengrass/v2` o *C:\$1greengrass\$1v2* con il percorso della cartella principale.

------
#### [ Linux ]

   ```
   sudo rm -rf /greengrass/v2
   ```

------
#### [ Windows (Command Prompt) ]

   ```
   rmdir /s /q C:\greengrass\v2
   ```

------
#### [ Windows (PowerShell) ]

   ```
   cmd.exe /c "rmdir /s /q C:\greengrass\v2"
   ```

------

1. Elimina il dispositivo principale dal AWS IoT Greengrass servizio. Questo passaggio rimuove le informazioni sullo stato del dispositivo principale da Cloud AWS. Assicurati di completare questo passaggio se prevedi di reinstallare il software AWS IoT Greengrass Core su un dispositivo principale con lo stesso nome.
   + Per eliminare un dispositivo principale dalla AWS IoT Greengrass console, procedi come segue:

     1. <a name="navigate-greengrass-console"></a>Passare alla [console AWS IoT Greengrass](https://console.aws.amazon.com/greengrass).

     1. Scegli **Dispositivi principali**.

     1. Scegli il dispositivo principale da eliminare.

     1. Scegli **Elimina**.

     1. Nella modalità di conferma, scegli **Elimina**.
   + Per eliminare un dispositivo principale con AWS Command Line Interface, utilizzate l'[DeleteCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_DeleteCoreDevice.html)operazione. Eseguite il comando seguente e *MyGreengrassCore* sostituitelo con il nome del dispositivo principale.

     ```
     aws greengrassv2 delete-core-device --core-device-thing-name MyGreengrassCore
     ```