

Avviso di fine del supporto: il 7 ottobre 2026, AWS il supporto per. AWS IoT Greengrass Version 1 Dopo il 7 ottobre 2026, non potrai più accedere alle risorse. AWS IoT Greengrass V1 Per ulteriori informazioni, visita [Migrate](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html) from. AWS IoT Greengrass Version 1

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

# Configura il AWS IoT Greengrass core
<a name="gg-core"></a>

Un AWS IoT Greengrass core è un AWS IoT oggetto (dispositivo) che funge da hub o gateway in ambienti edge. Come gli altri AWS IoT dispositivi, nel registro esiste un core, dispone di un'ombra del dispositivo e utilizza un certificato del dispositivo per l'autenticazione con AWS IoT Core e AWS IoT Greengrass. Il dispositivo core esegue il software AWS IoT Greengrass Core, che consente di gestire i processi locali per i gruppi Greengrass, come la comunicazione, la sincronizzazione shadow e lo scambio di token.

Il software AWS IoT Greengrass Core offre le seguenti funzionalità:<a name="ggc-software-features"></a>
+ Distribuzione ed esecuzione locale di connettori e funzioni Lambda.
+ Elabora i flussi di dati localmente con esportazioni automatiche verso. Cloud AWS
+ Messaggistica MQTT sulla rete locale tra dispositivi, connettori e funzioni Lambda utilizzando abbonamenti gestiti.
+ Messaggistica MQTT tra AWS IoT dispositivi, connettori e funzioni Lambda utilizzando abbonamenti gestiti.
+ Connessioni sicure tra dispositivi e Cloud AWS utilizzo dell'autenticazione e dell'autorizzazione dei dispositivi.
+ Sincronizzazione shadow locale dei dispositivi. Le ombre possono essere configurate per la sincronizzazione con. Cloud AWS
+ Accesso controllato alle risorse volume e dispositivo locali.
+ Distribuzione di modelli di machine learning formati nel cloud per l'esecuzione di un'inferenza locale.
+ Rilevamento automatico dell'indirizzo IP che permette ai dispositivi di scoprire il dispositivo Greengrass core.
+ Distribuzione centralizzata di una configurazione del gruppo, nuova o aggiornata. Dopo il download dei dati di configurazione, il dispositivo core viene riavviato automaticamente.
+ Aggiornamenti software sicuri over-the-air (OTA) delle funzioni Lambda definite dall'utente.
+ Archiviazione sicura e crittografata dei segreti locali e accesso controllato tramite connettori e funzioni Lambda.

## AWS IoT Greengrass file di configurazione principale
<a name="config-json"></a>

Il file di configurazione per il software AWS IoT Greengrass Core è`config.json`. Si trova nella directory `/greengrass-root/config`.

**Nota**  
*greengrass-root*rappresenta il percorso in cui il software AWS IoT Greengrass Core è installato sul dispositivo. In genere, questa è la directory `/greengrass`.  
Se si utilizza l'opzione di **creazione del gruppo predefinito** dalla AWS IoT Greengrass console, il `config.json` file viene distribuito sul dispositivo principale in uno stato funzionante.

 È possibile rivedere i contenuti di questo file eseguendo il seguente comando:

```
cat /greengrass-root/config/config.json
```

Di seguito è riportato un esempio del file `config.json`. Questa è la versione generata quando crei il core dalla AWS IoT Greengrass console.

------
#### [ GGC v1.11 ]

```
{
    "coreThing": {
        "caPath": "root.ca.pem",
        "certPath": "hash.cert.pem",
        "keyPath": "hash.private.key",
        "thingArn": "arn:partition:iot:region:account-id:thing/core-thing-name",
        "iotHost": "host-prefix-ats.iot.region.amazonaws.com",
        "ggHost": "greengrass-ats.iot.region.amazonaws.com",
        "keepAlive": 600,
        "ggDaemonPort": 8000,
        "systemComponentAuthTimeout": 5000
    },
    "runtime": {
        "maxWorkItemCount": 1024,
        "maxConcurrentLimit": 25,
        "lruSize": 25,
        "mountAllBlockDevices": "no",
        "cgroup": {
            "useSystemd": "yes"
        }
    },
    "managedRespawn": false,
    "crypto": {
        "principals": {
            "SecretsManager": {
                "privateKeyPath": "file:///greengrass/certs/hash.private.key"
            },
            "IoTCertificate": {
                "privateKeyPath": "file:///greengrass/certs/hash.private.key",
                "certificatePath": "file:///greengrass/certs/hash.cert.pem"
            }
        },
        "caPath": "file:///greengrass/certs/root.ca.pem"
    },
    "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory",
    "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory"
}
```

Il file `config.json` supporta le seguenti proprietà:

**coreThing**


| Campo | Description | Note | 
| --- | --- | --- | 
| <a name="shared-config-capath"></a>caPath |  Il percorso della CA AWS IoT principale relativo alla `/greengrass-root/certs` directory.  |  Per la compatibilità con le versioni precedenti alla 1.7.0. Questa proprietà viene ignorata quando l'oggetto è presente. `crypto`  Assicurati che gli [endpoint corrispondano al tipo di certificato](#certificate-endpoints).   | 
| <a name="shared-config-certpath"></a>certPath |  Il percorso del certificato del dispositivo core relativo alla directory `/greengrass-root/certs`.  | Per la retrocompatibilità con le versioni precedenti alla 1.7.0. Questa proprietà viene ignorata quando l'oggetto è presente. crypto | 
| <a name="shared-config-keypath"></a>keyPath | Il percorso della chiave privata core relativa alla directory /greengrass-root/certs. | Per la compatibilità con le versioni precedenti alla 1.7.0. Questa proprietà viene ignorata quando l'oggetto è presente. crypto | 
| <a name="shared-config-thingarn"></a>thingArn | L'Amazon Resource Name (ARN) dell' AWS IoT elemento che rappresenta il dispositivo AWS IoT Greengrass principale. | Trova l'ARN per il tuo core nella AWS IoT Greengrass console sotto Cores o eseguendo il comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html)CLI. | 
| <a name="shared-config-iothost-v1.9"></a>iotHost | Il tuo endpoint. AWS IoT  |  Trova l'endpoint nella AWS IoT console in **Impostazioni** o eseguendo il comando [https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html)CLI. Questo comando restituisce l'endpoint Amazon Trust Services (ATS). Per ulteriori informazioni, consulta la documentazione [Autenticazione del server](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html).  Assicurati che gli [endpoint corrispondano al tipo di certificato](#certificate-endpoints). Assicurati che i tuoi [endpoint corrispondano ai](https://docs.aws.amazon.com/general/latest/gr/greengrass.html) tuoi. Regione AWS   | 
| <a name="shared-config-gghost-v1.9"></a>ggHost | Il tuo AWS IoT Greengrass endpoint. |  Questo è l'endpoint `iotHost` con il prefisso host sostituito da *greengrass* (ad esempio, `greengrass-ats.iot.region.amazonaws.com`). Usa lo stesso Regione AWS di. `iotHost`  Assicurati che gli [endpoint corrispondano al tipo di certificato](#certificate-endpoints). Assicurati che i tuoi [endpoint corrispondano ai](https://docs.aws.amazon.com/general/latest/gr/greengrass.html) tuoi. Regione AWS   | 
| <a name="shared-config-iotmqttport"></a>iotMqttPort | Opzionale. Il numero di porta da utilizzare per la comunicazione MQTT con AWS IoT. | I valori validi sono 8883 e 443. Il valore predefinito è 8883. Per ulteriori informazioni, consulta [Connessione alla porta 443 o tramite un proxy di rete](#alpn-network-proxy). | 
| <a name="shared-config-iothttpport"></a>iotHttpPort | Opzionale. Il numero di porta utilizzato per creare le connessioni HTTPS a AWS IoT. | I valori validi sono 8443 e 443. Il valore predefinito è 8443. Per ulteriori informazioni, consulta [Connessione alla porta 443 o tramite un proxy di rete](#alpn-network-proxy). | 
| <a name="shared-config-ggmqttport"></a>ggMqttPort | Opzionale. Il numero di porta da utilizzare per la comunicazione MQTT sulla rete locale. | I valori validi sono compresi tra 1024 e 65535. Il valore predefinito è 8883. Per ulteriori informazioni, consulta [Configurazione della porta MQTT per la messaggistica locale](#config-local-mqtt-port). | 
| <a name="shared-config-gghttpport"></a>ggHttpPort | Opzionale. Il numero di porta utilizzato per creare le connessioni HTTPS al servizio AWS IoT Greengrass . | I valori validi sono 8443 e 443. Il valore predefinito è 8443. Per ulteriori informazioni, consulta [Connessione alla porta 443 o tramite un proxy di rete](#alpn-network-proxy). | 
| <a name="shared-config-keepalive"></a>keepAlive | Opzionale. Il periodo MQTT KeepAlive in secondi. | L'intervallo valido è 30-1200 secondi. Il valore predefinito è 600. | 
| <a name="shared-config-networkproxy"></a>networkProxy | Opzionale. Un oggetto che definisce un server proxy a cui connettersi. | Il server proxy può essere HTTP o HTTPS. Per ulteriori informazioni, consulta [Connessione alla porta 443 o tramite un proxy di rete](#alpn-network-proxy). | 
| <a name="config-mqttOperationTimeout-v1.11.0"></a>mqttOperationTimeout | Opzionale. La quantità di tempo (in secondi) per consentire al core Greengrass di completare un'operazione di pubblicazione, sottoscrizione o annullamento dell'iscrizione nelle connessioni MQTT a AWS IoT Core. | Il valore predefinito è 5. Il valore minimo è 5. | 
| <a name="shared-conifg-ggDaemonPort"></a>ggDaemonPort | Opzionale. Il numero di porta IPC principale di Greengrass. |  Questa proprietà è disponibile nella versione AWS IoT Greengrass 1.11.0 o successiva. I valori validi sono compresi tra 1024 e 65535. Il valore predefinito è 8000.  | 
| <a name="shared-config-systemComponentAuthTimeout"></a>systemComponentAuthTimeout | Opzionale. Il tempo (in millisecondi) necessario per consentire all'IPC principale di Greengrass di completare l'autenticazione. |  Questa proprietà è disponibile nella versione 1.11.0 o successiva. AWS IoT Greengrass  I valori validi sono compresi tra 500 e 5000. Il valore predefinito è 5000.  | 

**runtime**


| Campo | Description | Note | 
| --- |--- |--- |
| maxWorkItemCount | Opzionale. Il numero massimo di elementi di lavoro che il daemon Greengrass può elaborare alla volta. Gli elementi di lavoro che superano questo limite vengono ignorati. La coda degli elementi di lavoro è condivisa dai componenti di sistema, dalle funzioni Lambda definite dall'utente e dai connettori. | Il valore predefinito è 1024. Il valore massimo è limitato dall'hardware del dispositivo. L'aumento di questo valore aumenta la memoria utilizzata. AWS IoT Greengrass È possibile aumentare questo valore se si prevede che il core riceverà un intenso traffico di messaggi MQTT.  | 
| maxConcurrentLimit | Opzionale. Il numero massimo di worker Lambda non bloccati simultaneamente che il demone Greengrass può avere. È possibile specificare un numero intero diverso per sovrascrivere questo parametro. | Il valore predefinito è 25. Il valore minimo è definito da`lruSize`.  | 
| lruSize | Opzionale. Definisce il valore minimo permaxConcurrentLimit. | Il valore predefinito è 25. | 
| mountAllBlockDevices | Opzionale. Consente di AWS IoT Greengrass utilizzare i bind mount per montare tutti i dispositivi a blocchi in un contenitore dopo aver configurato OverlayFS. |  Questa proprietà è disponibile nella AWS IoT Greengrass versione 1.11.0 o successiva. I valori validi sono `yes` e `no`. Il valore predefinito è `no`. Imposta questo valore su `yes` se la tua `/usr` directory non si trova sotto la gerarchia. `/` | 
| postStartHealthCheckTimeout | Opzionale. Il tempo (in millisecondi) dopo l'avvio che il daemon Greengrass attende per il completamento del controllo dello stato. | Il timeout predefinito è 30 secondi (30000 ms). | 
| `cgroup` | 
| --- |
| useSystemd | Indica se il dispositivo utilizza [https://en.wikipedia.org/wiki/Systemd](https://en.wikipedia.org/wiki/Systemd). | I valori validi sono yes e no. Esegui lo script check\$1ggc\$1dependencies nel [Modulo 1](module1.md) per visualizzare se il dispositivo usa systemd. | 

**crypto**

`crypto` contiene proprietà che supportano lo storage di chiavi private in un modulo di sicurezza hardware (HSM) tramite PKCS\$111 e storage segreti locali. Per ulteriori informazioni, consultare [AWS IoT Greengrass principi di sicurezza fondamentali](gg-sec.md#gg-principals), [Integrazione della sicurezza hardware](hardware-security.md) e [Implementa i segreti fino al nucleo AWS IoT Greengrass](secrets.md). Sono supportate le configurazioni per l'archiviazione delle chiavi private su HSMs o nel file system.


| Campo | Description | Note | 
| --- |--- |--- |
| caPath |  Il percorso assoluto verso la CA AWS IoT principale.  |  Deve essere un URI di file nel formato: `file:///absolute/path/to/file`.  Assicurati che gli [endpoint corrispondano al tipo di certificato](#certificate-endpoints).   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  Opzionale. Il percorso assoluto del file `.so` del motore OpenSSL per abilitare il supporto PKCS\$111 su OpenSSL.  |  Deve essere un percorso di un file nel file system. Questa proprietà è obbligatoria se si utilizza l'agente di aggiornamento OTA Greengrass con sicurezza hardware. Per ulteriori informazioni, consulta [Configura il supporto per gli aggiornamenti over-the-air](hardware-security.md#hardware-security-ota-updates).  | 
| P11Provider |  Il percorso assoluto della libreria libdl-loadable dell'implementazione PKCS\$111.  |  Deve essere un percorso di un file nel file system.  | 
| slotLabel |  L'etichetta dello slot utilizzata per identificare il modulo hardware.  |  Deve essere conforme alle specifiche dell'etichetta PKCS\$111.  | 
| slotUserPin |  Il PIN utente utilizzato per autenticare il core Greengrass nel modulo.  |  Deve disporre delle autorizzazioni sufficienti a eseguire C\$1Sign con le chiavi private configurate.  | 
| `principals` | 
| --- |
| IoTCertificate | Il certificato e la chiave privata che il core utilizza per effettuare le richieste a AWS IoT. | 
| IoTCertificate  .privateKeyPath  |  Il percorso della chiave privata del core.  |  Per lo storage di file system, deve essere un URI di file nel formato: `file:///absolute/path/to/file`. Per lo storage HSM, deve essere un percorso [PKCS\$111 RFC 7512](https://tools.ietf.org/html/rfc7512) che specifica l'etichetta dell'oggetto.  | 
| IoTCertificate  .certificatePath |  Il percorso assoluto al certificato del dispositivo core.  |  Deve essere un URI di file nel formato: `file:///absolute/path/to/file`.  | 
| MQTTServerCertificate |  Opzionale. La chiave privata che il core utilizza insieme al certificato per fungere da gateway o server MQTT.  | 
| MQTTServerCertificate  .privateKeyPath |  Il percorso della chiave privata del server MQTT locale.  |  Utilizza questo valore per specificare la tua chiave privata del server MQTT locale. Per lo storage di file system, deve essere un URI di file nel formato: `file:///absolute/path/to/file`. Per lo storage HSM, deve essere un percorso [PKCS\$111 RFC 7512](https://tools.ietf.org/html/rfc7512) che specifica l'etichetta dell'oggetto. Se questa proprietà viene omessa, AWS IoT Greengrass ruota la chiave in base alle impostazioni di rotazione. Se viene specificata, il cliente sarà responsabile della rotazione della chiave.  | 
| SecretsManager | La chiave privata che protegge la chiave di dati utilizzata per la crittografia. Per ulteriori informazioni, consulta [Implementa i segreti fino al nucleo AWS IoT Greengrass](secrets.md). | 
| SecretsManager  .privateKeyPath |  Il percorso della chiave privata del Secrets Manager locale.  |  Solo una chiave RSA è supportata. Per lo storage di file system, deve essere un URI di file nel formato: `file:///absolute/path/to/file`. Per lo storage HSM, deve essere un percorso [PKCS\$111 RFC 7512](https://tools.ietf.org/html/rfc7512) che specifica l'etichetta dell'oggetto. La chiave privata deve essere generata utilizzando il meccanismo di padding [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313).  | 

Sono supportate anche le seguenti proprietà di configurazione:


****  

| Campo | Description | Note | 
| --- | --- | --- | 
| <a name="shared-config-mqttmaxconnectionretryinterval"></a> mqttMaxConnectionRetryInterval  |  Opzionale. L'intervallo massimo (in secondi) tra tentativi di connessione MQTT se la connessione viene interrotta.  |  Specifica questo valore come numero intero senza segno. Il valore predefinito è `60`.  | 
| <a name="shared-config-managedrespawn"></a> managedRespawn  |  Opzionale. Indica che l'agente OTA deve eseguire il codice personalizzato prima di un aggiornamento.  |  I valori validi sono `true` e `false`. Per ulteriori informazioni, consulta [Aggiornamenti OTA del software AWS IoT Greengrass Core](core-ota-update.md).  | 
| <a name="shared-config-writedirectory"></a> writeDirectory  |  Opzionale. La directory di scrittura in cui vengono AWS IoT Greengrass create tutte le read/write risorse.  |  Per ulteriori informazioni, consulta [Configura una directory di scrittura per AWS IoT Greengrass](#write-directory).  | 
| <a name="shared-config-piddirectory"></a>pidFileDirectory |  Facoltativo. AWS IoT Greengrass memorizza il relativo ID di processo (PID) in questa directory.  |  Il valore predefinito è `/var/run`.  | 

------
#### [ Extended life versions ]

Le seguenti versioni del software AWS IoT Greengrass Core sono in [fase di estensione della vita utile](maintenance-policy.md). Queste informazioni sono incluse solo per riferimento.

GGC v1.10  

```
{
  "coreThing" : {
    "caPath" : "root.ca.pem",
    "certPath" : "hash.cert.pem",
    "keyPath" : "hash.private.key",
    "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name",
    "iotHost" : "host-prefix-ats.iot.region.amazonaws.com",
    "ggHost" : "greengrass-ats.iot.region.amazonaws.com",
    "keepAlive" : 600,
    "systemComponentAuthTimeout": 5000
  },
  "runtime" : {
    "maxWorkItemCount" : 1024,
    "maxConcurrentLimit" : 25,
    "lruSize": 25,
    "cgroup" : {
      "useSystemd" : "yes"
    }
  },
  "managedRespawn" : false,
  "crypto" : {
    "principals" : {
      "SecretsManager" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key"
      },
      "IoTCertificate" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key",
        "certificatePath" : "file:///greengrass/certs/hash.cert.pem"
      } 
    },
    "caPath" : "file:///greengrass/certs/root.ca.pem"
  }
}
```
Il file `config.json` supporta le seguenti proprietà:  
**coreThing**      
<a name="config-json-properties-corething-v1.9"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**crypto**  
`crypto` contiene proprietà che supportano lo storage di chiavi private in un modulo di sicurezza hardware (HSM) tramite PKCS\$111 e storage segreti locali. Per ulteriori informazioni, consultare [AWS IoT Greengrass principi di sicurezza fondamentali](gg-sec.md#gg-principals), [Integrazione della sicurezza hardware](hardware-security.md) e [Implementa i segreti fino al nucleo AWS IoT Greengrass](secrets.md). Sono supportate le configurazioni per l'archiviazione delle chiavi private sul HSMs o nel file system.      
<a name="config-crypto"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
Sono supportate anche le seguenti proprietà di configurazione:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

GGC v1.9  

```
{
  "coreThing" : {
    "caPath" : "root.ca.pem",
    "certPath" : "hash.cert.pem",
    "keyPath" : "hash.private.key",
    "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name",
    "iotHost" : "host-prefix-ats.iot.region.amazonaws.com",
    "ggHost" : "greengrass-ats.iot.region.amazonaws.com",
    "keepAlive" : 600
  },
  "runtime" : {
    "cgroup" : {
      "useSystemd" : "yes"
    }
  },
  "managedRespawn" : false,
  "crypto" : {
    "principals" : {
      "SecretsManager" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key"
      },
      "IoTCertificate" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key",
        "certificatePath" : "file:///greengrass/certs/hash.cert.pem"
      } 
    },
    "caPath" : "file:///greengrass/certs/root.ca.pem"
  }
}
```
Il file `config.json` supporta le seguenti proprietà:  
**coreThing**      
<a name="config-json-properties-corething-v1.9"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**crypto**  
L'oggetto `crypto` è aggiunto nella v1.7.0. Introduce proprietà che supportano lo storage di chiavi private in un modulo di sicurezza hardware (HSM) tramite PKCS\$111 e storage segreti locali. Per ulteriori informazioni, consultare [AWS IoT Greengrass principi di sicurezza fondamentali](gg-sec.md#gg-principals), [Integrazione della sicurezza hardware](hardware-security.md) e [Implementa i segreti fino al nucleo AWS IoT Greengrass](secrets.md). Sono supportate le configurazioni per l'archiviazione delle chiavi private sul HSMs o nel file system.      
<a name="config-crypto"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
Sono supportate anche le seguenti proprietà di configurazione.    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC v1.8**  

```
{
  "coreThing" : {
    "caPath" : "root.ca.pem",
    "certPath" : "hash.cert.pem",
    "keyPath" : "hash.private.key",
    "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name",
    "iotHost" : "host-prefix-ats.iot.region.amazonaws.com",
    "ggHost" : "greengrass-ats.iot.region.amazonaws.com",
    "keepAlive" : 600
  },
  "runtime" : {
    "cgroup" : {
      "useSystemd" : "yes"
    }
  },
  "managedRespawn" : false,
  "crypto" : {
    "principals" : {
      "SecretsManager" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key"
      },
      "IoTCertificate" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key",
        "certificatePath" : "file:///greengrass/certs/hash.cert.pem"
      } 
    },
    "caPath" : "file:///greengrass/certs/root.ca.pem"
  }
}
```
Il `config.json` file supporta le seguenti proprietà.  
**coreThing**      
<a name="config-json-properties-corething-v1.8"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**crypto**  
L'oggetto `crypto` è aggiunto nella v1.7.0. Introduce proprietà che supportano lo storage di chiavi private in un modulo di sicurezza hardware (HSM) tramite PKCS\$111 e storage segreti locali. Per ulteriori informazioni, consultare [AWS IoT Greengrass principi di sicurezza fondamentali](gg-sec.md#gg-principals), [Integrazione della sicurezza hardware](hardware-security.md) e [Implementa i segreti fino al nucleo AWS IoT Greengrass](secrets.md). Sono supportate le configurazioni per l'archiviazione delle chiavi private su HSMs o nel file system.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
Sono supportate anche le seguenti proprietà di configurazione:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC v1.7**  

```
{
  "coreThing" : {
    "caPath" : "root.ca.pem",
    "certPath" : "hash.cert.pem",
    "keyPath" : "hash.private.key",
    "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name",
    "iotHost" : "host-prefix-ats.iot.region.amazonaws.com",
    "ggHost" : "greengrass-ats.iot.region.amazonaws.com",
    "keepAlive" : 600
  },
  "runtime" : {
    "cgroup" : {
      "useSystemd" : "yes"
    }
  },
  "managedRespawn" : false,
  "crypto" : {
    "principals" : {
      "SecretsManager" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key"
      },
      "IoTCertificate" : {
        "privateKeyPath" : "file:///greengrass/certs/hash.private.key",
        "certificatePath" : "file:///greengrass/certs/hash.cert.pem"
      } 
    },
    "caPath" : "file:///greengrass/certs/root.ca.pem"
  }
}
```
Il file `config.json` supporta le seguenti proprietà:  
**coreThing**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
**crypto**  
L'oggetto `crypto` aggiunto nella versione v1.7.0, introduce proprietà che supportano lo storage di chiavi private in un modulo di sicurezza hardware (HSM) tramite PKCS\$111 e storage di segreti locali. Per ulteriori informazioni, consultare [Integrazione della sicurezza hardware](hardware-security.md) e [Implementa i segreti fino al nucleo AWS IoT Greengrass](secrets.md). Sono supportate le configurazioni per l'archiviazione delle chiavi private su HSMs o nel file system.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)
Sono supportate anche le seguenti proprietà di configurazione:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC v1.6**  

```
{
   "coreThing": {
       "caPath": "root-ca-pem",
       "certPath": "cloud-pem-crt",
       "keyPath": "cloud-pem-key",
       "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name",
       "iotHost": "host-prefix.iot.region.amazonaws.com",
       "ggHost": "greengrass.iot.region.amazonaws.com",
       "keepAlive": 600,
       "mqttMaxConnectionRetryInterval": 60
   },
   "runtime": {
       "cgroup": {
           "useSystemd": "yes|no"
       }
   },
   "managedRespawn": true,
   "writeDirectory": "/write-directory"
}
```
Se si utilizza l'opzione di **creazione del gruppo predefinito** dalla AWS IoT Greengrass console, il `config.json` file viene distribuito sul dispositivo principale in uno stato funzionante che specifica la configurazione predefinita.
Il file `config.json` supporta le seguenti proprietà:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC v1.5**  

```
{
   "coreThing": {
       "caPath": "root-ca-pem",
       "certPath": "cloud-pem-crt",
       "keyPath": "cloud-pem-key",
       "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name",
       "iotHost": "host-prefix.iot.region.amazonaws.com",
       "ggHost": "greengrass.iot.region.amazonaws.com",
       "keepAlive": 600
   },
   "runtime": {
       "cgroup": {
           "useSystemd": "yes|no"
       }
   },
   "managedRespawn": true
}
```
Il file `config.json` esiste in `/greengrass-root/config` e contiene i parametri seguenti:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC v1.3**  

```
{
   "coreThing": {
       "caPath": "root-ca-pem",
       "certPath": "cloud-pem-crt",
       "keyPath": "cloud-pem-key",
       "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name",
       "iotHost": "host-prefix.iot.region.amazonaws.com",
       "ggHost": "greengrass.iot.region.amazonaws.com",
       "keepAlive": 600
   },
   "runtime": {
       "cgroup": {
           "useSystemd": "yes|no"
       }
   },
   "managedRespawn": true
}
```
Il file `config.json` esiste in `/greengrass-root/config` e contiene i parametri seguenti:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC v1.1**  

```
{
   "coreThing": {
       "caPath": "root-ca-pem",
       "certPath": "cloud-pem-crt",
       "keyPath": "cloud-pem-key",
       "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name",
       "iotHost": "host-prefix.iot.region.amazonaws.com",
       "ggHost": "greengrass.iot.region.amazonaws.com",
       "keepAlive": 600
   },
   "runtime": {
       "cgroup": {
           "useSystemd": "yes|no"
       }
   }
}
```
Il file `config.json` esiste in `/greengrass-root/config` e contiene i parametri seguenti:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

**GGC 1.0**  
In AWS IoT Greengrass Core v1.0, `config.json` viene distribuito su. `greengrass-root/configuration`  

```
{
   "coreThing": {
       "caPath": "root-ca-pem",
       "certPath": "cloud-pem-crt",
       "keyPath": "cloud-pem-key",
       "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name",
       "iotHost": "host-prefix.iot.region.amazonaws.com",
       "ggHost": "greengrass.iot.region.amazonaws.com",
       "keepAlive": 600
   },
   "runtime": {
       "cgroup": {
           "useSystemd": "yes|no"
       }
   }
}
```
Il file `config.json` esiste in `/greengrass-root/configuration` e contiene i parametri seguenti:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)

------

## Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale
<a name="certificate-endpoints"></a>

 AWS IoT Greengrass Gli endpoint AWS IoT Core e gli endpoint devono corrispondere al tipo di certificato del certificato CA principale sul dispositivo. Se gli endpoint e il tipo di certificato non corrispondono, i tentativi di autenticazione tra il dispositivo e AWS IoT Core o hanno esito negativo. AWS IoT Greengrass Per ulteriori informazioni, consulta [Autenticazione del server](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html) nella *Guida per gli sviluppatori di AWS IoT *.

Se il tuo dispositivo utilizza un certificato CA root di Amazon Trust Services (ATS), che è il metodo preferito, deve utilizzare anche gli endpoint ATS per la gestione dei dispositivi e le operazioni del piano dati di rilevamento. Gli endpoint ATS includono il `ats` segmento, come illustrato nella seguente sintassi per l'endpoint. AWS IoT Core 

```
prefix-ats.iot.region.amazonaws.com
```

**Nota**  
Per motivi di compatibilità con le versioni precedenti, AWS IoT Greengrass attualmente supporta i certificati e gli endpoint CA VeriSign root legacy in alcuni casi. Regione AWS Se utilizzi un certificato CA VeriSign radice legacy, ti consigliamo di creare un endpoint ATS e utilizzare invece un certificato CA radice ATS. Altrimenti utilizza i corrispondenti endpoint legacy. Per ulteriori informazioni, consulta [Endpoint legacy supportati](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#greengrass-legacy-endpoints) nella *Riferimenti generali di Amazon Web Services*.

### Endpoint in config.json
<a name="certificate-endpoints-config"></a>

Su un dispositivo principale di Greengrass, gli endpoint sono specificati nell'oggetto `coreThing` nel [`config.json`](#config-json) file. La `iotHost` proprietà rappresenta l' AWS IoT Core endpoint. La `ggHost` proprietà rappresenta l' AWS IoT Greengrass endpoint. In questo frammento di esempio, le proprietà specificano gli endpoint ATS.

```
{
  "coreThing" : {
    ...
    "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com",
    "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
    ...
  },
```

**AWS IoT Core endpoint**  
Puoi ottenere il tuo AWS IoT Core endpoint eseguendo il comando [https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html)CLI con il `--endpoint-type` parametro appropriato.  
+ Per restituire un endpoint firmato con ATS, esegui:

  ```
  aws iot describe-endpoint --endpoint-type iot:Data-ATS
  ```
+ Per restituire un endpoint VeriSign firmato legacy, esegui:

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

**AWS IoT Greengrass endpoint**  
*Il tuo AWS IoT Greengrass endpoint è il tuo `iotHost` endpoint con il prefisso host sostituito da greengrass.* Ad esempio, l'endpoint firmato con ATS è `greengrass-ats.iot.region.amazonaws.com`. Questo utilizza la stessa regione dell'endpoint. AWS IoT Core 

## Connessione alla porta 443 o tramite un proxy di rete
<a name="alpn-network-proxy"></a>

Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.7 e versioni successive.

I core Greengrass comunicano AWS IoT Core utilizzando il protocollo di messaggistica MQTT con l'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 l'indirizzamento di tutto il traffico a un proxy HTTP prima della connessione a Internet.

Per abilitare la comunicazione in questi scenari, AWS IoT Greengrass consente le seguenti configurazioni:
+ **MQTT con autenticazione client TLS sulla porta 443**. Se la rete in uso consente connessioni alla porta 443, è possibile configurare il core in modo da utilizzare la porta 443 anziché la porta predefinita 8883 per il traffico MQTT. Si può trattare di una connessione diretta alla porta 443 o di una connessione tramite un server proxy di rete.

  AWS IoT Greengrass utilizza l'estensione TLS [Application Layer Protocol Network](https://tools.ietf.org/html/rfc7301) (ALPN) per abilitare questa connessione. Come per la configurazione predefinita, sulla porta 443 il protocollo MQTT su TLS utilizza l'autenticazione client basata sul certificato.

  Se configurato per utilizzare una connessione diretta alla porta 443, il core supporta [gli aggiornamenti over-the-air (OTA)](core-ota-update.md) per il software. AWS IoT Greengrass Questo supporto richiede AWS IoT Greengrass Core v1.9.3 o versione successiva.
+ **Comunicazione HTTPS tramite** la porta 443. AWS IoT Greengrass invia il traffico HTTPS sulla porta 8443 per impostazione predefinita, ma è possibile configurarlo per utilizzare la porta 443.
+ **Connessione tramite un proxy di rete**. Puoi configurare un server proxy di rete in modo che funga da intermediario per la connessione al core Greengrass. Sono supportati solo l'autenticazione di base e i proxy HTTP e HTTPS.

  La configurazione del proxy viene passata alle funzioni Lambda definite dall'utente tramite `http_proxy` le variabili di `https_proxy` ambiente, `no_proxy` e. Le funzioni Lambda definite dall'utente devono utilizzare queste impostazioni passate per connettersi tramite il proxy. Le librerie comuni utilizzate dalle funzioni Lambda per effettuare connessioni (come boto3 o cURL e pacchetti `requests` python) in genere utilizzano queste variabili di ambiente per impostazione predefinita. Se una funzione Lambda specifica anche queste stesse variabili di ambiente, AWS IoT Greengrass non le sovrascrive.
**Importante**  
I dispositivi Greengrass Core che sono configurati per utilizzare un proxy di rete non supportano [aggiornamenti OTA](core-ota-update.md).<a name="config-mqtt-port"></a>

**Per configurare MQTT sulla porta 443**

Questa funzionalità richiede AWS IoT Greengrass Core v1.7 o versione successiva.

Questa procedura consente al core Greengrass di utilizzare la porta 443 per la messaggistica MQTT con AWS IoT Core.

1. Eseguite il seguente comando per arrestare il demone Greengrass:

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. Apri `greengrass-root/config/config.json` per la modifica come utente su.

1. Nell'oggetto `coreThing`, aggiungere la proprietà `iotMqttPort` e impostare il valore su **443**, come mostrato nel seguente esempio.

   ```
   {
       "coreThing" : {
           "caPath" : "root.ca.pem",
           "certPath" : "12345abcde.cert.pem",
           "keyPath" : "12345abcde.private.key",
           "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name",
           "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
           "iotMqttPort" : 443,
           "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
           "keepAlive" : 600
       },
       ...
   }
   ```

1. Avvia il daemon.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

 <a name="config-http-port"></a>

**Per configurare HTTPS sulla porta 443**

Questa funzionalità richiede AWS IoT Greengrass Core v1.8 o versione successiva.

Questa procedura consente di configurare il core per utilizzare la porta 443 per la comunicazione HTTPS.

1. Eseguite il seguente comando per arrestare il demone Greengrass:

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. Apri `greengrass-root/config/config.json` per la modifica come utente su.

1. Nell'oggetto `coreThing`, aggiungere le proprietà `iotHttpPort` e `ggHttpPort`, come mostrato nel seguente esempio.

   ```
   {
       "coreThing" : {
           "caPath" : "root.ca.pem",
           "certPath" : "12345abcde.cert.pem",
           "keyPath" : "12345abcde.private.key",
           "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name",
           "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
           "iotHttpPort" : 443,
           "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
           "ggHttpPort" : 443,
           "keepAlive" : 600
       },
       ...
   }
   ```

1. Avvia il daemon.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

 <a name="config-network-proxy"></a>

**Per configurare un proxy di rete**

Questa funzionalità richiede AWS IoT Greengrass Core v1.7 o versione successiva.

Questa procedura consente di AWS IoT Greengrass connettersi a Internet tramite un proxy di rete HTTP o HTTPS.

1. Eseguite il seguente comando per arrestare il demone Greengrass:

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. Apri `greengrass-root/config/config.json` per la modifica come utente su.

1. Nell'oggetto `coreThing`, aggiungere l'oggetto [networkProxy](#networkProxy-object) come mostrato nel seguente esempio.

   ```
   {
       "coreThing" : {
           "caPath" : "root.ca.pem",
           "certPath" : "12345abcde.cert.pem",
           "keyPath" : "12345abcde.private.key",
           "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name",
           "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
           "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
           "keepAlive" : 600,
           "networkProxy": {
               "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com",
               "proxy" : {
                   "url" : "https://my-proxy-server:1100",
                   "username" : "Mary_Major",
                   "password" : "pass@word1357"
               }
           }
       },
       ...
   }
   ```

1. Avvia il daemon.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

**oggetto networkProxy**

Utilizza l'oggetto `networkProxy` per specificare le informazioni sul proxy di rete. Questo oggetto ha le proprietà seguenti.


| Campo | Description | 
| --- | --- | 
| noProxyAddresses |  Opzionale. Un elenco separato da virgole di indirizzi IP o nomi host esenti dal proxy.  | 
| proxy |  Il proxy a cui connettersi. Un proxy ha le seguenti proprietà. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/gg-core.html)  | 

### Consentire gli endpoint
<a name="allow-endpoints-proxy"></a>

La comunicazione tra i dispositivi Greengrass AWS IoT Core e/o AWS IoT Greengrass deve essere autenticata. Questa autenticazione si basa su certificati di dispositivo X.509 registrati e chiavi crittografiche. Per consentire alle richieste autenticate di passare attraverso i proxy senza crittografia aggiuntiva, consentire i seguenti endpoint.


| Endpoint | Porta | Description | 
| --- | --- | --- | 
| greengrass.region.amazonaws.com | 443 |  Utilizzato per controllare le operazioni del piano per la gestione dei gruppi.  | 
| `prefix-ats.iot.region.amazonaws.com` or `prefix.iot.region.amazonaws.com` | MQTT: 8883 o 443 HTTPS: 8443 o 443 |  Utilizzato per operazioni del piano dei dati per la gestione dei dispositivi, ad esempio la sincronizzazione shadow. Consenti l'uso di uno o entrambi gli endpoint, a seconda che i tuoi dispositivi core e client utilizzino certificati CA root di Amazon Trust Services (preferiti), certificati CA root legacy o entrambi. Per ulteriori informazioni, consulta [Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale](#certificate-endpoints).  | 
| `greengrass-ats.iot.region.amazonaws.com` or `greengrass.iot.region.amazonaws.com` | 8443 o 443 |  Utilizzato per operazioni di rilevamento dispositivo. Consenti l'uso di uno o entrambi gli endpoint, a seconda che i tuoi dispositivi core e client utilizzino certificati CA root di Amazon Trust Services (preferiti), certificati CA root legacy o entrambi. Per ulteriori informazioni, consulta [Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale](#certificate-endpoints).  I client che si connettono alla porta 443 devono implementare l'estensione TLS [Application Layer Protocol Negotiation (ALPN)](https://tools.ietf.org/html/rfc7301) e passare `x-amzn-http-ca` come in. `ProtocolName` `ProtocolNameList` *Per ulteriori informazioni, consulta [Protocols](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) nella Developer Guide.AWS IoT *   | 
| \$1.s3.amazonaws.com | 443 |  Utilizzato per operazioni di distribuzione e over-the-air aggiornamenti. Questo formato include il carattere `*` perché i prefissi endpoint vengono controllati internamente e potrebbero cambiare in qualsiasi momento.  | 
| logs.region.amazonaws.com | 443 |  Richiesto se il gruppo Greengrass viene configurato per scrivere i log in CloudWatch.  | 

## Configura una directory di scrittura per AWS IoT Greengrass
<a name="write-directory"></a>

Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.6 e versioni successive.

Per impostazione predefinita, il software AWS IoT Greengrass Core viene distribuito in un'unica directory principale in cui AWS IoT Greengrass esegue tutte le operazioni di lettura e scrittura. Tuttavia, è possibile configurare l'utilizzo AWS IoT Greengrass di una directory separata per tutte le operazioni di scrittura, inclusa la creazione di directory e file. In questo caso, AWS IoT Greengrass utilizza due directory di primo livello:
+ La directory *greengrass-root*, che può essere lasciata in lettura/scrittura o essere resa, se necessario, di sola lettura. Contiene il software AWS IoT Greengrass Core e altri componenti critici che dovrebbero rimanere immutabili durante il runtime, come certificati e. `config.json`
+ La directory di scrittura specificata. Contiene contenuti scrivibili, come registri, informazioni sullo stato e funzioni Lambda definite dall'utente distribuite.

Questa configurazione determina la seguente struttura di directory.

**Directory principale Greengrass**  

```
greengrass-root/
|-- certs/
|   |-- root.ca.pem
|   |-- hash.cert.pem
|   |-- hash.private.key
|   |-- hash.public.key
|-- config/
|   |-- config.json
|-- ggc/
|   |-- packages/
|       |-- package-version/
|           |-- bin/
|               |-- daemon 
|           |-- greengrassd
|           |-- lambda/
|           |-- LICENSE/
|           |-- release_notes_package-version.html
|               |-- runtime/
|                   |-- java8/
|                   |-- nodejs8.10/
|                   |-- python3.8/
|   |-- core/
```

**Directory di scrittura**  

```
write-directory/
|-- packages/
|   |-- package-version/
|       |-- ggc_root/
|       |-- rootfs_nosys/
|       |-- rootfs_sys/
|       |-- var/
|-- deployment/
|   |-- group/
|       |-- group.json
|   |-- lambda/
|   |-- mlmodel/
|-- var/
|   |-- log/
|   |-- state/
```

 

**Per configurare una directory di scrittura**

1. Esegui il comando seguente per fermare il demone: AWS IoT Greengrass 

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. Apri `greengrass-root/config/config.json` per la modifica come utente su.

1. Aggiungi `writeDirectory` come parametro e specifica il percorso della directory di destinazione, come mostrato nel seguente esempio.

   ```
   {
       "coreThing": {
           "caPath": "root-CA.pem",
           "certPath": "hash.pem.crt",
           ...
       },
       ...
       "writeDirectory" : "/write-directory"
   }
   ```
**Nota**  
Puoi aggiornare le impostazioni di `writeDirectory` in qualsiasi momento. Dopo l'aggiornamento dell'impostazione, AWS IoT Greengrass utilizza la directory di scrittura appena specificata all'avvio successivo, ma non migra il contenuto dalla directory di scrittura precedente.

1. Ora che la directory di scrittura è configurata, puoi rendere la directory *greengrass-root* di sola lettura. Per maggiori istruzioni, consulta [Come rendere la directory principale Greengrass di sola lettura](#configure-ro-directory).

   Altrimenti, avvia il AWS IoT Greengrass demone:

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

 <a name="configure-ro-directory"></a>

**Per rendere la directory principale di Greengrass di sola lettura**

Seguire queste fasi solo se si desidera rendere la directory principale Greengrass di sola lettura. La directory di scrittura deve essere configurata prima di iniziare.

1. Concedere le autorizzazioni di accesso alle directory richieste:

   1. Fornisci le autorizzazioni di lettura e scrittura al proprietario di `config.json`.

      ```
      sudo chmod 0600 /greengrass-root/config/config.json
      ```

   1. Rendi ggc\$1user il proprietario dei certificati e delle directory Lambda del sistema.

      ```
      sudo chown -R ggc_user:ggc_group /greengrass-root/certs/
      sudo chown -R ggc_user:ggc_group /greengrass-root/ggc/packages/1.11.6/lambda/
      ```
**Nota**  
Gli account ggc\$1user e ggc\$1group vengono utilizzati di default per eseguire le funzioni Lambda di sistema. Se hai configurato l'[identità di accesso predefinita](lambda-group-config.md#lambda-access-identity-groupsettings) a livello di gruppo per utilizzare account differenti, è consigliabile concedere le autorizzazioni a tali utente (UID) e gruppo (GID).

1. Rendi la directory *greengrass-root* di sola lettura utilizzando il meccanismo preferito.
**Nota**  
Un modo per rendere la directory *greengrass-root* di sola lettura è montare la directory come di sola lettura. Tuttavia, per applicare gli aggiornamenti over-the-air (OTA) al software AWS IoT Greengrass Core in una directory montata, la directory deve prima essere smontata e poi rimontata dopo l'aggiornamento. Puoi aggiungere queste operazioni `umount` e `mount` agli script `ota_pre_update` e `ota_post_update`. Per ulteriori informazioni sugli aggiornamenti OTA, consulta [Agente di aggiornamento OTA di Greengrass](core-ota-update.md#ota-agent) e [Rigenerazione gestita con aggiornamenti OTA](core-ota-update.md#ota-managed-respawn).

1. Avvia il daemon.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

   Se le autorizzazioni della fase 1 non sono state impostate correttamente, il daemon non verrà avviato.

## Configurazione delle impostazioni MQTT
<a name="configure-mqtt"></a>

Nell' AWS IoT Greengrass ambiente, i dispositivi client locali, le funzioni Lambda, i connettori e i componenti di sistema possono comunicare tra loro e con. AWS IoT Core Tutta la comunicazione passa attraverso il core, che gestisce le [sottoscrizioni](gg-sec.md#gg-msg-workflow) che autorizzano la comunicazione MQTT tra entità.

Per informazioni sulle impostazioni MQTT che è possibile configurare AWS IoT Greengrass, consulta le seguenti sezioni:
+ [Messaggio di qualità del servizio](#message-quality-of-service)
+ [Coda di messaggi MQTT per destinazioni sul cloud](#mqtt-message-queue)
+ [Sessioni persistenti MQTT con AWS IoT Core](#mqtt-persistent-sessions)
+ [Client IDs per connessioni MQTT con AWS IoT](#connection-client-id)
+ [Porta MQTT per la messaggistica locale](#config-local-mqtt-port)
+ [Timeout per le operazioni di pubblicazione, sottoscrizione e annullamento dell'iscrizione nelle connessioni MQTT con Cloud AWS](#mqtt-operation-timeout)

**Nota**  
<a name="sitewise-connector-opcua-support"></a>OPC-UA è uno standard di scambio di informazioni per la comunicazione industriale. [Per implementare il supporto per OPC-UA sul core Greengrass, puoi utilizzare il connettore IoT. SiteWise ](iot-sitewise-connector.md) Il connettore invia i dati dei dispositivi industriali dai server OPC-UA alle proprietà degli asset in. AWS IoT SiteWise

### Messaggio di qualità del servizio
<a name="message-quality-of-service"></a>

AWS IoT Greengrass supporta i livelli di qualità del servizio (QoS) 0 o 1, a seconda della configurazione, dell'obiettivo e della direzione della comunicazione. Il core Greengrass funge da client per la comunicazione AWS IoT Core e broker di messaggi per la comunicazione sulla rete locale.

![\[Il core come client e broker messaggi locale.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/mqtt-qos.png)


Per ulteriori informazioni su MQTT e QoS, [vedere Guida introduttiva](https://mqtt.org/getting-started/) sul sito Web MQTT.

**Comunicazione con Cloud AWS**  
+ **I messaggi in uscita utilizzano QoS 1**

  Il core invia messaggi destinati Cloud AWS agli obiettivi utilizzando QoS 1. AWS IoT Greengrass utilizza una coda di messaggi MQTT per elaborare questi messaggi. Se il recapito del messaggio non è confermato da AWS IoT, il messaggio viene spoolerato per essere riprovato in un secondo momento. Il messaggio non può essere riprovato se la coda è piena. La conferma del recapito del messaggio può aiutare a ridurre al minimo la perdita di dati dovuta alla connettività intermittente.

  Poiché i messaggi in uscita AWS IoT utilizzano QoS 1, la velocità massima con cui il core Greengrass può inviare messaggi dipende dalla latenza tra il core e. AWS IoT Ogni volta che il core invia un messaggio, attende che lo AWS IoT confermi prima di inviare il messaggio successivo. Ad esempio, se il tempo di andata e ritorno tra il core e il suo Regione AWS è di 50 millisecondi, il core può inviare fino a 20 messaggi al secondo. Considerate questo comportamento quando scegliete il punto di connessione del core Regione AWS . Per importare dati IoT ad alto volume su Cloud AWS, puoi utilizzare [stream](stream-manager.md) manager.

  Per ulteriori informazioni sulla coda di messaggi MQTT, incluso come configurare una cache di archiviazione locale in grado di rendere persistenti i messaggi destinati alle destinazioni, vedere. Cloud AWS [Coda di messaggi MQTT per destinazioni sul cloud](#mqtt-message-queue)
+ **I messaggi in entrata utilizzano QoS 0 (predefinito) o QoS 1**

  Per impostazione predefinita, il core si iscrive con QoS 0 ai messaggi Cloud AWS provenienti dalle sorgenti. Se si abilitano sessioni persistenti, il core effettua la sottoscrizione con QoS 1. Ciò consente di ridurre al minimo la perdita di dati causata dall'instabilità della connessione. Per gestire il QoS per queste sottoscrizioni, configura le impostazioni di persistenza sul componente di sistema di spooler locale.

  Per ulteriori informazioni, incluso come consentire al core di stabilire una sessione persistente con Cloud AWS obiettivi, vedere. [Sessioni persistenti MQTT con AWS IoT Core](#mqtt-persistent-sessions)

**Comunicazione con target locali**  
Tutte le comunicazioni locali utilizzano QoS 0. [Il core tenta di inviare un messaggio a una destinazione locale, che può essere una funzione Greengrass Lambda, un connettore o un dispositivo client.](what-is-gg.md#greengrass-devices) Il core non archivia i messaggi né conferma la consegna. I messaggi possono essere rimossi ovunque tra i componenti.  
Sebbene la comunicazione diretta tra le funzioni Lambda non utilizzi la messaggistica MQTT, il comportamento è lo stesso.

### Coda di messaggi MQTT per destinazioni sul cloud
<a name="mqtt-message-queue"></a>

I messaggi MQTT destinati alle destinazioni vengono messi in coda in Cloud AWS attesa dell'elaborazione. I messaggi in coda vengono elaborati in ordine FIFO (first-in-first-out). Dopo l'elaborazione e la pubblicazione di un messaggio su AWS IoT Core, il messaggio viene rimosso dalla coda.

Per impostazione predefinita, il core Greengrass archivia in memoria i messaggi non elaborati destinati alle destinazioni. Cloud AWS Puoi configurare il core per archiviare invece i messaggi non elaborati in una cache di storage locale. A differenza dell'archiviazione in memoria, la cache di archiviazione locale ha la capacità di persistere anche dopo i riavvii principali (ad esempio, dopo una distribuzione di gruppo o il riavvio di un dispositivo), quindi AWS IoT Greengrass può continuare a elaborare i messaggi. È anche possibile configurare le dimensioni dello storage.

**avvertimento**  
Il core Greengrass potrebbe mettere in coda messaggi MQTT duplicati quando perde la connessione, perché tenta nuovamente un'operazione di pubblicazione prima che il client MQTT rilevi che è offline. Per evitare la duplicazione dei messaggi MQTT per gli obiettivi cloud, configura il valore del core a meno della metà del suo `keepAlive` valore. `mqttOperationTimeout` Per ulteriori informazioni, consulta [AWS IoT Greengrass file di configurazione principale](#config-json).

AWS IoT Greengrass utilizza il componente del sistema spooler (la funzione `GGCloudSpooler` Lambda) per gestire la coda dei messaggi. Puoi utilizzare le seguenti variabili di ambiente `GGCloudSpooler` per configurare le impostazioni di storage.
+ **GG\$1CONFIG\$1STORAGE\$1TYPE**. La posizione della coda di messaggi. I seguenti valori sono validi:
  + `FileSystem`. Archivia i messaggi non elaborati nella cache di archiviazione locale sul disco del dispositivo principale fisico. In caso di riavvio core, i messaggi in coda vengono conservati per l'elaborazione. I messaggi vengono rimossi dopo essere stati elaborati.
  + `Memory` (impostazione predefinita). Archivia i messaggi non elaborati in memoria. In caso di riavvio del core, i messaggi in coda vengono persi.

    Questa opzione è ottimizzata per dispositivi con funzionalità hardware limitate. Quando si utilizza questa configurazione, consigliamo di distribuire gruppi o riavviare il dispositivo nel momento in cui l'interruzione di servizio non crea particolari problemi.
+ **GG\$1CONFIG\$1MAX\$1SIZE\$1BYTES**. Le dimensioni dello storage, in byte. Questo valore può essere qualsiasi numero intero non negativo **maggiore o uguale a 262144** (256 KB); una dimensione inferiore impedisce l' AWS IoT Greengrass avvio del software Core. Le dimensioni predefinite sono di 2,5 MB. Quando viene raggiunto il limite di dimensioni, i messaggi in coda più vecchi vengono sostituiti da nuovi messaggi.

**Nota**  
Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.6 e versioni successive. Le versioni precedenti utilizzavano l'archiviazione in memoria con una dimensione della coda di 2,5 MB. Non è possibile configurare le impostazioni di storage per le versioni precedenti.

#### Come aggiungere i messaggi alla cache nello storage locale
<a name="configure-local-storage-cache"></a>

È possibile AWS IoT Greengrass configurare la memorizzazione nella cache dei messaggi nel file system in modo che persistano anche dopo i riavvii principali. A tale scopo, distribuisci una versione di definizione della funzione in cui la funzione `GGCloudSpooler` imposta il tipo di storage su `FileSystem`. È necessario utilizzare l' AWS IoT Greengrass API per configurare la cache di archiviazione locale. Questa operazione può essere eseguita nella console.

La procedura seguente utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html)CLI per configurare lo spooler per salvare i messaggi in coda nel file system. Configura anche una coda di 2,6 MB.

1. <a name="get-group-id-latestversion"></a>Ottieni il gruppo Greengrass IDs di destinazione e la versione del gruppo. Questa procedura presuppone che questa sia la versione più recente del gruppo e del gruppo. La seguente query restituisce il gruppo creato più di recente.

   ```
   aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
   ```

   In alternativa, puoi eseguire query in base al nome. I nomi dei gruppi non devono essere univoci, pertanto potrebbero essere restituiti più gruppi.

   ```
   aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
   ```
**Nota**  
<a name="find-group-ids-console"></a>Puoi trovare questi valori anche nella AWS IoT console. L'ID gruppo viene visualizzato nella pagina **Settings (Impostazioni)** del gruppo. IDs Le versioni del gruppo vengono visualizzate nella scheda **Distribuzioni del gruppo.**

1. <a name="copy-group-id-latestversion"></a>Copiare i valori `Id` e `LatestVersion` dal gruppo target nell'output.

1. <a name="get-latest-group-version"></a>Ottieni la versione gruppo più recente.
   + Sostituisci l’*group-id* con l’`Id` copiato.
   + Sostituisci l’*latest-group-version-id* con l’`LatestVersion` copiato.

   ```
   aws greengrass get-group-version \
   --group-id group-id \
   --group-version-id latest-group-version-id
   ```

1. <a name="copy-group-component-arns-except-function"></a>Dall'`Definition`oggetto nell'output, copia il `CoreDefinitionVersionArn` e il ARNs di tutti gli altri componenti del gruppo tranne. `FunctionDefinitionVersionArn` Si usano questi valori quando si crea una nuova versione gruppo.

1. <a name="parse-function-def-id"></a>Da `FunctionDefinitionVersionArn` nell'output, copia l'ID della definizione della funzione. L'ID è il GUID che segue il segmento `functions` nell'ARN, come mostrato nell'esempio seguente.

   ```
   arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
   ```
**Nota**  
In alternativa, è possibile creare una definizione di funzione eseguendo il [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html)comando e quindi copiando l'ID dall'output.

1. Aggiungi una versione di definizione della funzione alla definizione della funzione.
   + *function-definition-id*Sostituiscilo con `Id` quello che hai copiato per la definizione della funzione.
   + Sostituire *arbitrary-function-id* con un nome per la funzione, ad esempio**spooler-function**.
   + Aggiungi all'array tutte le funzioni Lambda che desideri includere in questa versione. `functions` È possibile utilizzare il [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html)comando per ottenere le funzioni Greengrass Lambda da una versione di definizione di funzione esistente.
**avvertimento**  
Assicurati di specificare un valore per `GG_CONFIG_MAX_SIZE_BYTES` che sia **maggiore o uguale a 262144**. Una dimensione più piccola impedisce l'avvio del software AWS IoT Greengrass Core.

   ```
   aws greengrass create-function-definition-version \
   --function-definition-id function-definition-id \
   --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
   ```
**Nota**  
Se in precedenza hai impostato la variabile di `GG_CONFIG_SUBSCRIPTION_QUALITY` ambiente per [supportare sessioni persistenti con AWS IoT Core](#mqtt-persistent-sessions), includila in questa istanza di funzione.

1. <a name="copy-function-def-version-arn"></a>Copia l'`Arn` della definizione di funzione dall'output.

1. <a name="create-group-version-with-sys-lambda"></a>Crea una versione di gruppo che contenga la funzione Lambda del sistema.
   + Sostituisci *group-id* con `Id` for the group.
   + Sostituiscilo *core-definition-version-arn* con `CoreDefinitionVersionArn` quello che hai copiato dalla versione più recente del gruppo.
   + Sostituiscilo *function-definition-version-arn* con `Arn` quello che hai copiato per la nuova versione della definizione di funzione.
   + Sostituisci ARNs i componenti degli altri gruppi (ad esempio, `SubscriptionDefinitionVersionArn` o`DeviceDefinitionVersionArn`) che hai copiato dalla versione più recente del gruppo.
   + Rimuovi eventuali parametri inutilizzati. Ad esempio, rimuovi `--resource-definition-version-arn` se la versione gruppo non contiene risorse.

   ```
   aws greengrass create-group-version \
   --group-id group-id \
   --core-definition-version-arn core-definition-version-arn \
   --function-definition-version-arn function-definition-version-arn \
   --device-definition-version-arn device-definition-version-arn \
   --logger-definition-version-arn logger-definition-version-arn \
   --resource-definition-version-arn resource-definition-version-arn \
   --subscription-definition-version-arn subscription-definition-version-arn
   ```

1. <a name="copy-group-version-id"></a>Copia il valore `Version` dall'output. Questo è l'ID della nuova versione gruppo.

1. <a name="create-group-deployment"></a>Distribuisci il gruppo con la nuova versione del gruppo.
   + Sostituiscilo *group-id* con `Id` quello che hai copiato per il gruppo.
   + Sostituisci *group-version-id* con `Version` quello che hai copiato per la nuova versione del gruppo.

   ```
   aws greengrass create-deployment \
   --group-id group-id \
   --group-version-id group-version-id \
   --deployment-type NewDeployment
   ```

 Per aggiornare le impostazioni di archiviazione, si utilizza l' AWS IoT Greengrass API per creare una nuova versione della definizione di funzione che contenga la `GGCloudSpooler` funzione con la configurazione aggiornata. Quindi aggiungi la versione della definizione della funzione a una nuova versione del gruppo (insieme agli altri componenti del gruppo) e distribuisci la versione del gruppo. Se desideri ripristinare la configurazione predefinita, puoi distribuire una versione di definizione della funzione che non include la funzione `GGCloudSpooler`. 

 Questa funzione Lambda di sistema non è visibile nella console. Tuttavia, dopo che la funzione è stata aggiunta all'ultima versione del gruppo, è inclusa nelle distribuzioni eseguite dalla console, a meno che non usi l'API per sostituirla o rimuoverla. 

### Sessioni persistenti MQTT con AWS IoT Core
<a name="mqtt-persistent-sessions"></a>

Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.10 e versioni successive.

Un core Greengrass può stabilire una sessione persistente con il broker di AWS IoT messaggi. Una sessione persistente è una connessione continua che consente al core di ricevere messaggi inviati mentre è offline. Il core è il client nella connessione.

In una sessione persistente, il broker di AWS IoT messaggi salva tutte le sottoscrizioni effettuate dal core durante la connessione. [Se il core si disconnette, il broker di AWS IoT messaggi archivia i messaggi nuovi e non riconosciuti pubblicati come QoS 1 e destinati a destinazioni locali, come le funzioni Lambda e i dispositivi client.](what-is-gg.md#greengrass-devices) Quando il core si riconnette, la sessione persistente viene ripresa e il broker di messaggi invia i AWS IoT messaggi archiviati al core a una velocità massima di 10 messaggi al secondo. Le sessioni persistenti hanno un periodo di scadenza predefinito di 1 ora, che inizia quando il broker messaggi rileva che il core si disconnette. *Per ulteriori informazioni, consulta [Sessioni persistenti MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt-persistent-sessions.html) nella Guida per gli sviluppatori.AWS IoT *

AWS IoT Greengrass utilizza il componente del sistema spooler (la funzione `GGCloudSpooler` Lambda) per creare sottoscrizioni che hanno come origine. AWS IoT Puoi utilizzare la seguente variabile di ambiente `GGCloudSpooler` per configurare sessioni persistenti.
+ **GG\$1CONFIG\$1SUBSCRIPTION\$1QUALITY**. La qualità degli abbonamenti che hanno come fonte. AWS IoT I seguenti valori sono validi:
  + `AtMostOnce` (impostazione predefinita). Disabilita sessioni persistenti. Le sottoscrizione utilizzano QoS 0.
  + `AtLeastOncePersistent`. Abilita sessioni persistenti. Imposta il flag `cleanSession` su `0` nei messaggi `CONNECT` ed effettua la sottoscrizione con QoS 1.

    I messaggi pubblicati con QoS 1 ricevuti dal core raggiungono sicuramente la coda di lavoro in memoria del daemon Greengrass. Il core riconosce il messaggio dopo che è stato aggiunto alla coda. La comunicazione successiva dalla coda alla destinazione locale (ad esempio, la funzione, il connettore o il dispositivo Greengrass Lambda) viene inviata come QoS 0. AWS IoT Greengrass non garantisce la consegna a destinazioni locali.
**Nota**  
È possibile utilizzare la proprietà di configurazione [maxWorkItemCount](#config-json-runtime) per controllare la dimensione della coda degli elementi di lavoro. Ad esempio, puoi aumentare le dimensioni della coda se il carico di lavoro richiede un intenso traffico MQTT.

    Quando le sessioni persistenti sono abilitate, il core apre almeno una connessione aggiuntiva con cui scambiare messaggi MQTT. AWS IoT Per ulteriori informazioni, consulta [Client IDs per connessioni MQTT con AWS IoT](#connection-client-id).

#### Per configurare sessioni persistenti MQTT
<a name="configure-persistent-sessions"></a>

È possibile configurare l'utilizzo AWS IoT Greengrass di sessioni persistenti con AWS IoT Core. A tale scopo, distribuisci una versione di definizione della funzione in cui la funzione `GGCloudSpooler` imposta la qualità della sottoscrizione su `AtLeastOncePersistent`. Questa impostazione si applica a tutte le sottoscrizioni che hanno AWS IoT Core (`cloud`) come origine. È necessario utilizzare l' AWS IoT Greengrass API per configurare le sessioni persistenti. Questa operazione può essere eseguita nella console.

La procedura seguente utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html)CLI per configurare lo spooler per l'utilizzo di sessioni persistenti. In questa procedura si presuppone che si stia aggiornando la configurazione dell'ultima versione di un gruppo esistente.

1. <a name="get-group-id-latestversion"></a>Ottieni il gruppo Greengrass IDs di destinazione e la versione del gruppo. Questa procedura presuppone che questa sia la versione più recente del gruppo e del gruppo. La seguente query restituisce il gruppo creato più di recente.

   ```
   aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
   ```

   In alternativa, puoi eseguire query in base al nome. I nomi dei gruppi non devono essere univoci, pertanto potrebbero essere restituiti più gruppi.

   ```
   aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
   ```
**Nota**  
<a name="find-group-ids-console"></a>Puoi trovare questi valori anche nella AWS IoT console. L'ID gruppo viene visualizzato nella pagina **Settings (Impostazioni)** del gruppo. IDs Le versioni del gruppo vengono visualizzate nella scheda **Distribuzioni del gruppo.**

1. <a name="copy-group-id-latestversion"></a>Copiare i valori `Id` e `LatestVersion` dal gruppo target nell'output.

1. <a name="get-latest-group-version"></a>Ottieni la versione gruppo più recente.
   + Sostituisci l’*group-id* con l’`Id` copiato.
   + Sostituisci l’*latest-group-version-id* con l’`LatestVersion` copiato.

   ```
   aws greengrass get-group-version \
   --group-id group-id \
   --group-version-id latest-group-version-id
   ```

1. <a name="copy-group-component-arns-except-function"></a>Dall'`Definition`oggetto nell'output, copia il `CoreDefinitionVersionArn` e il ARNs di tutti gli altri componenti del gruppo tranne. `FunctionDefinitionVersionArn` Si usano questi valori quando si crea una nuova versione gruppo.

1. <a name="parse-function-def-id"></a>Da `FunctionDefinitionVersionArn` nell'output, copia l'ID della definizione della funzione. L'ID è il GUID che segue il segmento `functions` nell'ARN, come mostrato nell'esempio seguente.

   ```
   arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
   ```
**Nota**  
In alternativa, è possibile creare una definizione di funzione eseguendo il [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html)comando e quindi copiando l'ID dall'output.

1. Aggiungi una versione di definizione della funzione alla definizione della funzione.
   + *function-definition-id*Sostituiscilo con `Id` quello che hai copiato per la definizione della funzione.
   + Sostituire *arbitrary-function-id* con un nome per la funzione, ad esempio**spooler-function**.
   + Aggiungi all'array tutte le funzioni Lambda che desideri includere in questa versione. `functions` È possibile utilizzare il [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html)comando per ottenere le funzioni Greengrass Lambda da una versione di definizione di funzione esistente.

   ```
   aws greengrass create-function-definition-version \
   --function-definition-id function-definition-id \
   --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
   ```
**Nota**  
Se in precedenza hai impostano le variabili di ambiente `GG_CONFIG_STORAGE_TYPE` o `GG_CONFIG_MAX_SIZE_BYTES`per [definire le impostazioni di storage](#mqtt-message-queue), includerle in questa istanza di funzione.

1. <a name="copy-function-def-version-arn"></a>Copia l'`Arn` della definizione di funzione dall'output.

1. <a name="create-group-version-with-sys-lambda"></a>Crea una versione di gruppo che contenga la funzione Lambda del sistema.
   + Sostituisci *group-id* con `Id` for the group.
   + Sostituiscilo *core-definition-version-arn* con `CoreDefinitionVersionArn` quello che hai copiato dalla versione più recente del gruppo.
   + Sostituiscilo *function-definition-version-arn* con `Arn` quello che hai copiato per la nuova versione della definizione di funzione.
   + Sostituisci ARNs i componenti degli altri gruppi (ad esempio, `SubscriptionDefinitionVersionArn` o`DeviceDefinitionVersionArn`) che hai copiato dalla versione più recente del gruppo.
   + Rimuovi eventuali parametri inutilizzati. Ad esempio, rimuovi `--resource-definition-version-arn` se la versione gruppo non contiene risorse.

   ```
   aws greengrass create-group-version \
   --group-id group-id \
   --core-definition-version-arn core-definition-version-arn \
   --function-definition-version-arn function-definition-version-arn \
   --device-definition-version-arn device-definition-version-arn \
   --logger-definition-version-arn logger-definition-version-arn \
   --resource-definition-version-arn resource-definition-version-arn \
   --subscription-definition-version-arn subscription-definition-version-arn
   ```

1. <a name="copy-group-version-id"></a>Copia il valore `Version` dall'output. Questo è l'ID della nuova versione gruppo.

1. <a name="create-group-deployment"></a>Distribuisci il gruppo con la nuova versione del gruppo.
   + Sostituiscilo *group-id* con `Id` quello che hai copiato per il gruppo.
   + Sostituisci *group-version-id* con `Version` quello che hai copiato per la nuova versione del gruppo.

   ```
   aws greengrass create-deployment \
   --group-id group-id \
   --group-version-id group-version-id \
   --deployment-type NewDeployment
   ```

1. (Facoltativo) Aumentate la proprietà [maxWorkItemCount](#config-json-runtime) nel file di configurazione principale. Questo consente al core di gestire l'aumento del traffico MQTT e la comunicazione con i target locali.

 Per aggiornare il core con queste modifiche alla configurazione, utilizzate l' AWS IoT Greengrass API per creare una nuova versione della definizione della funzione che contenga la `GGCloudSpooler` funzione con la configurazione aggiornata. Quindi aggiungi la versione della definizione della funzione a una nuova versione del gruppo (insieme agli altri componenti del gruppo) e distribuisci la versione del gruppo. Se desideri ripristinare la configurazione predefinita, puoi creare una versione di definizione della funzione che non include la funzione `GGCloudSpooler`. 

 Questa funzione Lambda di sistema non è visibile nella console. Tuttavia, dopo che la funzione è stata aggiunta all'ultima versione del gruppo, è inclusa nelle distribuzioni eseguite dalla console, a meno che non usi l'API per sostituirla o rimuoverla. 

### Client IDs per connessioni MQTT con AWS IoT
<a name="connection-client-id"></a>

Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.8 e versioni successive.

Il core Greengrass apre le connessioni MQTT AWS IoT Core per operazioni come la sincronizzazione degli shadow e la gestione dei certificati. Per queste connessioni, il core genera un client prevedibile in IDs base al nome dell'oggetto principale. [Il client prevedibile IDs può essere utilizzato con funzionalità di monitoraggio, controllo e determinazione dei prezzi, inclusi AWS IoT Device Defender gli eventi del ciclo di vita.AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html) È inoltre possibile creare una logica attorno a un client prevedibile IDs (ad esempio, modelli di [policy di sottoscrizione](https://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html#pub-sub-policy-cert) basati sugli attributi del certificato).

------
#### [ GGC v1.9 and later ]

Due componenti del sistema Greengrass aprono connessioni MQTT con. AWS IoT Core Questi componenti utilizzano i seguenti modelli per generare il client IDs per le connessioni.


| Operation | Modello ID client | 
| --- | --- | 
| Distribuzioni | `core-thing-name` Ad esempio: `MyCoreThing` Utilizza questo ID client per connetterti, scollegarti, sottoscrivere e annullare la sottoscrizione delle notifiche di eventi del ciclo di vita. | 
| Sottoscrizioni |  `core-thing-name-cn` Ad esempio: `MyCoreThing-c01` `n`è un numero intero che inizia da 00 e aumenta con ogni nuova connessione fino a un numero massimo di 250. Il numero di connessioni è determinato dal numero di dispositivi con cui sincronizzano il proprio stato ombra AWS IoT Core (massimo 2.500 per gruppo) e dal numero di abbonamenti che hanno `cloud` come origine nel gruppo (massimo 10.000 per gruppo). Il componente del sistema spooler si connette AWS IoT Core per scambiare messaggi per abbonamenti con una sorgente o una destinazione cloud. Lo spooler funge anche da proxy per lo scambio di messaggi tra il servizio shadow locale AWS IoT Core e il gestore dei certificati del dispositivo.  | 

Per calcolare il numero di connessioni MQTT per gruppo, utilizzate la seguente formula:

`number of MQTT connections per group = number of connections for Deployment Agent + number of connections for Subscriptions`

Dove,
+ numero di connessioni per Deployment Agent = 1.
+ numero di connessioni per gli abbonamenti =`(2 subscriptions for supporting certificate generation + number of MQTT topics in AWS IoT Core + number of device shadows synced) / 50`.
  + Dove, `50` = il numero massimo di abbonamenti che è AWS IoT Core possibile supportare per connessione.

**Nota**  
Se abiliti [le sessioni persistenti](#mqtt-persistent-sessions) per l'abbonamento con AWS IoT Core, il core apre almeno una connessione aggiuntiva da utilizzare in una sessione persistente. I componenti di sistema non supportano sessioni persistenti, quindi non possono condividere tale connessione.

Per ridurre il numero di connessioni MQTT e contribuire a ridurre i costi, puoi utilizzare le funzioni Lambda locali per aggregare i dati sull'edge. Quindi invii i dati aggregati a. Cloud AWS Di conseguenza, si utilizzano meno argomenti MQTT in. AWS IoT Core Per ulteriori informazioni, consulta la sezione [Prezzi di AWS IoT Greengrass](https://aws.amazon.com/greengrass/pricing/).

------
#### [ GGC v1.8 ]

Alcuni componenti di sistema Greengrass aprono le connessioni MQTT con AWS IoT Core. Questi componenti utilizzano i seguenti modelli per generare il client IDs per le connessioni.


| Operation | Modello ID client | 
| --- | --- | 
| Distribuzioni | `core-thing-name` Ad esempio: `MyCoreThing` Utilizza questo ID client per connetterti, scollegarti, sottoscrivere e annullare la sottoscrizione delle notifiche di eventi del ciclo di vita. | 
| Scambio di messaggi MQTT con AWS IoT Core | `core-thing-name-spr` Ad esempio: `MyCoreThing-spr` | 
| Sincronizzazione shadow | `core-thing-name-snn` Ad esempio: `MyCoreThing-s01` `nn` è un intero che inizia da 00 e incrementa a ogni nuova connessione fino a un massimo di 03. Il numero di connessioni è determinato dal numero di dispositivi (massimo 200 dispositivi per gruppo) con cui sincronizzano il proprio stato ombra AWS IoT Core (massimo 50 abbonamenti per connessione). | 
| Gestione dei certificati del dispositivo | `core-thing-name-dcm` Ad esempio: `MyCoreThing-dcm` | 

------

**Nota**  
Il client duplicato IDs utilizzato nelle connessioni simultanee può causare un ciclo infinito di connessione-disconnessione. Ciò può accadere se un altro dispositivo è hardcoded per utilizzare il nome del dispositivo core come ID client nelle connessioni. Per ulteriori informazioni, consulta questa [fase della risoluzione dei problemi](gg-troubleshooting.md#config-client-id).

I dispositivi Greengrass sono anche completamente integrati con il servizio di indicizzazione del parco istanze di AWS IoT Device Management. In questo modo è possibile indicizzare e cercare dispositivi basati su attributi dei dispositivi, stato ombra e stato della connessione nel cloud. Ad esempio, i dispositivi Greengrass stabiliscono almeno una connessione che utilizza il nome dell'oggetto come ID del client, perciò è possibile utilizzare l'indicizzazione della connettività del dispositivo per rilevare quali dispositivi Greengrass sono attualmente collegati a AWS IoT Core o scollegati da esso. *Per ulteriori informazioni, consulta il servizio di [indicizzazione del parco veicoli nella Guida](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html) per gli sviluppatori.AWS IoT *

### Configurazione della porta MQTT per la messaggistica locale
<a name="config-local-mqtt-port"></a>

Questa funzionalità richiede AWS IoT Greengrass Core v1.10 o versione successiva.

[Il core Greengrass funge da broker di messaggi locale per la messaggistica MQTT tra funzioni Lambda locali, connettori e dispositivi client.](what-is-gg.md#greengrass-devices) Per impostazione predefinita, il core utilizza la porta 8883 per il traffico MQTT sulla rete locale. Potrebbe essere opportuno modificare la porta per evitare un conflitto con altro software in esecuzione sulla porta 8883.

**Per configurare il numero di porta utilizzato dal core per il traffico MQTT locale**

1. Eseguite il seguente comando per arrestare il demone Greengrass:

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. Apri `greengrass-root/config/config.json` per la modifica come utente su.

1. Nell'oggetto `coreThing`, aggiungere la proprietà `ggMqttPort` e impostare il valore sul numero di porta che si desidera utilizzare. I valori validi sono compresi tra 1024 e 65535. Nell'esempio seguente il numero di porta viene impostato su `9000`.

   ```
   {
       "coreThing" : {
           "caPath" : "root.ca.pem",
           "certPath" : "12345abcde.cert.pem",
           "keyPath" : "12345abcde.private.key",
           "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name",
           "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
           "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
           "ggMqttPort" : 9000,
           "keepAlive" : 600
       },
       ...
   }
   ```

1. Avvia il daemon.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

1. Se il [rilevamento IP automatico](#ip-auto-detect) è abilitato per il core, la configurazione è completata.

   Se il rilevamento IP automatico non è abilitato, è necessario aggiornare le informazioni di connettività per il core. Ciò consente ai dispositivi client di ricevere il numero di porta corretto durante le operazioni di rilevamento per acquisire le informazioni di connettività di base. È possibile utilizzare la AWS IoT console o l' AWS IoT Greengrass API per aggiornare le informazioni di connettività di base. Per questa procedura, aggiornare solo il numero di porta. L'indirizzo IP locale per il core non cambia.  
**Per aggiornare le informazioni di connettività per il core (console)**  

   1. Nella pagina di configurazione del gruppo, scegli il core Greengrass.

   1. Nella pagina dei dettagli principali, scegli la scheda **Endpoints del broker MQTT**.

   1. **Scegli **Gestisci endpoint**, quindi scegli Aggiungi endpoint** 

   1. Inserisci il tuo attuale indirizzo IP locale e il nuovo numero di porta. Nell'esempio seguente il numero di porta viene impostato su `9000` per l'indirizzo IP `192.168.1.8`.

   1. Rimuovere l'endpoint obsoleto e quindi scegliere **Update (Aggiorna)**  
**Per aggiornare le informazioni di connettività per il core (API)**  
   + Usa l'azione [UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/updateconnectivityinfo-put.html). Nell'esempio seguente viene utilizzato `update-connectivity-info` nella AWS CLI per impostare il numero di porta `9000` per l'indirizzo IP `192.168.1.8`.

     ```
     aws greengrass update-connectivity-info \
         --thing-name "MyGroup_Core" \
         --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
     ```
**Nota**  
Puoi anche configurare la porta utilizzata dal core per la messaggistica MQTT. AWS IoT Core Per ulteriori informazioni, consulta [Connessione alla porta 443 o tramite un proxy di rete](#alpn-network-proxy).

### Timeout per le operazioni di pubblicazione, sottoscrizione e annullamento dell'iscrizione nelle connessioni MQTT con Cloud AWS
<a name="mqtt-operation-timeout"></a>

Questa funzionalità è disponibile nella AWS IoT Greengrass versione 1.10.2 o successiva.

È possibile configurare la quantità di tempo (in secondi) per consentire al core Greengrass di completare un'operazione di pubblicazione, sottoscrizione o annullamento della sottoscrizione nelle connessioni MQTT a AWS IoT Core. È possibile modificare questa impostazione se le operazioni vanno in timeout a causa di vincoli di larghezza di banda o latenza elevata. Per configurare questa impostazione nel file [config.json](#config-json) aggiungere o modificare la proprietà `mqttOperationTimeout` nell'oggetto `coreThing`. Esempio:

```
{
  "coreThing": {
    "mqttOperationTimeout": 10,
    "caPath": "root-ca.pem",
    "certPath": "hash.cert.pem",
    "keyPath": "hash.private.key",
    ...
  },
  ...
}
```

Il timeout predefinito è 5 secondi. Il timeout minimo è di 5 secondi.

## Attivazione del rilevamento automatico dell'IP
<a name="ip-auto-detect"></a>

È possibile configurare AWS IoT Greengrass per consentire ai dispositivi client di un gruppo Greengrass di scoprire automaticamente il core Greengrass. Se abilitato, il core controlla le modifiche ai suoi indirizzi IP. Se un indirizzo cambia, il core pubblica un elenco aggiornato di indirizzi. Questi indirizzi sono resi disponibili ai dispositivi client che fanno parte dello stesso gruppo Greengrass del core.

**Nota**  
La AWS IoT politica per i dispositivi client deve concedere l'`greengrass:Discover`autorizzazione per consentire ai dispositivi di recuperare le informazioni di connettività per il core. Per ulteriori informazioni sull’istruzione di policy, consulta [Autorizzazione alla scoperta](gg-discover-api.md#gg-discover-auth).

Per abilitare questa funzionalità dalla AWS IoT Greengrass console, scegli **Rilevamento automatico** quando distribuisci il tuo gruppo Greengrass per la prima volta. Puoi anche abilitare o disabilitare questa funzionalità nella pagina di configurazione del gruppo scegliendo la scheda **Funzioni Lambda** e selezionando il rilevatore **IP**. Il rilevamento automatico degli IP è abilitato se è selezionata l'opzione **Rileva automaticamente e sostituisci gli endpoint del broker MQTT**.

Per gestire il rilevamento automatico con l' AWS IoT Greengrass API, è necessario configurare la funzione Lambda `IPDetector` del sistema. La procedura seguente mostra come utilizzare il comando [ create-function-definition-version](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html)CLI per configurare il rilevamento automatico del core Greengrass.

1. <a name="get-group-id-latestversion"></a>Ottieni il gruppo Greengrass IDs di destinazione e la versione del gruppo. Questa procedura presuppone che questa sia la versione più recente del gruppo e del gruppo. La seguente query restituisce il gruppo creato più di recente.

   ```
   aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
   ```

   In alternativa, puoi eseguire query in base al nome. I nomi dei gruppi non devono essere univoci, pertanto potrebbero essere restituiti più gruppi.

   ```
   aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
   ```
**Nota**  
<a name="find-group-ids-console"></a>Puoi trovare questi valori anche nella AWS IoT console. L'ID gruppo viene visualizzato nella pagina **Settings (Impostazioni)** del gruppo. IDs Le versioni del gruppo vengono visualizzate nella scheda **Distribuzioni del gruppo.**

1. <a name="copy-group-id-latestversion"></a>Copiare i valori `Id` e `LatestVersion` dal gruppo target nell'output.

1. <a name="get-latest-group-version"></a>Ottieni la versione gruppo più recente.
   + Sostituisci l’*group-id* con l’`Id` copiato.
   + Sostituisci l’*latest-group-version-id* con l’`LatestVersion` copiato.

   ```
   aws greengrass get-group-version \
   --group-id group-id \
   --group-version-id latest-group-version-id
   ```

1. <a name="copy-group-component-arns-except-function"></a>Dall'`Definition`oggetto nell'output, copia il `CoreDefinitionVersionArn` e il ARNs di tutti gli altri componenti del gruppo tranne. `FunctionDefinitionVersionArn` Si usano questi valori quando si crea una nuova versione gruppo.

1. Da `FunctionDefinitionVersionArn` nell'output, copia l'ID della definizione della funzione e la versione della definizione della funzione:

   ```
   arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id
   ```
**Nota**  
È anche possibile creare una definizione di funzione eseguendo il comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html) e quindi copiare l'ID dall'output.

1.  Usa il comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html) per ottenere lo stato della definizione corrente. Utilizzate quelli *function-definition-id* che avete copiato per la definizione della funzione. Ad esempio, *4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3*. 

   ```
   aws greengrass get-function-definition-version
   --function-definition-id function-definition-id
   --function-definition-version-id function-definition-version-id
   ```

    Prendi nota delle configurazioni della funzione elencate. Dovrai includerle al momento della creazione di una nuova versione della definizione della funzione per evitare di perdere le impostazioni della definizione corrente. 

1.  Aggiungi una versione di definizione della funzione alla definizione della funzione. 
   + Sostituisci *function-definition-id* con quello `Id` che hai copiato per la definizione della funzione. Ad esempio, *4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3*.
   + Sostituire *arbitrary-function-id* con un nome per la funzione, ad esempio**auto-detection-function**.
   + Aggiungi all'`functions`array tutte le funzioni Lambda che desideri includere in questa versione, come quelle elencate nel passaggio precedente.

   ```
   aws greengrass create-function-definition-version \
   --function-definition-id function-definition-id \
   --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\
   --region us-west-2
   ```

1. <a name="copy-function-def-version-arn"></a>Copia l'`Arn` della definizione di funzione dall'output.

1. <a name="create-group-version-with-sys-lambda"></a>Crea una versione di gruppo che contenga la funzione Lambda del sistema.
   + Sostituisci *group-id* con `Id` for the group.
   + Sostituiscilo *core-definition-version-arn* con `CoreDefinitionVersionArn` quello che hai copiato dalla versione più recente del gruppo.
   + Sostituiscilo *function-definition-version-arn* con `Arn` quello che hai copiato per la nuova versione della definizione di funzione.
   + Sostituisci ARNs i componenti degli altri gruppi (ad esempio, `SubscriptionDefinitionVersionArn` o`DeviceDefinitionVersionArn`) che hai copiato dalla versione più recente del gruppo.
   + Rimuovi eventuali parametri inutilizzati. Ad esempio, rimuovi `--resource-definition-version-arn` se la versione gruppo non contiene risorse.

   ```
   aws greengrass create-group-version \
   --group-id group-id \
   --core-definition-version-arn core-definition-version-arn \
   --function-definition-version-arn function-definition-version-arn \
   --device-definition-version-arn device-definition-version-arn \
   --logger-definition-version-arn logger-definition-version-arn \
   --resource-definition-version-arn resource-definition-version-arn \
   --subscription-definition-version-arn subscription-definition-version-arn
   ```

1. <a name="copy-group-version-id"></a>Copia il valore `Version` dall'output. Questo è l'ID della nuova versione gruppo.

1. <a name="create-group-deployment"></a>Distribuisci il gruppo con la nuova versione del gruppo.
   + Sostituiscilo *group-id* con `Id` quello che hai copiato per il gruppo.
   + Sostituisci *group-version-id* con `Version` quello che hai copiato per la nuova versione del gruppo.

   ```
   aws greengrass create-deployment \
   --group-id group-id \
   --group-version-id group-version-id \
   --deployment-type NewDeployment
   ```

 Se vuoi immettere manualmente l'indirizzo IP del core Greengrass, puoi completare questo tutorial con un'altra definizione della funzione che non includa la funzione `IPDetector`. Ciò impedirà alla funzione di rilevamento di localizzare e inserire automaticamente l'indirizzo IP principale di Greengrass. 

 Questa funzione Lambda di sistema non è visibile nella console Lambda. Una volta aggiunta all'ultima versione del gruppo, la funzione viene inclusa nelle distribuzioni eseguite dalla console, a meno che non usi l'API per sostituirla o rimuoverla. 

## Configurazione del sistema di inizializzazione per avviare il daemon Greengrass
<a name="start-on-boot"></a>

È buona norma impostare il sistema di inizializzazione in modo tale che il lancio del daemon Greengrass avvenga all'avvio, soprattutto in caso di gestione di grandi gruppi di dispositivi.

**Nota**  
Se in passato `apt` installavi il software AWS IoT Greengrass Core, puoi usare gli script systemd per abilitare l'avvio all'avvio. Per ulteriori informazioni, consulta [Utilizzare gli script systemd per gestire il ciclo di vita del daemon Greengrass](install-ggc.md#ggc-package-manager-systemd).

Esistono diversi tipi di sistema di inizializzazione, ad esempio initd, systemd e SystemV, i quali utilizzano parametri di configurazione simili. L'esempio seguente è un file di servizio per systemd. Il parametro `Type` è impostato su `forking` perché greengrassd (che viene utilizzato per avviare Greengrass) biforca il processo del daemon Greengrass, mentre il parametro `Restart` è impostato su `on-failure` per indirizzare systemd in modo tale da riavviare Greengrass se Greengrass presenta uno stato di errore.

**Nota**  
Per vedere se il dispositivo utilizza systemd, eseguire lo script `check_ggc_dependencies` come descritto nel [Modulo 1](module1.md). Quindi, per utilizzare systemd fai in modo che il parametro `useSystemd` in [`config.json`](#config-json) sia impostato su `yes`.

```
[Unit]
Description=Greengrass Daemon

[Service]
Type=forking
PIDFile=/var/run/greengrassd.pid
Restart=on-failure
ExecStart=/greengrass/ggc/core/greengrassd start
ExecReload=/greengrass/ggc/core/greengrassd restart
ExecStop=/greengrass/ggc/core/greengrassd stop

[Install]
WantedBy=multi-user.target
```

## Consulta anche
<a name="cores-see-also"></a>
+ [Che cos'è AWS IoT Greengrass?](what-is-gg.md)
+ [Piattaforme supportate e requisiti](what-is-gg.md#gg-platforms)
+ [Iniziare con AWS IoT Greengrass](gg-gs.md)
+ [Panoramica del modello a oggetti di AWS IoT Greengrass gruppo](deployments.md#api-overview)
+ [Integrazione della sicurezza hardware](hardware-security.md)