Atualizar configurações de componentes - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualizar configurações de componentes

As configurações de componentes são objetos JSON que definem os parâmetros de cada componente. A receita de cada componente define sua configuração padrão, que você modifica ao implantar componentes nos dispositivos principais.

Ao criar uma implantação, você pode especificar a atualização de configuração a ser aplicada a cada componente. As atualizações de configuração são operações de patch, o que significa que a atualização modifica a configuração do componente que existe no dispositivo principal. Se o dispositivo principal não tiver o componente, a atualização da configuração modifica e aplica a configuração padrão para essa implantação.

A atualização de configuração define atualizações de redefinição e atualizações de mesclagem. As atualizações de redefinição definem quais valores de configuração devem ser redefinidos para seus padrões ou removidos. As atualizações de mesclagem definem os novos valores de configuração a serem definidos para o componente. Quando você implanta uma atualização de configuração, o software AWS IoT Greengrass Core executa a atualização de redefinição antes da atualização de mesclagem.

Os componentes podem validar as atualizações de configuração que você implanta. O componente se inscreve para receber uma notificação quando uma implantação altera sua configuração e pode rejeitar uma configuração que não suporta. Para ter mais informações, consulte Interaja com a configuração do componente.

Redefinir atualizações

As atualizações de redefinição definem quais valores de configuração devem ser redefinidos para seus valores padrão no dispositivo principal. Se um valor de configuração não tiver um valor padrão, a atualização de redefinição removerá esse valor da configuração do componente. Isso pode ajudá-lo a corrigir um componente que falha como resultado de uma configuração inválida.

Use uma lista de ponteiros JSON para definir quais valores de configuração devem ser redefinidos. Os ponteiros JSON começam com uma barra. / Para identificar um valor em uma configuração de componente aninhado, use barras (/) para separar as chaves de cada nível na configuração. Para obter mais informações, consulte a especificação do ponteiro JSON.

nota

Você pode redefinir somente uma lista inteira para seus valores padrão. Você não pode usar as atualizações de redefinição para redefinir um elemento individual em uma lista.

Para redefinir toda a configuração de um componente para seus valores padrão, especifique uma única string vazia como atualização de redefinição.

"reset": [""]

Mesclar atualizações

As atualizações de mesclagem definem os valores de configuração a serem inseridos na configuração do componente no núcleo. A atualização de mesclagem é um objeto JSON que o software AWS IoT Greengrass Core mescla depois de redefinir os valores nos caminhos especificados na atualização de redefinição. Ao usar os AWS SDKs AWS CLI ou, você deve serializar esse objeto JSON como uma string.

Você pode mesclar um par de valores-chave que não existe na configuração padrão do componente. Você também pode mesclar um par de valores-chave que tenha um tipo diferente do valor com a mesma chave. O novo valor substitui o valor antigo. Isso significa que você pode alterar a estrutura do objeto de configuração.

Você pode mesclar valores nulos e sequências de caracteres, listas e objetos vazios.

nota

Você não pode usar atualizações de mesclagem com a finalidade de inserir ou acrescentar um elemento a uma lista. Você pode substituir uma lista inteira ou definir um objeto em que cada elemento tenha uma chave exclusiva.

AWS IoT Greengrass usa JSON para valores de configuração. O JSON especifica um tipo de número, mas não diferencia entre números inteiros e flutuantes. Como resultado, os valores de configuração podem ser convertidos em floats in AWS IoT Greengrass. Para garantir que seu componente use o tipo de dados correto, recomendamos que você defina valores de configuração numérica como cadeias de caracteres. Em seguida, faça com que seu componente os analise como números inteiros ou flutuantes. Isso garante que seus valores de configuração tenham o mesmo tipo na configuração e no seu dispositivo principal.

Use variáveis de receita em atualizações de mesclagem

Esse recurso está disponível para a versão 2.6.0 e posterior do componente núcleo do Greengrass.

Se você definir a opção de ComponentConfiguration configuração de interpolação do núcleo Greengrass comotrue, poderá usar variáveis de receita, além da variável de receita, em atualizações de component_dependency_name:configuration:json_pointer mesclagem. Por exemplo, você pode usar a variável de {iot:thingName} receita em uma atualização de mesclagem para incluir o nome do item do AWS IoT dispositivo principal em um valor de configuração do componente, como uma política de autorização de comunicação entre processos (IPC).

Exemplos

O exemplo a seguir demonstra as atualizações de configuração para um componente do painel que tem a seguinte configuração padrão. Este componente de exemplo exibe informações sobre equipamentos industriais.

{ "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
exemplo Exemplo 1: atualização de mesclagem

Você cria uma implantação que aplica a seguinte atualização de configuração, que especifica uma atualização de mesclagem, mas não uma atualização de redefinição. Essa atualização de configuração instrui o componente a exibir o painel na porta HTTP 8080 com dados de duas caldeiras.

Console
Configuração para mesclar
{ "name": "Factory 2A", "network": { "useHttps": false, "port": { "http": 8080 } }, "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] }
AWS CLI

O comando a seguir cria uma implantação em um dispositivo principal.

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

O dashboard-deployment.json arquivo contém o seguinte 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

O comando CLI do Greengrass a seguir cria uma implantação local em um dispositivo principal.

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

O dashboard-configuration.json arquivo contém o seguinte 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" ] } } }

Após essa atualização, o componente do painel tem a seguinte configuração.

{ "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" ] }
exemplo Exemplo 2: redefinir e mesclar atualizações

Em seguida, você cria uma implantação que aplica a seguinte atualização de configuração, que especifica uma atualização de redefinição e uma atualização de mesclagem. Essas atualizações especificam a exibição do painel na porta HTTPS padrão com dados de diferentes caldeiras. Essas atualizações modificam a configuração resultante das atualizações de configuração no exemplo anterior.

Console
Redefinir caminhos
[ "/network/useHttps", "/tags" ]
Configuração para mesclar
{ "tags": [ "/boiler/3/temperature", "/boiler/3/pressure", "/boiler/4/temperature", "/boiler/4/pressure" ] }
AWS CLI

O comando a seguir cria uma implantação em um dispositivo principal.

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

O dashboard-deployment2.json arquivo contém o seguinte 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

O comando CLI do Greengrass a seguir cria uma implantação local em um dispositivo principal.

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

O dashboard-configuration2.json arquivo contém o seguinte documento JSON.

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

Após essa atualização, o componente do painel tem a seguinte configuração.

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