本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与组件生命周期交互
使用组件生命周期 IPC 服务可以:
-
更新核心设备上的组件状态。
-
订阅组件状态更新。
-
防止核心在部署期间停止组件以应用更新。
-
暂停和恢复组件进程。
主题
Authorization
要暂停或恢复自定义组件中的其他组件,必须定义允许组件管理其他组件的授权策略。有关定义授权策略的信息,请参阅授权组件执行 IPC 操作.
组件生命周期管理的授权策略具有以下属性。
IPC 服务标识符: aws.greengrass.ipc.lifecycle
操作 | 描述 | 资源 |
---|---|---|
|
允许组件暂停指定的组件。 |
组件名称,或 |
|
允许组件恢复指定的组件。 |
组件名称,或 |
|
允许组件暂停和恢复指定的组件。 |
组件名称,或 |
例 授权策略示例
以下示例授权策略允许组件暂停和恢复所有组件。
{ "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
更新核心设备上组件的状态。
Request
此操作的请求包含以下参数:
state
-
要设置的状态。此枚举,
LifecycleState
,具有以下值:-
RUNNING
-
ERRORED
-
Response
此操作在其响应中不提供任何信息。
SubscribeToComponentUpdates
订阅以在Amazon IoT Greengrass核心软件更新组件。通知指定核心是否将作为更新的一部分重新启动。
仅当部署的组件更新策略指定通知组件时,核心才会发送更新通知。默认行为是通知组件。有关更多信息,请参阅 。创建部署和部署组件日期策略对象,您可以在调用CreateDeploymentoperation.
本地部署不会在更新之前通知组件。
此操作是订阅事件消息流的订阅操作。要使用此操作,请使用处理事件消息、错误和流关闭的函数定义流响应处理程序。有关更多信息,请参阅订阅 IPC 事件流。
事件消息类型:事件 ComponentUpdatePolicyEvents
Request
此操作的请求没有任何参数。
Response
此操作的响应包含以下信息:
messages
-
通知消息流。这个对象,
ComponentUpdatePolicyEvents
包含以下信息:preUpdateEvent
-
(可选)指示核心要更新组件的事件。您可以使用DeferComponentUpdate操作确认或延迟更新,直到组件准备好重新启动为止。这个对象,
PreComponentUpdateEvent
包含以下信息:deploymentId
-
的 IDAmazon IoT Greengrass部署来更新组件。
isGgcRestarting
-
核是否需要重新启动才能应用更新。
postUpdateEvent
-
(可选)一个事件,指示核心更新了组件。这个对象,
PostComponentUpdateEvent
包含以下信息:deploymentId
-
的 IDAmazon IoT Greengrass部署,该部署更新了组件。
DeferComponentUpdate
确认或延迟您发现的组件更新SubscribeToComponentUpdates. 如果您的组件已准备好让组件更新继续,则可以指定核心再次检查之前等待的时间。您还可以使用此操作告诉核心组件已准备好进行更新。
如果组件未响应组件更新通知,则核心将等待您在部署的组件更新策略中指定的时间。超时后,核心继续部署。默认组件更新超时时间为 60 秒。有关更多信息,请参阅 。创建部署和部署组件日期策略对象,您可以在调用CreateDeploymentoperation.
Request
此操作的请求包含以下参数:
deploymentId
-
的 IDAmazon IoT Greengrass部署以推迟。
message
-
(可选)要延迟更新的组件名称。
默认为发出请求的组件的名称。
recheckAfterMs
-
延迟更新的时间(以毫秒为单位)。核等待这么长的时间,然后发送另一个
PreComponentUpdateEvent
你可以发现SubscribeToComponentUpdates.指定
0
以确认更新。这会告诉核心您的组件已准备好进行更新。默认值为零毫秒,这意味着要确认更新。
Response
此操作在其响应中不提供任何信息。
PauseComponent
此功能适用于 v2.4.0 及更高版本的Greengrass 核组件.
暂停核心设备上的组件进程。要恢复组件,请使用恢复组合operation.
您只能暂停通用组件。如果您尝试暂停任何其他类型的组件,此操作会引发InvalidRequestError
.
此操作不会暂停组件依赖项或依赖于您暂停的组件的组件。当您暂停作为另一个组件依赖关系的组件时,请考虑此行为,因为依赖组件在暂停其依赖关系时可能会遇到问题。
当您重新启动或关闭暂停的组件(如通过部署)时,Greengrass 核心将恢复该组件并运行其关闭生命周期。
若要使用此操作,您必须定义授予使用此操作的权限的授权策略。有关更多信息,请参阅Authorization。
最低开发工具包版本
下表列出了的最低版本Amazon IoT Device SDK,您必须使用它来暂停和恢复组件。
开发工具包 | 最低版本 |
---|---|
v1.4.3 |
|
v1.6.2 |
|
1.13.1 |
Request
此操作的请求包含以下参数:
componentName
-
要暂停的组件的名称,该组件必须是通用组件。有关更多信息,请参阅组件类型。
Response
此操作在其响应中不提供任何信息。
ResumeComponent
此功能适用于 v2.4.0 及更高版本的Greengrass 核组件.
恢复核心设备上的组件进程。要暂停组件,请使用封闭式operation.
您只能恢复已暂停的组件。如果您尝试恢复未暂停的组件,此操作将引发InvalidRequestError
.
要使用此操作,您必须定义授权策略来授予这样做的权限。有关更多信息,请参阅Authorization。
最低开发工具包版本
下表列出了的最低版本Amazon IoT Device SDK,您必须使用它来暂停和恢复组件。
开发工具包 | 最低版本 |
---|---|
v1.4.3 |
|
v1.6.2 |
|
1.13.1 |
Request
此操作的请求包含以下参数:
componentName
-
要恢复的组件名称。
Response
此操作在其响应中不提供任何信息。