本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与组件配置交互
组件配置 IPC 服务让您可以执行以下操作:
-
获取和设置组件配置参数。
-
订阅组件配置更新。
-
在 Nucleus 应用组件配置更新之前对其进行验证。
主题
最低 SDK 版本
下表列出了与组件配置交互时必须使用的 AWS IoT Device SDK 最低版本。
| SDK | 最低版本 |
|---|---|
|
v1.2.10 |
|
|
v1.5.3 |
|
|
v1.17.0 |
|
|
v1.12.0 |
GetConfiguration
获取核心设备上某个组件的配置值。您可以指定要获取配置值的键路径。
请求
此操作的请求包含以下参数:
componentName(Python:component_name)-
(可选)组件的名称。
默认为发出请求的组件名称。
keyPath(Python:key_path)-
配置值的键路径。指定一个列表,其中每个条目都是配置对象中单个级别的键。例如,在以下配置中,指定
["mqtt", "port"]以获取port的值。{ "mqtt": { "port": 443 } }要获取组件的完整配置,请指定一个空列表。
响应
此操作的响应包含以下信息:
componentName(Python:component_name)-
组件名称。
value-
请求的配置,以对象形式表示。
UpdateConfiguration
更新核心设备上此组件的配置值。
请求
此操作的请求包含以下参数:
keyPath(Python:key_path)-
(可选)要更新的容器节点(对象)的键路径。指定一个列表,其中每个条目都是配置对象中单个级别的键。例如,在以下配置中指定键路径
["mqtt"]和合并值{ "port": 443 }以设置port的值。{ "mqtt": { "port": 443 } }键路径必须在配置中指定容器节点(对象)。如果组件配置中不存在该节点,则此操作会创建该节点并将其值设置为
valueToMerge中的对象。默认为配置对象的根目录。
timestamp-
当前 Unix 纪元时间(以毫秒为单位)。此操作使用此时间戳来解析键的并发更新。如果组件配置中的键的时间戳大于请求中的时间戳,则请求将失败。
valueToMerge(Python:value_to_merge)-
要在
keyPath中指定的位置合并的配置对象。有关更多信息,请参阅 更新组件配置。
响应
此操作在其响应中未提供任何信息。
SubscribeToConfigurationUpdate
订阅即可在组件配置更新时接收通知。订阅某个键后,只要该键的任何子项有所更新,您都会收到通知。
此操作是一种订阅操作,您可以在其中订阅事件消息流。要使用此操作,请定义一个流响应处理程序,其中包含处理事件消息、错误和流关闭的函数。有关更多信息,请参阅 订阅 IPC 事件流。
事件消息类型:ConfigurationUpdateEvents
请求
此操作的请求包含以下参数:
componentName(Python:component_name)-
(可选)组件的名称。
默认为发出请求的组件名称。
keyPath(Python:key_path)-
要订阅的配置值的键路径。指定一个列表,其中每个条目都是配置对象中单个级别的键。例如,在以下配置中,指定
["mqtt", "port"]以获取port的值。{ "mqtt": { "port": 443 } }要订阅组件配置中所有值的更新,请指定一个空列表。
响应
此操作的响应包含以下信息:
messages-
通知消息流。此对象
ConfigurationUpdateEvents包含以下信息:configurationUpdateEvent(Python:configuration_update_event)-
配置更新事件。此对象
ConfigurationUpdateEvent包含以下信息:componentName(Python:component_name)-
组件名称。
keyPath(Python:key_path)-
已更新的配置值的键路径。
SubscribeToValidateConfigurationUpdates
订阅即可在此组件配置更新之前接收通知。这样,组件就可以验证自己配置的更新。使用 SendConfigurationValidityReport 操作告知 Nucleus 配置是否有效。
重要
本地部署不会通知组件更新。
此操作是一种订阅操作,您可以在其中订阅事件消息流。要使用此操作,请定义一个流响应处理程序,其中包含处理事件消息、错误和流关闭的函数。有关更多信息,请参阅 订阅 IPC 事件流。
事件消息类型:ValidateConfigurationUpdateEvents
请求
此操作的请求没有任何参数。
响应
此操作的响应包含以下信息:
messages-
通知消息流。此对象
ValidateConfigurationUpdateEvents包含以下信息:validateConfigurationUpdateEvent(Python:validate_configuration_update_event)-
配置更新事件。此对象
ValidateConfigurationUpdateEvent包含以下信息:deploymentId(Python:deployment_id)-
更新组件的 AWS IoT Greengrass 部署的 ID。
configuration-
包含新配置的对象。
SendConfigurationValidityReport
告知 Nucleus 对此组件的配置更新是否有效。如果您告知 Nucleus 新配置无效,则部署将失败。使用 SubscribeToValidateConfigurationUpdates 操作订阅即可验证配置更新。
如果组件未响应验证配置更新通知,则 Nucleus 会按您在部署配置验证策略中指定的时间等待。超时之后,Nucleus 继续部署。默认组件验证超时值为 20 秒。有关更多信息,请参阅创建部署,以及您在调用 CreateDeployment 操作时可以提供的 DeploymentConfigurationValidationPolicy 对象。
请求
此操作的请求包含以下参数:
configurationValidityReport(Python:configuration_validity_report)-
告知 Nucleus 配置更新是否有效的报告。此对象
ConfigurationValidityReport包含以下信息:status-
有效状态。此枚举
ConfigurationValidityStatus包含以下值:-
ACCEPTED– 配置有效,Nucleus 可以将其应用于该组件。 -
REJECTED– 配置无效,部署失败。
-
deploymentId(Python:deployment_id)-
已请求配置更新的 AWS IoT Greengrass 部署的 ID。
message-
(可选)用于报告配置无效原因的消息。
响应
此操作在其响应中未提供任何信息。