将AWS IoT Greengrass组件部署到设备 - AWS IoT Greengrass

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

将AWS IoT Greengrass组件部署到设备

您可以使用AWS IoT Greengrass将组件部署到设备或设备组。您可以使用部署来定义发送到设备的组件和配置。 AWS IoT Greengrass部署到代表 Greengrass 核心设备的目标、AWS IoT事物或事物组。 AWS IoT Greengrass使用AWS IoT Core作业部署到您的核心设备。您可以配置任务如何部署到您的设备。

核心设备部署

每台核心设备都运行该设备的部署组件。对同一目标的新部署会覆盖先前部署到该目标的部署。创建部署时,您可以定义要应用于核心设备现有软件的组件和配置。

修改目标的部署时,会将先前修订版中的组件替换为新修订版中的组件。例如,您将日志管理器秘密经理组件部署到事物组TestGroup。然后,您为TestGroup其创建另一个部署,该部署仅指定密钥管理器组件。因此,该组中的核心设备不再运行日志管理器。

平台依赖关系解决方案

当核心设备收到部署时,它会进行检查以确保组件与核心设备兼容。例如,如果您将部署Firehose到 Windows 目标,则部署将失败。

组件依赖关系解析

核心设备还会检查每个组件的依赖关系是否与将其他组件部署到该事物组的版本限制兼容。如果组件的版本限制重叠,Greengrass 将使用该组件的最高适用版本。例如:

  • 将组件 A 部署到TestGroup。组件 A 取决于组件com.example.PythonRuntime版本 3.5-3.10。

  • 然后,将组件 B 部署到TestGroup。组件 B 依赖于 3.7 到 3.8 com.example.PythonRuntime 版本的组件。

因此,核心设备TestGroup决定可以部署该com.example.PythonRuntime组件的 3.8 版,因为此版本是版本限制重叠的最高适用版本。

组件依赖关系,例如组件。

然后将组件 C 部署到TestGroup。组件 C 依赖于组件com.example.PythonRuntime版本 2.6-2.7。此部署失败,因为没有满足约束 2.6-2.7 和 3.7-3.8 的组件版本。

导致部署失败的组件依赖关系。

从事物组中移除设备

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

2.5.1 and later

从事物组中移除核心设备时,其行为取决于AWS IoT策略是否授予greengrass:ListThingGroupsForCoreDevice权限。有关此权限和核心设备AWS IoT策略的更多信息,请参阅AWS IoT Greengrass 的设备身份验证和授权

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

    当您从事物组中移AWS IoT Greengrass除核心设备时,会在下次对该设备进行部署时移除该事物组的组件。如果设备上的某个组件包含在下次部署中,则该组件不会从设备中删除。

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

    从事物组中移除核心设备时,AWS IoT Greengrass不会从设备中删除该事物组的组件。

    要从设备中移除组件,请使用 Greengrass CLI 的部署创建命令。使用--remove参数指定要移除的组件,并使用--groupId参数指定事物组。

2.5.0

当您从事物组中移AWS IoT Greengrass除核心设备时,会在下次对该设备进行部署时移除该事物组的组件。如果设备上的某个组件包含在下次部署中,则该组件不会从设备中删除。

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

2.0.x - 2.4.x

从事物组中移除核心设备时,AWS IoT Greengrass不会从设备中删除该事物组的组件。

要从设备中移除组件,请使用 Greengrass CLI 的部署创建命令。使用--remove参数指定要移除的组件,并使用--groupId参数指定事物组。

部署

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

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

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

部署选项

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

  • AWS IoT Greengrass组件

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

    您可以将自定义组件和AWS提供的组件部署到您的设备上。部署组件时,会AWS IoT Greengrass识别所有组件依赖关系并将其部署。有关更多信息,请参阅 开发AWS IoT Greengrass组件AWS-提供的组件

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

    重要

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

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

  • 部署策略

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

  • 停止配置

    定义何时以及如何停止部署。如果满足您定义的标准,则部署将停止并失败。例如,您可以将部署配置为在最少数量的设备收到部署后仍有一定百分比的设备未能应用该部署时停止。

  • 推出配置

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

  • 超时配置

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

重要

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