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

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

与组件配置交互

通过组件配置 IPC 服务,您可以执行以下操作:

  • 获取并设置组件配置参数。

  • 订阅组件配置更新。

  • 在核心应用组件配置更新之前验证组件配置更新。

最低 SDK 版本

下表列出了的最低版本Amazon IoT Device SDK必须使用它来与组件配置进行交互。

SDK 最低版本

Amazon IoT Device SDK对于 Java v2

v1.2.10

Amazon IoT Device SDK对于 Python v2

v1.5.3

Amazon IoT Device SDK对于 C++ v2

Linux:v1.13.0;视窗:v1.14.6

GetConfiguration

获取核心设备上组件的配置值。您可以指定要获取配置值的键路径。

请求

此操作的请求具有以下参数:

componentNamePython(Python:component_name

(可选)组件名称。

默认为发出请求的组件的名称。

keyPathPython(Python:key_path

配置值的关键路径。指定一个列表,其中每个条目都是配置对象中单个级别的关键。例如,指定["mqtt", "port"]要获取其值port在以下配置中。

{ "mqtt": { "port": 443 } }

要获取组件的完整配置,请指定空列表。

响应

此操作的响应包含以下信息:

componentNamePython(Python:component_name

组件名称。

value

请求的配置作为对象。

更新配置

更新核心设备上此组件的配置值。

请求

此操作的请求具有以下参数:

keyPathPython(Python:key_path

(可选)要更新的容器节点(对象)的键路径。指定一个列表,其中每个条目都是配置对象中单个级别的关键。例如,指定密钥路径["mqtt"]和合并值{ "port": 443 }设置的值port在以下配置中。

{ "mqtt": { "port": 443 } }

密钥路径必须在配置中指定容器节点(对象)。如果该节点在组件的配置中不存在,则此操作将创建该节点并将其值设置为中的对象valueToMerge.

默认为配置对象的根级。

timestamp

以毫秒为单位的当前 Unix 纪元时间。此操作使用此时间戳来解析密钥的并发更新。如果组件配置中的密钥的时间戳大于请求中的时间戳,则请求将失败。

valueToMergePython(Python:value_to_merge

要在中指定的位置合并的配置对象keyPath. 有关更多信息,请参阅 更新组件配置

响应

此操作在响应中不提供任何信息。

订阅配置更新

订阅以便在组件配置更新时接收通知。当您订阅密钥时,您会在该密钥的任何子项更新时收到通知。

此操作是订阅操作,您可以在其中订阅事件消息流。要使用此操作,请定义一个具有处理事件消息、错误和流封闭的函数的流响应处理程序。有关更多信息,请参阅 订阅 IPC 事件直播

事件消息类型: ConfigurationUpdateEvents

请求

此操作的请求具有以下参数:

componentNamePython(Python:component_name

(可选)组件名称。

默认为发出请求的组件的名称。

keyPathPython(Python:key_path

要订阅的配置值的关键路径。指定一个列表,其中每个条目都是配置对象中单个级别的关键。例如,指定["mqtt", "port"]要获取其值port在以下配置中。

{ "mqtt": { "port": 443 } }

要订阅组件配置中所有值的更新,请指定一个空列表。

响应

此操作的响应包含以下信息:

messages

通知消息的流。这个对象,ConfigurationUpdateEvents,包含以下信息:

configurationUpdateEventPython(Python:configuration_update_event

配置更新事件。这个对象,ConfigurationUpdateEvent,包含以下信息:

componentNamePython(Python:component_name

组件名称。

keyPathPython(Python:key_path

已更新的配置值的关键路径。

订阅验证配置更新

在此组件的配置更新之前订阅以接收通知。这使组件可以验证对自己配置的更新。使用发送配置有效性报告操作来告诉核心配置是否有效。

重要

本地部署不会通知组件更新。

此操作是订阅操作,您可以在其中订阅事件消息流。要使用此操作,请定义一个具有处理事件消息、错误和流封闭的函数的流响应处理程序。有关更多信息,请参阅 订阅 IPC 事件直播

事件消息类型: ValidateConfigurationUpdateEvents

请求

此操作的请求没有任何参数。

响应

此操作的响应包含以下信息:

messages

通知消息的流。这个对象,ValidateConfigurationUpdateEvents,包含以下信息:

validateConfigurationUpdateEventPython(Python:validate_configuration_update_event

配置更新事件。这个对象,ValidateConfigurationUpdateEvent,包含以下信息:

deploymentIdPython(Python:deployment_id

的 IDAmazon IoT Greengrass更新组件的部署。

configuration

包含新配置的对象。

发送配置有效性报告

告诉核心对此组件的配置更新是否有效。如果你告诉核心新配置无效,部署将失败。使用订阅验证配置更新操作来订阅以验证配置更新。

如果组件没有响应验证配置更新通知,则核心将等待您在部署的配置验证策略中指定的时间。超时之后,核心将继续进行部署。默认组件验证超时为 20 秒。有关更多信息,请参阅 。创建部署部署配置验证策略调用时可以提供的对象CreateDeploymentoperation.

请求

此操作的请求具有以下参数:

configurationValidityReportPython(Python:configuration_validity_report

告诉核心配置更新是否有效的报告。这个对象,ConfigurationValidityReport,包含以下信息:

status

有效性状态。这枚举ConfigurationValidityStatus具有以下值:

  • ACCEPTED— 配置是有效的,核心可以将其应用于此组件。

  • REJECTED— 配置无效且部署失败。

deploymentIdPython(Python:deployment_id

的 IDAmazon IoT Greengrass请求配置更新的部署。

message

(可选)报告配置为什么无效的消息。

响应

此操作在响应中不提供任何信息。