Komponentenkonfigurationen aktualisieren - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Komponentenkonfigurationen aktualisieren

Komponentenkonfigurationen sind JSON-Objekte, die die Parameter für jede Komponente definieren. Das Rezept jeder Komponente definiert ihre Standardkonfiguration, die Sie ändern, wenn Sie Komponenten auf Kerngeräten bereitstellen.

Wenn Sie eine Bereitstellung erstellen, können Sie das Konfigurationsupdate angeben, das für jede Komponente angewendet werden soll. Bei Konfigurationsupdates handelt es sich um Patch-Operationen. Das bedeutet, dass das Update die Komponentenkonfiguration ändert, die auf dem Kerngerät vorhanden ist. Wenn das Kerngerät nicht über die Komponente verfügt, ändert das Konfigurationsupdate die Standardkonfiguration für diese Bereitstellung und wendet sie an.

Das Konfigurationsupdate definiert das Zurücksetzen von Updates und das Zusammenführen von Updates. Beim Zurücksetzen von Updates wird definiert, welche Konfigurationswerte auf ihre Standardwerte zurückgesetzt oder entfernt werden sollen. Merge-Updates definieren die neuen Konfigurationswerte, die für die Komponente festgelegt werden sollen. Wenn Sie ein Konfigurationsupdate bereitstellen, führt die AWS IoT Greengrass Core-Software das Reset-Update vor dem Merge-Update aus.

Komponenten können die von Ihnen bereitgestellten Konfigurationsupdates validieren. Die Komponente abonniert den Empfang einer Benachrichtigung, wenn eine Bereitstellung ihre Konfiguration ändert, und sie kann eine Konfiguration ablehnen, die sie nicht unterstützt. Weitere Informationen finden Sie unter Interagieren mit der Komponentenkonfiguration.

Updates zurücksetzen

Beim Zurücksetzen von Updates wird definiert, welche Konfigurationswerte auf dem Kerngerät auf ihre Standardwerte zurückgesetzt werden sollen. Wenn ein Konfigurationswert keinen Standardwert hat, entfernt das Reset-Update diesen Wert aus der Konfiguration der Komponente. Dies kann Ihnen helfen, eine Komponente zu reparieren, die aufgrund einer ungültigen Konfiguration kaputt geht.

Verwenden Sie eine Liste von JSON-Zeigern, um zu definieren, welche Konfigurationswerte zurückgesetzt werden sollen. JSON-Zeiger beginnen mit einem Schrägstrich. / Um einen Wert in einer verschachtelten Komponentenkonfiguration zu identifizieren, verwenden Sie Schrägstriche (/), um die Schlüssel für jede Ebene in der Konfiguration voneinander zu trennen. Weitere Informationen finden Sie in der JSON-Zeigerspezifikation.

Anmerkung

Sie können nur eine gesamte Liste auf ihre Standardwerte zurücksetzen. Sie können das Zurücksetzen von Aktualisierungen nicht verwenden, um ein einzelnes Element in einer Liste zurückzusetzen.

Um die gesamte Konfiguration einer Komponente auf ihre Standardwerte zurückzusetzen, geben Sie eine einzelne leere Zeichenfolge als Reset-Update an.

"reset": [""]

Updates zusammenführen

Merge-Updates definieren die Konfigurationswerte, die in die Komponentenkonfiguration auf dem Core eingefügt werden sollen. Das Merge-Update ist ein JSON-Objekt, das die AWS IoT Greengrass Core-Software zusammenführt, nachdem sie die Werte in den Pfaden zurückgesetzt hat, die Sie im Reset-Update angegeben haben. Wenn Sie die AWS SDKs AWS CLI oder verwenden, müssen Sie dieses JSON-Objekt als Zeichenfolge serialisieren.

Sie können ein Schlüssel-Wert-Paar zusammenführen, das in der Standardkonfiguration der Komponente nicht vorhanden ist. Sie können auch ein Schlüssel-Wert-Paar zusammenführen, das einen anderen Typ hat als der Wert mit demselben Schlüssel. Der neue Wert ersetzt den alten Wert. Das bedeutet, dass Sie die Struktur des Konfigurationsobjekts ändern können.

Sie können Nullwerte und leere Zeichenketten, Listen und Objekte zusammenführen.

Anmerkung

Sie können das Zusammenführen von Aktualisierungen nicht dazu verwenden, ein Element in eine Liste einzufügen oder an sie anzuhängen. Sie können eine gesamte Liste ersetzen oder ein Objekt definieren, bei dem jedes Element einen eindeutigen Schlüssel hat.

AWS IoT Greengrass verwendet JSON für Konfigurationswerte. JSON spezifiziert einen Zahlentyp, unterscheidet aber nicht zwischen Ganzzahlen und Gleitkommazahlen. Aus diesem Grund können Konfigurationswerte in Fließkommazahlen umgewandelt werden. AWS IoT Greengrass Um sicherzustellen, dass Ihre Komponente den richtigen Datentyp verwendet, empfehlen wir, numerische Konfigurationswerte als Zeichenfolgen zu definieren. Lassen Sie Ihre Komponente sie dann als Ganzzahlen oder Gleitkommazahlen analysieren. Dadurch wird sichergestellt, dass Ihre Konfigurationswerte in der Konfiguration und auf Ihrem Kerngerät denselben Typ haben.

Verwenden Sie Rezeptvariablen bei Merge-Updates

Diese Funktion ist für Version 2.6.0 und höher der Greengrass Nucleus-Komponente verfügbar.

Wenn Sie die ComponentConfiguration Konfigurationsoption Interpolate von Greengrass Nucleus auf einstellentrue, können Sie in Merge-Updates andere Rezeptvariablen als die component_dependency_name:configuration:json_pointer Rezeptvariable verwenden. Sie können die {iot:thingName} Rezeptvariable beispielsweise in einem Merge-Update verwenden, um den Ding-Namen des AWS IoT Kerngeräts in einen Komponentenkonfigurationswert aufzunehmen, z. B. in eine IPC-Autorisierungsrichtlinie (Interprocess Communication).

Beispiele

Das folgende Beispiel zeigt Konfigurationsupdates für eine Dashboard-Komponente mit der folgenden Standardkonfiguration. Diese Beispielkomponente zeigt Informationen über Industrieanlagen an.

{ "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
Beispiel 1: Update zusammenführen

Sie erstellen eine Einrichtung, die das folgende Konfigurationsupdate anwendet, das ein Merge-Update, aber kein Reset-Update spezifiziert. Dieses Konfigurationsupdate weist die Komponente an, das Dashboard auf dem HTTP-Port 8080 mit Daten von zwei Boilern anzuzeigen.

Console
Konfiguration zum Zusammenführen
{ "name": "Factory 2A", "network": { "useHttps": false, "port": { "http": 8080 } }, "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] }
AWS CLI

Der folgende Befehl erstellt eine Bereitstellung auf einem Core-Gerät.

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

Die dashboard-deployment.json Datei enthält das folgende JSON-Dokument.

{ "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

Der folgende Greengrass-CLI-Befehl erstellt eine lokale Bereitstellung auf einem Core-Gerät.

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.IndustrialDashboard=1.0.0" \ --update-config dashboard-configuration.json

Die dashboard-configuration.json Datei enthält das folgende JSON-Dokument.

{ "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" ] } } }

Nach diesem Update hat die Dashboard-Komponente die folgende Konfiguration.

{ "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" ] }
Beispiel 2: Updates zurücksetzen und zusammenführen

Anschließend erstellen Sie eine Einrichtung, die das folgende Konfigurationsupdate anwendet, das ein Reset-Update und ein Merge-Update spezifiziert. Diese Updates spezifizieren, dass das Dashboard auf dem Standard-HTTPS-Port mit Daten von verschiedenen Kesseln angezeigt wird. Diese Updates ändern die Konfiguration, die sich aus den Konfigurationsupdates im vorherigen Beispiel ergibt.

Console
Pfade zurücksetzen
[ "/network/useHttps", "/tags" ]
Konfiguration zum Zusammenführen
{ "tags": [ "/boiler/3/temperature", "/boiler/3/pressure", "/boiler/4/temperature", "/boiler/4/pressure" ] }
AWS CLI

Der folgende Befehl erstellt eine Bereitstellung auf einem Core-Gerät.

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

Die dashboard-deployment2.json Datei enthält das folgende JSON-Dokument.

{ "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

Der folgende Greengrass-CLI-Befehl erstellt eine lokale Bereitstellung auf einem Core-Gerät.

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.IndustrialDashboard=1.0.0" \ --update-config dashboard-configuration2.json

Die dashboard-configuration2.json Datei enthält das folgende JSON-Dokument.

{ "com.example.IndustrialDashboard": { "RESET": [ "/network/useHttps", "/tags" ], "MERGE": { "tags": [ "/boiler/3/temperature", "/boiler/3/pressure", "/boiler/4/temperature", "/boiler/4/pressure" ] } } }

Nach diesem Update hat die Dashboard-Komponente die folgende Konfiguration.

{ "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", ] }