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

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

将Amazon IoT Greengrass组件部署到设备

您可以使用将组件部署到单个设备或设备组Amazon IoT Greengrass。通过部署,您可以定义要部署到核心设备的Amazon IoT Greengrass组件和配置。 Amazon IoT Greengrass部署到目标设备,即代表 Greengrass 核心设备Amazon IoT的事物或事物组。 Amazon IoT Greengrass使用Amazon IoT Core任务部署到您的核心设备,因此您可以配置如何将任务部署到您的设备。

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

当核心设备收到部署时,它会检查部署的组件是否与核心设备兼容。核心设备检查其是否满足每个组件的平台要求。如果组件不支持核心设备的平台,则部署将失败。核心设备还检查每个组件的依赖关系是否与来自其他部署到包括该核心设备在内的不同目标的版本限制兼容。例如,您将组件部署A到事物组X,而组件A取决于组件com.example.PythonRuntime版本3.5 - 3.10。然后,您将组件部署B到事物组Y,组件B取决于组件com.example.PythonRuntime版本3.7 - 3.10。因此,这些事物组中的核心设备决定它们可以部署com.example.PythonRuntime组件3.7 - 3.10的版本,因为这些版本是部署版本限制重叠的地方。然后,将组件部署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不会从设备中删除该事物组的组件。因此,我们建议您不要从部署组件的事物组中移除核心设备。

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

2.5.0

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

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

2.0.x - 2.4.x

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

如果设备不再是部署该组件的事物组的成员,要从该设备中移除该组件,请使用 Greengrass CLI 的 deployment create 命令。使用--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-提供的组件

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

    重要

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

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

  • 部署策略

    定义何时部署配置以及部署发生故障时会执行什么操作。您可以指定是否等待组件报告可以更新。您还可以指定在设备应用部署失败时是否将设备还原到其先前的配置。

  • 停止配置

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

  • 推出配置

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

  • 超时配置

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

重要

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