Aggiornamento delle configurazioni dei componenti - AWS IoT Greengrass

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

Aggiornamento delle configurazioni dei componenti

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.

Reimposta gli aggiornamenti

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.

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

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 utilizzate gli AWS CLI o AWS SDK, dovete serializzare questo oggetto JSON come stringa.

Puoi 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 allo scopo di 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.

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

Questa funzionalità è disponibile per la versione 2.6.0 e successive del componente Greengrass nucleus.

Se impostate l'opzione di ComponentConfiguration configurazione interpolata del nucleo di Greengrass sutrue, potete 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 (IPC).

Esempi

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": [] }
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
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.

Console
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" ] }
AWS CLI

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\"]}" } } } }
Greengrass CLI

Il seguente comando Greengrass CLI 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" ] }
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.

Console
Reimposta i percorsi
[ "/network/useHttps", "/tags" ]
Configurazione da unire
{ "tags": [ "/boiler/3/temperature", "/boiler/3/pressure", "/boiler/4/temperature", "/boiler/4/pressure" ] }
AWS CLI

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\"]}" } } } }
Greengrass CLI

Il seguente comando Greengrass CLI 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", ] }