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

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

部署Amazon IoT Greengrass组件到设备

您可以使用将组件部署到单个设备或设备组Amazon IoT Greengrass. 与部署,你定义Amazon IoT Greengrass要部署到核心设备的组件和配置。Amazon IoT Greengrass部署到目标设备,它们是Amazon IoT代表 Greengrass 核心设备的事物或事物组。Amazon IoT Greengrass使用Amazon IoT Core工作部署到您的核心设备,这样您就可以配置如何将作业部署到您的设备。

每台核心设备都运行针对该设备的部署中的软件组合。但是,对同一目标的部署会覆盖先前对该目标的部署。创建部署时,需要定义要应用于核心设备现有软件的组件和配置。在修订目标的部署时,您可以将先前修订版本中的组件替换为新修订版本中的组件。例如,您部署组件AB事物组X. 然后部署组件BC到另一个事物组Y. 结果,组件AB, 和C都在属于这两个组的任意核心设备上运行。然后,创建事物组的另一个部署X它只指定组件B. 因此,该组中的核心设备不再运行组件A.

当核心设备收到部署时,它会检查部署的组件是否与核心设备兼容。核心设备检查其是否满足每个组件的平台要求。如果组件不支持核心设备的平台,则部署将失败。核心设备还会检查每个组件的依赖关系是否与从其他部署到包含此核心设备的不同目标的版本限制兼容。例如,您部署组件A事物组X和组件A取决于组件com.example.PythonRuntime版本3.5 - 3.10. 然后部署组件B事物组Y和组件B取决于组件com.example.PythonRuntime版本3.7 - 3.10. 因此,这些事物组中的核心设备决定他们可以部署版本3.7 - 3.10com.example.PythonRuntime组件,因为这些版本是部署的版本约束重叠的地方。然后,部署组件C事物组Z和组件C取决于组件com.example.PythonRuntime版本2.6 - 2.7. 此部署失败,因为没有满足版本限制的组件版本2.6 - 2.73.7 - 3.10.Amazon IoT Greengrass使用NPM 语义版本约束.

默认情况下,在核心设备应用部署之前,它会通知核心设备上的每个组件。Greengrass 组件可以响应这些通知以推迟部署。例如,当设备电池电量不足或正在运行无法中断的进程时,您可能希望推迟部署。有关更多信息,请参阅 教程:开发一个延迟组件更新的 Greengrass 组件。创建部署时,您可以配置它应用部署,而不通知组件。

注意

从事物组中移除核心设备时,组件部署行为取决于Greengrass 核核心设备运行。

2.5.1 and later

移除事物组的行为取决于核心设备的Amazon IoT策略授予greengrass:ListThingGroupsForCoreDevice权限。有关此权限的更多信息,以及Amazon IoT核心设备策略,请参阅Amazon IoT Greengrass 的设备身份验证和授权.

  • 如果Amazon IoT策略授予此权限

    从事物组中移除核心设备时,Amazon IoT Greengrass在下一个部署中从设备中移除该事物组的组件。但是,如果另一个部署以核心设备为目标并包含组件,则核心设备不会删除该组件。

  • 如果Amazon IoT策略未授予此权限

    从事物组中移除核心设备时,Amazon IoT Greengrass不会从设备中删除该事物组的组件。因此,建议您不要在部署组件的事物组中删除核心设备。

    要从设备中移除组件,而该设备不再是部署该组件的事物组的成员,请使用deployment createGreengrass CLI 的命令。使用指定要移除的组件--remove参数,并使用--groupId参数。

2.5.0

从事物组中移除核心设备时,Amazon IoT Greengrass在下一个部署中从设备中移除该事物组的组件。但是,如果另一个部署以核心设备为目标并包含组件,则核心设备不会删除该组件。

此行为要求核心设备的Amazon IoT策略授予greengrass:ListThingGroupsForCoreDevice权限。如果核心设备没有此权限,则核心设备无法应用部署。有关更多信息,请参阅 Amazon IoT Greengrass 的设备身份验证和授权

2.0.x - 2.4.x

从事物组中移除核心设备时,Amazon IoT Greengrass不会从设备中删除该事物组的组件。因此,建议您不要在部署组件的事物组中删除核心设备。

要从设备中移除组件,而该设备不再是部署该组件的事物组的成员,请使用deployment createGreengrass CLI 的命令。使用指定要移除的组件--remove参数,并使用--groupId参数。

部署是持续的。创建部署时,Amazon IoT Greengrass将部署部署部署部署部署到联机的目标设备。如果目标设备未联机,则它将在下次连接到时收到部署Amazon IoT Greengrass. 将核心设备添加到目标事物组时,Amazon IoT Greengrass向设备发送该事物组的最新部署。

每个目标事物或事物组一次只能有一个部署。这意味着,当您创建一个目标的部署时,Amazon IoT Greengrass不再部署该目标部署的先前修订版。

部署提供了多个选项,可让您控制哪些设备接收更新以及如何部署更新。创建部署时,您可以配置以下选项:

  • Amazon IoT Greengrass组件

    定义要在目标设备上安装和运行的组件。Amazon IoT Greengrass组件是您在 Greengrass 核心设备上部署和运行的软件模块。仅当组件支持设备平台时,设备才会接收组件。这样,即使目标设备在多个平台上运行,您也可以部署到设备组。如果组件不支持设备的平台,则该组件不会部署到设备上。

    您可以部署自定义组件和Amazon-为您的设备提供的组件。部署组件时,Amazon IoT Greengrass识别任何组件依赖关系并进行部署。有关更多信息,请参阅 开发Amazon IoT Greengrass组件Amazon-提供的组件

    您可以为每个组件定义要部署的版本和配置更新。这些区域有:配置更新指定如何修改核心设备上组件的现有配置;如果核心设备上不存在该组件,则指定如何修改组件的默认配置。您可以指定要重置为默认值的配置值以及要合并到核心设备上的新配置值。当核心设备收到针对不同目标的部署,并且每个部署都指定了兼容的组件版本时,核心设备会根据您创建部署时的时间戳按顺序应用配置更新。有关更多信息,请参阅 Update component configurations

    重要

    部署组件时,Amazon IoT Greengrass安装该组件的所有依赖项的最新受支持版本。正因为如此,新补丁版本的Amazon如果您向事物组添加新设备,或者更新了面向这些设备的部署,则提供的公共组件可能会自动部署到您的核心设备。某些自动更新(例如核心更新)可能会导致设备意外重启。

    为防止设备上正在运行的组件进行意外更新,我们建议您在执行以下操作时直接包含该组件的首选版本创建部署. 有关更新行为的更多信息Amazon IoT GreengrassCore 软件,请参阅更新Amazon IoT Greengrass核心软件 (OTA).

  • 部署策略

    定义何时可以安全地部署配置以及部署失败时该怎么做。您可以指定是否等待组件报告它们可以更新。如果设备应用了失败的部署,您还可以指定是否将设备回滚到之前的配置。

  • 停止配置

    定义停止部署的时间和方式。如果满足您定义的条件,部署将停止并失败。例如,您可以将部署配置为在收到最小数量的设备后有一定百分比的设备无法应用该部署时停止。

  • 推出配置

    定义部署部署到目标设备的速率。您可以配置具有最小和最大速率界限的指数速率增加。

  • 超时配置

    定义每个设备应用部署所具有的最长时间。如果设备超过了您指定的持续时间,则该设备将无法应用部署。

重要

自定义组件可以定义 S3 存储桶中的项目。当Amazon IoT Greengrass核心软件部署一个组件,它从Amazon Web Services 云. 默认情况下,核心设备角色不允许访问 S3 存储桶。要在 S3 存储桶中部署定义项目的自定义组件,核心设备角色必须授予从该存储桶下载项目的权限。有关更多信息,请参阅允许访问 S3 存储桶以获取组件项目