更新组件配置 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更新组件配置

组件配置是定义每个组件参数的 JSON 对象。每个组件的配方都定义了其默认配置,您在将组件部署到核心设备时修改了该配置。

在创建部署时,您可以指定要应用于每个组件的配置更新。配置更新是补丁操作,这意味着更新将修改核心设备上存在的组件配置。如果核心设备没有 组件,则配置更新将修改并应用该部署的默认配置。

配置更新定义重置更新和合并更新。Reset updates (重置更新) 定义要重置为其默认值或删除的配置值。合并更新定义要为组件设置的新配置值。当您部署配置更新时 AWS IoT IoT Greengrass 核心软件会在合并更新之前运行重置更新。

组件可以验证您部署的配置更新。组件订阅以在部署更改其配置时接收通知,并且可以拒绝其不支持的配置。有关更多信息,请参阅与组件配置交互

重置更新

Reset updates (重置更新) 定义要重置核心设备上的默认值的配置值。如果配置值没有默认值,则重置更新将从组件的配置中删除该值。这可以帮助您修复因配置无效而中断的组件。

使用 JSON 指针列表来定义要重置的配置值。JSON 指针以正斜杠 开头/。要标识嵌套组件配置中的值,请使用正斜杠 (/) 分隔配置中每个级别的键。有关更多信息,请参阅 JSON 指针规范

注意

您只能将整个列表重置为其默认值。您不能使用重置更新来重置列表中的单个元素。

要将组件的整个配置重置为其默认值,请指定单个空字符串作为重置更新。

"reset": [""]

合并更新

合并更新定义要插入到核心上的组件配置中的配置值。合并更新是 AWS AWS IoT Greengrass 核心软件在重置您在重置更新中指定的路径中的值后合并的 JSON 对象。使用 AWS CLI 或 AWS SDKs时,您必须将此 JSON 对象序列化为字符串。

您可以合并组件的默认配置中不存在的键值对。您还可以合并与具有相同键的值有不同类型的键值对。新值将替换旧值。这意味着您可以更改配置对象的结构。

您可以合并 null 值和空字符串、列表和对象。

注意

您不能使用合并更新来将元素插入或附加到列表中。您可以替换整个列表,也可以定义每个元素在其中具有唯一键的对象。

AWS IoT Greengrass 使用 JSON 作为配置值。JSON 指定数字类型,但不区分整数和浮点数。因此,配置值可能会转换为 AWS AWS IoT Greengrass 中的浮点数。为确保您的组件使用正确的数据类型,我们建议您将数字配置值定义为字符串。然后,让您的组件将它们解析为整数或浮点数。这可确保您的配置值在核心设备上的配置和 具有相同的类型。

Examples

以下示例演示了具有以下默认配置的控制面板组件的配置更新。此示例组件显示有关工业设备的信息。

{ "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }

然后,您应用以下配置更新,它指定合并更新,但不指定重置更新。此配置指示组件在 HTTP 端口 8080 上显示控制面板,其中包含来自两个样板的数据。

{ "merge": { "name": "Factory 2A", "network": { "useHttps": false, "port": { "http": 8080 } }, "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }

在此更新后,控制面板组件具有以下配置。

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

然后,应用以下配置更新以在默认 HTTPS 端口上显示控制面板,其中包含来自不同样板的数据。

{ "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/3/temperature", "/boiler/3/pressure", "/boiler/4/temperature", "/boiler/4/pressure" ] } }

在此更新后,控制面板组件具有以下配置。

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