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

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

与组件生命周期交互

使用组件生命周期 IPC 服务可以:

  • 更新核心设备上的组件状态。

  • 订阅组件状态更新。

  • 防止核心在部署期间阻止组件应用更新。

  • 暂停和恢复组件进程。

最低 SDK 版本

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

Authorization

要暂停或恢复自定义组件中的其他组件,必须定义允许您的组件管理其他组件的授权策略。有关如何定义授权策略的信息,请参阅授权组件执行 IPC 操作.

组件生命周期管理的授权策略具有以下属性。

IPC 服务标识符: aws.greengrass.ipc.lifecycle

运算 描述 资源

aws.greengrass#PauseComponent

允许组件暂停您指定的组件。

组件名称,或*允许访问所有组件。

aws.greengrass#ResumeComponent

允许组件恢复您指定的组件。

组件名称,或*允许访问所有组件。

*

允许组件暂停和恢复您指定的组件。

组件名称,或*允许访问所有组件。

授权策略v2 v2

您可以参考以下授权策略示例来帮助您为组件配置授权策略。

例 示例授权策略

以下示例授权策略允许组件暂停和恢复所有组件。

{ "accessControl": { "aws.greengrass.ipc.lifecycle": { "com.example.MyLocalLifecycleComponent:lifecycle:1": { "policyDescription": "Allows access to pause/resume all components.", "operations": [ "aws.greengrass#PauseComponent", "aws.greengrass#ResumeComponent" ], "resources": [ "*" ] } } } }

UpdateState

更新核心设备上组件的状态。

请求

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

state

要设置的状态。这个枚举,LifecycleState,具有以下值:

  • RUNNING

  • ERRORED

响应

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

SubscribeToComponentUpdates

订阅即可在收到通知之前收到通知Amazon IoT Greengrass核心软件更新组件。该通知指定了核心是否会作为更新的一部分重新启动。

仅当部署的组件更新策略指定通知组件时,Nucleus 才会发送更新通知。原定设置行为是通知组件。有关更多信息,请参阅创建部署还有DeploymentComponentUpdatePolicy当你调用 the 时你可以提供的对象CreateDeployment操作。

重要

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

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

事件消息类型: ComponentUpdatePolicyEvents

提示

您可以按照教程学习如何开发有条件地延迟组件更新的组件。有关更多信息,请参阅 教程:开发一个延迟组件更新的 Greengrass 组件

请求

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

响应

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

messages

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

preUpdateEvent(Python:pre_update_event)

(可选)一个表示原子核想要更新组件的事件。你可以用DeferComponentUpdate操作用于确认或推迟更新,直到组件准备重新启动。这个对象,PreComponentUpdateEvent,包含以下信息:

deploymentId(Python:deployment_id)

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

isGgcRestarting(Python:is_ggc_restarting)

Nucleus 是否需要重启才能应用更新。

postUpdateEvent(Python:post_update_event)

(可选)一个事件,表示原子核更新了组件。这个对象,PostComponentUpdateEvent,包含以下信息:

deploymentId(Python:deployment_id)

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

注意

此功能需要 v2.7.0 或更高版本的 Greengrass 核组件。

DeferComponentUpdate

确认或推迟您发现的组件更新SubscribeToComponentUpdates. 您可以指定等待多长时间,然后核心再次检查您的组件是否已准备好让组件继续更新。您也可以使用此操作告知核心您的组件已准备好进行更新。

如果组件未响应组件更新通知,则核心将等待您在部署的组件更新策略中指定的时间。超时之后,核心继续部署。默认组件更新超时时间为 60 秒。有关更多信息,请参阅创建部署还有DeploymentComponentUpdatePolicy当你调用 the 时你可以提供的对象CreateDeployment操作。

提示

您可以按照教程学习如何开发有条件地延迟组件更新的组件。有关更多信息,请参阅 教程:开发一个延迟组件更新的 Greengrass 组件

请求

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

deploymentId(Python:deployment_id)

的 IDAmazon IoT Greengrass推迟部署。

message

(可选)要延迟更新的组件的名称。

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

recheckAfterMs(Python:recheck_after_ms)

延迟更新的时间(以毫秒为单位)。原子核等待这段时间然后再发送一个PreComponentUpdateEvent你可以用它来发现SubscribeToComponentUpdates.

指定0确认更新。这会告诉核心,你的组件已准备好进行更新。

默认为零毫秒,这意味着确认更新。

响应

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

PauseComponent

此功能适用于 v2.4.0 及更高版本的Greengrass 核组件.Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。

暂停核心设备上组件的进程。要恢复组件,请使用ResumeComponent操作。

只能暂停通用组件。如果您尝试暂停任何其他类型的组件,则此操作会引发InvalidRequestError.

注意

此操作无法暂停容器化进程,例如 Docker 容器。要暂停和恢复 Docker 容器,可以使用docker asedocker K命令。

此操作不会暂停组件依赖关系或依赖于您暂停的组件的组件。暂停作为另一个组件依赖项的组件时,请考虑这种行为,因为依赖组件在暂停依赖关系时可能会遇到问题。

当您重新启动或关闭已暂停的组件时(例如通过部署),Greengrass nucleus 会恢复该组件并运行其关闭生命周期。

重要

要使用此操作,必须定义授权策略,授予使用此操作的权限。有关更多信息,请参阅 Authorization

最低 SDK 版本

下表列出了的最低版本Amazon IoT Device SDK必须使用它来暂停和恢复组件。

请求

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

componentName(Python:component_name)

要暂停的组件的名称,必须是通用组件。有关更多信息,请参阅 组件类型

响应

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

ResumeComponent

此功能适用于 v2.4.0 及更高版本的Greengrass 核组件.Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。

在核心设备上恢复组件的进程。要暂停组件,请使用PauseComponent操作。

只能恢复暂停的组件。如果您尝试恢复未暂停的组件,此操作将引发InvalidRequestError.

重要

要使用此操作,必须定义授权策略以授予执行此操作的权限。有关更多信息,请参阅 Authorization

最低 SDK 版本

下表列出了的最低版本Amazon IoT Device SDK必须使用它来暂停和恢复组件。

请求

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

componentName(Python:component_name)

要检索的组件名称。

响应

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