

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

# Creare distribuzione
<a name="create-deployments"></a>

È possibile creare una distribuzione destinata a un oggetto o a un gruppo di oggetti.

Quando si crea una distribuzione, si configurano i componenti software da distribuire e il modo in cui il processo di distribuzione viene distribuito sui dispositivi di destinazione. È possibile definire la distribuzione nel file JSON fornito a. AWS CLI

L'obiettivo di distribuzione determina i dispositivi su cui si desidera eseguire i componenti. Per eseguire la distribuzione su un dispositivo principale, specifica un elemento. Per eseguire la distribuzione su più dispositivi principali, specificate un gruppo di oggetti che includa tali dispositivi. Per ulteriori informazioni su come configurare i gruppi di oggetti, vedere Thing group [statici e Thing group](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html) [dinamici](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) nella *AWS IoT Developer Guide*.

Segui i passaggi di questa sezione per creare una distribuzione su un target. Per ulteriori informazioni su come aggiornare i componenti software su una destinazione con una distribuzione, consulta[Rivedi le distribuzioni](revise-deployments.md).

**avvertimento**  
L'[CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)operazione può disinstallare componenti dai dispositivi principali. Se un componente è presente nella distribuzione precedente e non in quella nuova, il dispositivo principale disinstalla quel componente. Per evitare la disinstallazione dei componenti, utilizza innanzitutto l'[ListDeployments](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListDeployments.html)operazione per verificare se la destinazione per la distribuzione ha già una distribuzione esistente. Quindi, utilizza l'[GetDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetDeployment.html)operazione per iniziare da quella distribuzione esistente quando ne crei una nuova.

**Per creare una distribuzione (AWS CLI)**

1. Create un file chiamato`deployment.json`, quindi copiate il seguente oggetto JSON nel file. Sostituisci *targetArn* con l'ARN dell' AWS IoT oggetto o del gruppo di oggetti da utilizzare come target per la distribuzione. L'oggetto e il gruppo di ARNs oggetti hanno il seguente formato:
   + Oggetto: `arn:aws:iot:region:account-id:thing/thingName`
   + Gruppo di oggetti: `arn:aws:iot:region:account-id:thinggroup/thingGroupName`

   ```
   {
     "targetArn": "targetArn"
   }
   ```

1. Controlla se il target di distribuzione ha una distribuzione esistente che desideri modificare. Esegui questa operazione:

   1. <a name="revise-deployment-list-deployments-intro"></a>Esegui il comando seguente per elencare le distribuzioni per l'obiettivo di distribuzione. Sostituisci *targetArn* con l'ARN dell' AWS IoT oggetto o del gruppo di oggetti di destinazione.

      ```
      aws greengrassv2 list-deployments --target-arn targetArn
      ```

      La risposta contiene un elenco con la distribuzione più recente per l'obiettivo. Se la risposta è vuota, la destinazione non ha una distribuzione esistente e puoi saltare a[Step 3](#create-deployment-define-name-step). Altrimenti, copia il `deploymentId` codice dalla risposta da utilizzare nel passaggio successivo.
**Nota**  <a name="revise-deployment-list-deployments-revision-note"></a>
Puoi anche modificare una distribuzione diversa dalla revisione più recente per la destinazione. Specificare l'`--history-filter ALL`argomento per elencare tutte le distribuzioni per l'obiettivo. Quindi, copia l'ID della distribuzione che desideri modificare.

   1. <a name="revise-deployment-get-deployment"></a>Esegui il comando seguente per ottenere i dettagli della distribuzione. Questi dettagli includono metadati, componenti e configurazione del processo. Sostituisci *deploymentId* con l'ID del passaggio precedente.

      ```
      aws greengrassv2 get-deployment --deployment-id deploymentId
      ```

      La risposta contiene i dettagli della distribuzione.

   1. Copia una delle seguenti coppie chiave-valore dalla risposta del comando precedente in. `deployment.json` È possibile modificare questi valori per la nuova distribuzione.
      + `deploymentName`— Il nome della distribuzione.
      + `components`— I componenti della distribuzione. Per disinstallare un componente, rimuovilo da questo oggetto.
      + `deploymentPolicies`— Le politiche della distribuzione.
      + `iotJobConfiguration`— La configurazione del lavoro della distribuzione.
      + `tags`— I tag della distribuzione.

1. <a name="create-deployment-define-name-step"></a>(Facoltativo) Definire un nome per la distribuzione. Sostituisci *deploymentName* con il nome della distribuzione.

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName"
   }
   ```

1. Aggiungi ogni componente per distribuire i dispositivi di destinazione. A tale scopo, aggiungete coppie chiave-valore all'`components`oggetto, dove la chiave è il nome del componente e il valore è un oggetto che contiene i dettagli di quel componente. Specificate i seguenti dettagli per ogni componente che aggiungete:
   + `version`— La versione del componente da distribuire.
   + `configurationUpdate`— L'[aggiornamento della configurazione](update-component-configurations.md) da distribuire. L'aggiornamento è un'operazione di patch che modifica la configurazione esistente del componente su ciascun dispositivo di destinazione o la configurazione predefinita del componente se non esiste sul dispositivo di destinazione. È possibile specificare i seguenti aggiornamenti di configurazione:
     + Reset updates (`reset`) — (Facoltativo) Un elenco di puntatori JSON che definiscono i valori di configurazione da ripristinare ai valori predefiniti sul dispositivo di destinazione. Il software AWS IoT Greengrass Core applica gli aggiornamenti di ripristino prima di applicare gli aggiornamenti di fusione. Per ulteriori informazioni, consulta [Reimposta gli aggiornamenti](update-component-configurations.md#reset-configuration-update).
     + Merge updates (`merge`) - (Facoltativo) Un documento JSON che definisce i valori di configurazione da unire al dispositivo di destinazione. È necessario serializzare il documento JSON come stringa. Per ulteriori informazioni, consulta [Unisci gli aggiornamenti](update-component-configurations.md#merge-configuration-update).
   + <a name="component-run-with-config"></a>`runWith`— (Facoltativo) Le opzioni di processo del sistema utilizzate dal software AWS IoT Greengrass Core per eseguire i processi di questo componente sul dispositivo principale. Se omettete un parametro nell'`runWith`oggetto, il software AWS IoT Greengrass Core utilizza i valori predefiniti configurati sul componente [Greengrass](greengrass-nucleus-component.md) nucleus.

     È possibile specificare una delle seguenti opzioni:
     + `posixUser`— L'utente e, facoltativamente, il gruppo del sistema POSIX da utilizzare per eseguire questo componente sui dispositivi core Linux. L'utente e il gruppo, se specificato, devono esistere su ogni dispositivo principale Linux. Specifica l'utente e il gruppo separati da due punti (`:`) nel seguente formato: `user:group`. Il gruppo è facoltativo. Se non si specifica un gruppo, il software AWS IoT Greengrass Core utilizza il gruppo primario per l'utente. Per ulteriori informazioni, consulta [Configurare l'utente che esegue i componenti](configure-greengrass-core-v2.md#configure-component-user).
     + `windowsUser`— L'utente Windows da utilizzare per eseguire questo componente sui dispositivi Windows principali. L'utente deve esistere su ogni dispositivo Windows principale e il nome e la password devono essere memorizzati nell'istanza di Credentials Manager dell' LocalSystem account. Per ulteriori informazioni, consulta [Configurare l'utente che esegue i componenti](configure-greengrass-core-v2.md#configure-component-user).

       Questa funzionalità è disponibile per la versione 2.5.0 e successive del componente [Greengrass](greengrass-nucleus-component.md) nucleus.
     + `systemResourceLimits`— I limiti delle risorse di sistema da applicare ai processi di questo componente. È possibile applicare limiti di risorse di sistema a componenti Lambda generici e non containerizzati. Per ulteriori informazioni, consulta [Configura i limiti delle risorse di sistema per i componenti](configure-greengrass-core-v2.md#configure-component-system-resource-limits).

       È possibile specificare una delle seguenti opzioni:
       + `cpus`— <a name="system-resource-limits-cpu-definition-this"></a>La quantità massima di tempo di CPU che i processi di questo componente possono utilizzare sul dispositivo principale. Il tempo totale della CPU di un dispositivo principale è equivalente al numero di core CPU del dispositivo. Ad esempio, su un dispositivo principale con 4 core CPU, è possibile impostare questo valore in modo da `2` limitare i processi di questo componente al 50% di utilizzo di ciascun core della CPU. Su un dispositivo con 1 core di CPU, puoi impostare questo valore `0.25` per limitare i processi di questo componente al 25 percento di utilizzo della CPU. Se imposti questo valore su un numero maggiore del numero di core della CPU, il software AWS IoT Greengrass Core non limita l'utilizzo della CPU del componente. 
       + `memory`— <a name="system-resource-limits-memory-definition-this"></a>La quantità massima di RAM (in kilobyte) che i processi di questo componente possono utilizzare sul dispositivo principale. 

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

      
**Example Esempio di aggiornamento della configurazione di base**  

   L'`components`oggetto di esempio seguente specifica di distribuire un componente`com.example.PythonRuntime`, che prevede un parametro di configurazione denominato. `pythonVersion`

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.PythonRuntime": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "merge": "{\"pythonVersion\":\"3.7\"}"
         }
       }
     }
   }
   ```  
**Example Esempio di aggiornamento della configurazione con ripristino e unione degli aggiornamenti**  

   Consideriamo un esempio di componente di dashboard industriale con la seguente configurazione predefinita. `com.example.IndustrialDashboard`

   ```
   {
     "name": null,
     "mode": "REQUEST",
     "network": {
       "useHttps": true,
       "port": {
         "http": 80,
         "https": 443
       },
     },
     "tags": []
   }
   ```

   Il seguente aggiornamento della configurazione specifica le seguenti istruzioni:

   1. Reimposta l'impostazione HTTPS al valore predefinito (`true`).

   1. Reimposta l'elenco dei tag industriali su un elenco vuoto.

   1. Unisci un elenco di etichette industriali che identificano i flussi di dati di temperatura e pressione per due caldaie.

   ```
   {
     "reset": [
       "/network/useHttps",
       "/tags"
     ],
     "merge": {
       "tags": [
         "/boiler/1/temperature",
         "/boiler/1/pressure",
         "/boiler/2/temperature",
         "/boiler/2/pressure"
       ]
     }
   }
   ```

   L'`components`oggetto di esempio seguente specifica la distribuzione di questo componente del dashboard industriale e l'aggiornamento della configurazione.

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     }
   }
   ```

1. (Facoltativo) Definire le politiche di distribuzione per la distribuzione. È possibile configurare quando i dispositivi principali possono applicare una distribuzione in sicurezza o cosa fare se un dispositivo principale non riesce ad applicare la distribuzione. A tale scopo, aggiungi un `deploymentPolicies` oggetto e quindi esegui una delle seguenti operazioni: `deployment.json`

   1. (Facoltativo) Specificate la politica di aggiornamento dei componenti (`componentUpdatePolicy`). Questa politica definisce se la distribuzione consente o meno ai componenti di posticipare un aggiornamento finché non sono pronti per l'aggiornamento. Ad esempio, potrebbe essere necessario ripulire le risorse o completare azioni critiche prima di poter riavviarsi per applicare un aggiornamento. Questa politica definisce anche la quantità di tempo a disposizione dei componenti per rispondere a una notifica di aggiornamento.

      Questa politica è un oggetto con i seguenti parametri:
      + `action`— (Facoltativo) Se notificare o meno i componenti e attendere che vengano segnalati quando sono pronti per l'aggiornamento. Seleziona una delle opzioni seguenti:
        + `NOTIFY_COMPONENTS`: l'implementazione avvisa ogni componente prima che venga interrotto e aggiornato. I componenti possono utilizzare l'operazione [SubscribeToComponentUpdates](ipc-component-lifecycle.md#ipc-operation-subscribetocomponentupdates) IPC per ricevere queste notifiche.
        + `SKIP_NOTIFY_COMPONENTS`: l'implementazione non avvisa i componenti né attende che vengano aggiornati in sicurezza.

        L'impostazione predefinita è `NOTIFY_COMPONENTS`.
      + `timeoutInSeconds`La quantità di tempo in secondi a disposizione di ciascun componente per rispondere a una notifica di aggiornamento con l'operazione [DeferComponentUpdate](ipc-component-lifecycle.md#ipc-operation-defercomponentupdate) IPC. Se il componente non risponde entro questo lasso di tempo, la distribuzione procede sul dispositivo principale.

        Il valore predefinito è 60 secondi.

   1. (Facoltativo) Specificare la politica di convalida della configurazione (). `configurationValidationPolicy` Questa politica definisce il tempo a disposizione di ciascun componente per convalidare un aggiornamento della configurazione da una distribuzione. I componenti possono utilizzare l'operazione [SubscribeToValidateConfigurationUpdates](ipc-component-configuration.md#ipc-operation-subscribetovalidateconfigurationupdates) IPC per sottoscrivere le notifiche relative ai propri aggiornamenti di configurazione. Quindi, i componenti possono utilizzare l'operazione [SendConfigurationValidityReport](ipc-component-configuration.md#ipc-operation-sendconfigurationvalidityreport) IPC per comunicare al software AWS IoT Greengrass Core se l'aggiornamento della configurazione è valido. Se l'aggiornamento della configurazione non è valido, la distribuzione non riesce.

      Questa politica è un oggetto con il seguente parametro:
      + `timeoutInSeconds`(Facoltativo) La quantità di tempo in secondi a disposizione di ogni componente per convalidare un aggiornamento della configurazione. Se il componente non risponde entro questo lasso di tempo, la distribuzione procede sul dispositivo principale.

        Il valore predefinito è 30 secondi.

   1. (Facoltativo) Specificare la politica di gestione degli errori ()`failureHandlingPolicy`. Questa policy è una stringa che definisce se ripristinare o meno i dispositivi se la distribuzione fallisce. Seleziona una delle opzioni seguenti:
      + `ROLLBACK`— Se l'installazione fallisce su un dispositivo principale, il software AWS IoT Greengrass Core ripristina il dispositivo principale alla configurazione precedente.
      + `DO_NOTHING`— Se l'installazione fallisce su un dispositivo principale, il software AWS IoT Greengrass Core mantiene la nuova configurazione. Ciò può causare il danneggiamento dei componenti se la nuova configurazione non è valida.

      L'impostazione predefinita è `ROLLBACK`.

   La tua distribuzione in `deployment.json` potrebbe essere simile al seguente esempio:

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     },
     "deploymentPolicies": {
       "componentUpdatePolicy": {
         "action": "NOTIFY_COMPONENTS",
         "timeoutInSeconds": 30
       },
       "configurationValidationPolicy": {
         "timeoutInSeconds": 60
       },
       "failureHandlingPolicy": "ROLLBACK"
     }
   }
   ```

1. (Facoltativo) Definisci in che modo la distribuzione viene interrotta, implementata o scaduta. AWS IoT Greengrass utilizza i AWS IoT Core processi per inviare le distribuzioni ai dispositivi principali, quindi queste opzioni sono identiche alle opzioni di configurazione per AWS IoT Core i lavori. Per ulteriori informazioni, consulta [Job rollout and abort configuration](https://docs.aws.amazon.com/iot/latest/developerguide/job-rollout-abort.html) nella *AWS IoT Developer* Guide.

   Per definire le opzioni di lavoro, aggiungi un `iotJobConfiguration` oggetto a. `deployment.json` Quindi, definite le opzioni da configurare.

   La tua distribuzione in `deployment.json` potrebbe essere simile all'esempio seguente:

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     },
     "deploymentPolicies": {
       "componentUpdatePolicy": {
         "action": "NOTIFY_COMPONENTS",
         "timeoutInSeconds": 30
       },
       "configurationValidationPolicy": {
         "timeoutInSeconds": 60
       },
       "failureHandlingPolicy": "ROLLBACK"
     },
     "iotJobConfiguration": {
       "abortConfig": {
         "criteriaList": [
           {
             "action": "CANCEL",
             "failureType": "ALL",
             "minNumberOfExecutedThings": 100,
             "thresholdPercentage": 5
           }
         ]
       },
       "jobExecutionsRolloutConfig": {
         "exponentialRate": {
           "baseRatePerMinute": 5,
           "incrementFactor": 2,
           "rateIncreaseCriteria": {
             "numberOfNotifiedThings": 10,
             "numberOfSucceededThings": 5
           }
         },
         "maximumPerMinute": 50
       },
       "timeoutConfig":  {
         "inProgressTimeoutInMinutes": 5
       }
     }
   }
   ```

1. (Facoltativo) Aggiungi tag (`tags`) per la distribuzione. Per ulteriori informazioni, consulta [Tagga le tue AWS IoT Greengrass Version 2 risorse](tag-resources.md).

1. Esegui il comando seguente per creare la distribuzione da`deployment.json`.

   ```
   aws greengrassv2 create-deployment --cli-input-json file://deployment.json
   ```

   <a name="check-new-deployment-status"></a>La risposta include un messaggio `deploymentId` che identifica questa distribuzione. È possibile utilizzare l'ID di distribuzione per verificare lo stato della distribuzione. Per ulteriori informazioni, consulta [Verifica lo stato della distribuzione](check-deployment-status.md#check-cloud-deployment-status).

# Aggiornamento delle configurazioni dei componenti
<a name="update-component-configurations"></a>

Le configurazioni dei componenti sono oggetti JSON che definiscono i parametri per ogni componente. La ricetta di ogni componente definisce la sua configurazione predefinita, che viene modificata quando si distribuiscono i componenti sui dispositivi principali.

Quando si crea una distribuzione, è possibile specificare l'*aggiornamento della configurazione* da applicare a ciascun componente. Gli aggiornamenti di configurazione sono operazioni di patch, il che significa che l'aggiornamento modifica la configurazione del componente esistente sul dispositivo principale. Se il dispositivo principale non dispone del componente, l'aggiornamento della configurazione modifica e applica la configurazione predefinita per quella distribuzione.

L'aggiornamento della configurazione definisce gli aggiornamenti di *ripristino* e gli aggiornamenti di *unione.* Gli aggiornamenti di ripristino definiscono quali valori di configurazione ripristinare i valori predefiniti o rimuovere. Gli aggiornamenti di fusione definiscono i nuovi valori di configurazione da impostare per il componente. Quando si distribuisce un aggiornamento di configurazione, il software AWS IoT Greengrass Core esegue l'aggiornamento di ripristino prima dell'aggiornamento di fusione.

I componenti possono convalidare gli aggiornamenti di configurazione distribuiti. Il componente si iscrive per ricevere una notifica quando una distribuzione modifica la sua configurazione e può rifiutare una configurazione che non supporta. Per ulteriori informazioni, consulta [Interazione con la configurazione dei componenti](ipc-component-configuration.md).

**Topics**
+ [Reimposta gli aggiornamenti](#reset-configuration-update)
+ [Unisci gli aggiornamenti](#merge-configuration-update)
+ [Esempi](#configuration-update-example)

## Reimposta gli aggiornamenti
<a name="reset-configuration-update"></a>

Gli aggiornamenti di ripristino definiscono quali valori di configurazione ripristinare ai valori predefiniti sul dispositivo principale. Se un valore di configurazione non ha un valore predefinito, l'aggiornamento di ripristino rimuove tale valore dalla configurazione del componente. Questo può aiutarti a correggere un componente che si rompe a causa di una configurazione non valida.

Usa un elenco di puntatori JSON per definire i valori di configurazione da reimpostare. I puntatori JSON iniziano con una barra. `/` Per identificare un valore in una configurazione di componenti annidati, utilizzate forward slashes (`/`) per separare le chiavi per ogni livello della configurazione. Per ulteriori informazioni, vedete la specifica del puntatore [JSON](https://tools.ietf.org/html/rfc6901).

**Nota**  
È possibile ripristinare solo i valori predefiniti di un intero elenco. Non è possibile utilizzare la reimpostazione degli aggiornamenti per reimpostare un singolo elemento in un elenco. 

Per ripristinare l'intera configurazione di un componente ai valori predefiniti, specifica una singola stringa vuota come aggiornamento di ripristino.

```
"reset": [""]
```

## Unisci gli aggiornamenti
<a name="merge-configuration-update"></a>

Gli aggiornamenti di fusione definiscono i valori di configurazione da inserire nella configurazione del componente sul core. L'aggiornamento di fusione è un oggetto JSON che il software AWS IoT Greengrass Core unisce dopo aver ripristinato i valori nei percorsi specificati nell'aggiornamento di ripristino. Quando si utilizza AWS CLI o AWS SDKs, è necessario serializzare questo oggetto JSON come stringa.

È possibile unire una coppia chiave-valore che non esiste nella configurazione predefinita del componente. È inoltre possibile unire una coppia chiave-valore di tipo diverso dal valore con la stessa chiave. Il nuovo valore sostituisce il vecchio valore. Ciò significa che è possibile modificare la struttura dell'oggetto di configurazione.

È possibile unire valori nulli e stringhe, elenchi e oggetti vuoti.

**Nota**  
Non è possibile utilizzare gli aggiornamenti di fusione per inserire o aggiungere un elemento a un elenco. È possibile sostituire un intero elenco oppure definire un oggetto in cui ogni elemento ha una chiave unica.  
<a name="configuration-value-type-note"></a>AWS IoT Greengrass utilizza JSON per i valori di configurazione. JSON specifica un tipo di numero ma non distingue tra numeri interi e float. Di conseguenza, i valori di configurazione potrebbero essere convertiti in float in. AWS IoT Greengrass Per garantire che il componente utilizzi il tipo di dati corretto, si consiglia di definire i valori di configurazione numerici come stringhe. Quindi, chiedi al componente di analizzarli come numeri interi o float. Ciò garantisce che i valori di configurazione abbiano lo stesso tipo nella configurazione e sul dispositivo principale.

### Usa le variabili di ricetta negli aggiornamenti di fusione
<a name="merge-configuration-update-recipe-variables"></a>

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

Se imposti l'opzione di [interpolateComponentConfiguration](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-interpolate-component-configuration)configurazione Greengrass nucleus su`true`, puoi utilizzare variabili di ricetta, diverse dalla variabile `component_dependency_name:configuration:json_pointer` recipe, negli aggiornamenti di fusione. Ad esempio, è possibile utilizzare la variabile `{iot:thingName}` recipe in un aggiornamento di fusione per includere il nome dell' AWS IoT oggetto del dispositivo principale in un valore di configurazione del componente, ad esempio una politica di autorizzazione per la [comunicazione tra processi (](interprocess-communication.md#ipc-authorization-policies)IPC).

## Esempi
<a name="configuration-update-example"></a>

L'esempio seguente mostra gli aggiornamenti di configurazione per un componente del dashboard con la seguente configurazione predefinita. Questo componente di esempio visualizza informazioni sulle apparecchiature industriali.

```
{
  "name": null,
  "mode": "REQUEST",
  "network": {
    "useHttps": true,
    "port": {
      "http": 80,
      "https": 443
    },
  },
  "tags": []
}
```

### Ricetta dei componenti del cruscotto industriale
<a name="w2ab1c24c25c22c16c17b7b1"></a>

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

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.IndustrialDashboard",
  "ComponentVersion": "1.0.0",
  "ComponentDescription": "Displays information about industrial equipment.",
  "ComponentPublisher": "Amazon",
  "ComponentConfiguration": {
    "DefaultConfiguration": {
      "name": null,
      "mode": "REQUEST",
      "network": {
        "useHttps": true,
        "port": {
          "http": 80,
          "https": 443
        },
      },
      "tags": []
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux"
      },
      "Lifecycle": {
        "Run": "python3 -u {artifacts:path}/industrial_dashboard.py"
      }
    },
    {
      "Platform": {
        "os": "windows"
      },
      "Lifecycle": {
        "Run": "py -3 -u {artifacts:path}/industrial_dashboard.py"
      }
    }
  ]
}
```

------
#### [ YAML ]

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.IndustrialDashboard
ComponentVersion: '1.0.0'
ComponentDescription: Displays information about industrial equipment.
ComponentPublisher: Amazon
ComponentConfiguration:
  DefaultConfiguration:
    name: null
    mode: REQUEST
    network:
      useHttps: true
      port:
        http: 80
        https: 443
    tags: []
Manifests:
  - Platform:
      os: linux
    Lifecycle:
      Run: |
        python3 -u {artifacts:path}/industrial_dashboard.py
  - Platform:
      os: windows
    Lifecycle:
      Run: |
        py -3 -u {artifacts:path}/industrial_dashboard.py
```

------

**Example Esempio 1: Merge update**  
Si crea una distribuzione che applica il seguente aggiornamento di configurazione, che specifica un aggiornamento di unione ma non un aggiornamento di ripristino. Questo aggiornamento di configurazione indica al componente di visualizzare il dashboard sulla porta HTTP 8080 con i dati provenienti da due caldaie.    
**Configurazione da unire**  

```
{
  "name": "Factory 2A",
  "network": {
    "useHttps": false,
    "port": {
      "http": 8080
    }
  },
  "tags": [
    "/boiler/1/temperature",
    "/boiler/1/pressure",
    "/boiler/2/temperature",
    "/boiler/2/pressure"
  ]
}
```
Il comando seguente crea una distribuzione su un dispositivo principale.  

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment.json
```
Il `dashboard-deployment.json` file contiene il seguente documento JSON.  

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "com.example.IndustrialDashboard": {
      "componentVersion": "1.0.0",
      "configurationUpdate": {
        "merge": "{\"name\":\"Factory 2A\",\"network\":{\"useHttps\":false,\"port\":{\"http\":8080}},\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
      }
    }
  }
}
```
Il seguente comando [Greengrass CLI](greengrass-cli-component.md) crea una distribuzione locale su un dispositivo principale.  

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "com.example.IndustrialDashboard=1.0.0" \
  --update-config dashboard-configuration.json
```
Il `dashboard-configuration.json` file contiene il seguente documento JSON.  

```
{
  "com.example.IndustrialDashboard": {
    "MERGE": {
      "name": "Factory 2A",
      "network": {
        "useHttps": false,
        "port": {
          "http": 8080
        }
      },
      "tags": [
        "/boiler/1/temperature",
        "/boiler/1/pressure",
        "/boiler/2/temperature",
        "/boiler/2/pressure"
      ]
    }
  }
}
```
Dopo questo aggiornamento, il componente del dashboard presenta la seguente configurazione.  

```
{
  "name": "Factory 2A",
  "mode": "REQUEST",
  "network": {
    "useHttps": false,
    "port": {
      "http": 8080,
      "https": 443
    }
  },
  "tags": [
    "/boiler/1/temperature",
    "/boiler/1/pressure",
    "/boiler/2/temperature",
    "/boiler/2/pressure"
  ]
}
```

**Example Esempio 2: reimpostazione e unione degli aggiornamenti**  
Quindi, si crea una distribuzione che applica il seguente aggiornamento di configurazione, che specifica un aggiornamento di ripristino e un aggiornamento di unione. Questi aggiornamenti specificano la visualizzazione del dashboard sulla porta HTTPS predefinita con dati provenienti da diverse caldaie. Questi aggiornamenti modificano la configurazione risultante dagli aggiornamenti di configurazione dell'esempio precedente.    
**Reimposta i percorsi**  

```
[
  "/network/useHttps",
  "/tags"
]
```  
**Configurazione da unire**  

```
{
  "tags": [
    "/boiler/3/temperature",
    "/boiler/3/pressure",
    "/boiler/4/temperature",
    "/boiler/4/pressure"
  ]
}
```
Il comando seguente crea una distribuzione su un dispositivo principale.  

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment2.json
```
Il `dashboard-deployment2.json` file contiene il seguente documento JSON.  

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "com.example.IndustrialDashboard": {
      "componentVersion": "1.0.0",
      "configurationUpdate": {
        "reset": [
          "/network/useHttps",
          "/tags"
        ],
        "merge": "{\"tags\":[\"/boiler/3/temperature\",\"/boiler/3/pressure\",\"/boiler/4/temperature\",\"/boiler/4/pressure\"]}"
      }
    }
  }
}
```
Il seguente comando [Greengrass CLI](greengrass-cli-component.md) crea una distribuzione locale su un dispositivo principale.  

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "com.example.IndustrialDashboard=1.0.0" \
  --update-config dashboard-configuration2.json
```
Il `dashboard-configuration2.json` file contiene il seguente documento JSON.  

```
{
  "com.example.IndustrialDashboard": {
    "RESET": [
      "/network/useHttps",
      "/tags"
    ],
    "MERGE": {
      "tags": [
        "/boiler/3/temperature",
        "/boiler/3/pressure",
        "/boiler/4/temperature",
        "/boiler/4/pressure"
      ]
    }
  }
}
```
Dopo questo aggiornamento, il componente del dashboard presenta la seguente configurazione.  

```
{
  "name": "Factory 2A",
  "mode": "REQUEST",
  "network": {
    "useHttps": true,
    "port": {
      "http": 8080,
      "https": 443
    }
  },
  "tags": [
    "/boiler/3/temperature",
    "/boiler/3/pressure",
    "/boiler/4/temperature",
    "/boiler/4/pressure",
  ]
}
```