Aktualisieren von Komponentenkonfigurationen - 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.

Aktualisieren von Komponentenkonfigurationen

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, der für jede Komponente gilt. Konfigurationsupdates sind Patch-Operationen, was bedeutet, dass das Update die Komponentenkonfiguration ändert, die auf dem Kerngerät vorhanden ist. Wenn das Kerngerät nicht über die Komponente verfügt, wird durch das Konfigurationsupdate die Standardkonfiguration für diese Bereitstellung geändert und angewendet.

Das Konfigurationsupdate definiert Reset-Updates und Merge-Updates. Reset-Updates definieren, 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 dieAWS IoT Greengrass Core-Software das Reset-Update vor dem Merge-Update aus.

Komponenten können die von Ihnen bereitgestellten Konfigurationsupdates validieren. Die Komponente abonniert eine 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.

Zurücksetzen von Updates Updates

Zurücksetzen von Reset-Updates definieren, welche Konfigurationswerte auf der Haupteinheit 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 zu trennen. Weitere Informationen finden Sie unter JSON-Zeiger-Spezifikation.

Anmerkung

Sie können nur eine gesamte Liste auf ihre Standardwerte zurücksetzen. Sie können Reset-Updates 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 von Updates

Merge-Updates definieren die Konfigurationswerte, die in die Komponentenkonfiguration auf dem Core eingefügt werden sollen. Das Merge-Update ist ein JSON-Objekt, das dieAWS 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 dieAWS CLI oderAWS SDKs 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 als der Wert hat, 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 Zeichenfolgen, Listen und Objekte zusammenführen.

Anmerkung

Sie können Merge-Updates nicht verwenden, um ein Element einzufügen oder an eine Liste anzuhängen. Sie können eine gesamte Liste ersetzen, oder Sie können ein Objekt definieren, bei dem jedes Element einen eindeutigen Schlüssel hat.

AWS IoT Greengrassverwendet JSON für Konfigurationswerte. JSON spezifiziert einen Zahlentyp, unterscheidet jedoch nicht zwischen Ganzzahlen und Gleitkommazahlen. Infolgedessen können Konfigurationswerte in Floats umgewandeltAWS IoT Greengrass werden. 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 den gleichen 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 interpolateComponentConfigurationKonfigurationsoption von Greengrass Nucleus auf setzentrue, können Sie bei Merge-Updates anderecomponent_dependency_name:configuration:json_pointer Rezepturvariablen als die Rezepturvariable verwenden. Beispielsweise können Sie die{iot:thingName} Rezepturvariable in einem Merge-Update verwenden, um den Dingnamen desAWS IoT Kerngeräts in einen Komponentenkonfigurationswert aufzunehmen, z. B. 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: Merge Update aktualisieren

Sie erstellen eine Bereitstellung, die das folgende Konfigurationsupdate anwendet, das ein Merge-Update, aber kein Reset-Update angibt. 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 Kerngerät.

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

Diedashboard-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 Kerngerät.

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

Diedashboard-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 Bereitstellung, die das folgende Konfigurationsupdate anwendet, das ein Reset-Update und ein Merge-Update angibt. Diese Updates spezifizieren, dass das Dashboard auf dem Standard-HTTPS-Port mit Daten von verschiedenen Boilern 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 Kerngerät.

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

Diedashboard-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 Kerngerät.

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

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