Actualizar las configuraciones de los componentes - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Actualizar las configuraciones de los componentes

Las configuraciones de los componentes son objetos JSON que definen los parámetros de cada componente. La receta de cada componente define su configuración predeterminada, que se modifica al implementar los componentes en los dispositivos principales.

Al crear una implementación, puede especificar la actualización de configuración que se aplicará a cada componente. Las actualizaciones de configuración son operaciones de parches, lo que significa que la actualización modifica la configuración del componente que existe en el dispositivo principal. Si el dispositivo principal no tiene el componente, la actualización de configuración modifica y aplica la configuración predeterminada para esa implementación.

La actualización de configuración define las actualizaciones de restablecimiento y las actualizaciones de fusión. Las actualizaciones de restablecimiento definen qué valores de configuración se deben restablecer a sus valores predeterminados o eliminar. Las actualizaciones de combinación definen los nuevos valores de configuración que se deben establecer para el componente. Al implementar una actualización de configuración, el software AWS IoT Greengrass principal ejecuta la actualización de restablecimiento antes de la actualización de fusión.

Los componentes pueden validar las actualizaciones de configuración que se implementen. El componente se suscribe para recibir una notificación cuando una implementación cambia su configuración y puede rechazar una configuración que no sea compatible. Para obtener más información, consulte Interactúa con la configuración de los componentes.

Restablecer las actualizaciones

Las actualizaciones de restablecimiento definen qué valores de configuración se deben restablecer a sus valores predeterminados en el dispositivo principal. Si un valor de configuración no tiene un valor predeterminado, la actualización de restablecimiento elimina ese valor de la configuración del componente. Esto puede ayudarle a reparar un componente que se interrumpe como resultado de una configuración no válida.

Utilice una lista de punteros JSON para definir qué valores de configuración desea restablecer. Los punteros JSON comienzan con una barra diagonal. / Para identificar un valor en una configuración de componentes anidados, utilice barras diagonales (/) para separar las claves de cada nivel de la configuración. Para obtener más información, consulta la especificación del puntero JSON.

nota

Solo puede restablecer los valores predeterminados de una lista completa. No puedes usar las actualizaciones de restablecimiento para restablecer un elemento individual de una lista.

Para restablecer toda la configuración de un componente a sus valores predeterminados, especifique una sola cadena vacía como actualización de restablecimiento.

"reset": [""]

Fusiona las actualizaciones

Las actualizaciones de combinación definen los valores de configuración que se van a insertar en la configuración de los componentes del núcleo. La actualización de fusión es un objeto JSON que el software AWS IoT Greengrass principal fusiona después de restablecer los valores de las rutas que se especificaron en la actualización de restablecimiento. Cuando utilices los AWS CLI o los AWS SDK, debes serializar este objeto JSON como una cadena.

Puede combinar un par clave-valor que no exista en la configuración predeterminada del componente. También puede combinar un par clave-valor que tenga un tipo diferente al valor con la misma clave. El nuevo valor reemplaza al valor anterior. Esto significa que puede cambiar la estructura del objeto de configuración.

Puede combinar valores nulos y cadenas, listas y objetos vacíos.

nota

No puede utilizar las actualizaciones de combinación para insertar o añadir un elemento a una lista. Puede reemplazar una lista completa o definir un objeto en el que cada elemento tenga una clave única.

AWS IoT Greengrass usa JSON para los valores de configuración. JSON especifica un tipo de número, pero no diferencia entre números enteros y flotantes. Como resultado, los valores de configuración pueden convertirse en valores flotantes. AWS IoT Greengrass Para garantizar que su componente utilice el tipo de datos correcto, le recomendamos que defina los valores de configuración numéricos como cadenas. A continuación, pida a su componente que los analice como enteros o flotantes. Esto garantiza que los valores de configuración sean del mismo tipo en la configuración y en el dispositivo principal.

Utilice variables de receta en las actualizaciones de fusión

Esta función está disponible para la versión 2.6.0 y versiones posteriores del componente núcleo de Greengrass.

Si establece la opción de ComponentConfiguration configuración de interpolación del núcleo de Greengrass entrue, puede utilizar variables de receta distintas de la variable de receta en las actualizaciones de component_dependency_name:configuration:json_pointer fusión. Por ejemplo, puede usar la variable de {iot:thingName} receta en una actualización de fusión para incluir el nombre del dispositivo principal en el valor de AWS IoT la configuración de un componente, como una política de autorización de comunicación entre procesos (IPC).

Ejemplos

En el siguiente ejemplo, se muestran las actualizaciones de configuración de un componente del panel de mandos que tiene la siguiente configuración predeterminada. Este componente de ejemplo muestra información sobre el equipo industrial.

{ "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
ejemplo Ejemplo 1: actualización de combinación

Se crea una implementación que aplica la siguiente actualización de configuración, que especifica una actualización de fusión pero no una actualización de restablecimiento. Esta actualización de configuración indica al componente que muestre el panel de control en el puerto HTTP 8080 con los datos de dos calderas.

Console
Configuración que se va a fusionar
{ "name": "Factory 2A", "network": { "useHttps": false, "port": { "http": 8080 } }, "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] }
AWS CLI

El siguiente comando crea una implementación en un dispositivo principal.

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

El dashboard-deployment.json archivo contiene el siguiente 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

El siguiente comando CLI de Greengrass crea una implementación local en un dispositivo principal.

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

El dashboard-configuration.json archivo contiene el siguiente 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" ] } } }

Tras esta actualización, el componente del panel de mandos tiene la siguiente configuración.

{ "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" ] }
ejemplo Ejemplo 2: restablecer y combinar las actualizaciones

A continuación, se crea una implementación que aplica la siguiente actualización de configuración, que especifica una actualización de restablecimiento y una actualización de fusión. Estas actualizaciones especifican mostrar el panel de control en el puerto HTTPS predeterminado con datos de diferentes fuentes. Estas actualizaciones modifican la configuración resultante de las actualizaciones de configuración del ejemplo anterior.

Console
Restablecer las rutas
[ "/network/useHttps", "/tags" ]
Configuración para fusionar
{ "tags": [ "/boiler/3/temperature", "/boiler/3/pressure", "/boiler/4/temperature", "/boiler/4/pressure" ] }
AWS CLI

El siguiente comando crea una implementación en un dispositivo principal.

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

El dashboard-deployment2.json archivo contiene el siguiente 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

El siguiente comando CLI de Greengrass crea una implementación local en un dispositivo principal.

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

El dashboard-configuration2.json archivo contiene el siguiente documento JSON.

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

Tras esta actualización, el componente del panel de mandos tiene la siguiente configuración.

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