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

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

开发Amazon IoT Greengrass组件

您可以在 Greengrass 核心设备上开发和测试组件。因此,您无需与交互即可创建和迭代Amazon IoT Greengrass软件。Amazon Web Services 云完成组件版本后,可以将其上传到Amazon IoT Greengrass云端,这样您和您的团队就可以将该组件部署到队列中的其他设备上。有关如何部署组件的更多信息,请参阅将Amazon IoT Greengrass组件部署到设备

每个组件都由方和工件组成。

  • 食谱

    每个组件都包含一个用于定义其元数据的配方文件。该配方还指定了组件的配置参数、组件依赖关系、生命周期和平台兼容性。组件生命周期定义了安装、运行和关闭组件的命令。有关更多信息,请参阅 Amazon IoT Greengrass组件配方参考

    你可以用 JSONYAML 格式定义配方。

  • 构件

    组件可以有任意数量的工件,即组件二进制文件。构件可以包括脚本、编译后的代码、静态资源以及组件消耗的任何其他文件。组件还可以使用组件依赖项中的工件。

Amazon IoT Greengrass提供了预先构建的组件,您可以在应用程序中使用这些组件并部署到您的设备上。例如,您可以使用流管理器组件将数据上传到各种Amazon服务,也可以使用 CloudWatch 指标组件将自定义指标发布到 Amazon CloudWatch。有关更多信息,请参阅 Amazon-提供的组件

Amazon IoT Greengrass策划了一份名为 Greengrass 软件目录的 Greengrass 组件索引。该目录追踪了 Greengrass 社区开发的 Greengrass 组件。您可以从该目录中下载、修改和部署组件来创建 Greengrass 应用程序。有关更多信息,请参阅 社区组件

Amazon IoT GreengrassCore 软件以系统用户和组的身份运行您在核心设备上配置的组件,例如ggc_userggc_group。这意味着组件拥有该系统用户的权限。如果您使用没有主目录的系统用户,则组件不能使用使用主目录的运行命令或代码。例如,这意味着你不能使用pip install some-library --user命令来安装 Python 软件包。如果您按照入门教程设置核心设备,则您的系统用户没有主目录。有关如何配置运行组件的用户和组的更多信息,请参阅配置运行组件的用户

注意

Amazon IoT Greengrass使用组件的语义版本。语义版本遵循 major.minor.patch 编号系统。例如,版本1.0.0表示组件的第一个主要版本。有关更多信息,请参阅语义版本规范

组件生命周期

组件生命周期定义了Amazon IoT Greengrass核心软件用于安装和运行组件的阶段。每个阶段都定义一个脚本和其他信息,用于指定组件的行为。例如,在安装组件时,Amazon IoT GreengrassCore 软件会运行该组件的Install生命周期脚本。核心设备上的组件具有以下生命周期状态:

  • NEW— 组件的配方和工件已加载到核心设备上,但未安装该组件。组件进入此状态后,它会运行其安装脚本

  • INSTALLED— 组件安装在核心设备上。组件在运行安装脚本后进入此状态。

  • STARTING— 组件正在核心设备上启动。组件在运行其启动脚本时会进入此状态。如果启动成功,则组件进入RUNNING状态。

  • RUNNING— 该组件正在核心设备上运行。当组件运行其运行脚本或启动脚本中有活跃的后台进程时,它就会进入此状态。

  • FINISHED— 组件成功运行并完成运行。

  • STOPPING— 组件正在停止。组件在运行其关闭脚本时会进入此状态。

  • ERRORED— 组件遇到了错误。当组件进入此状态时,它会运行其恢复脚本。然后,组件重新启动以尝试恢复正常使用。如果组件三次进入ERRORED状态但未成功运行,则该组件变为BROKEN

  • BROKEN— 该组件多次遇到错误并且无法恢复。必须重新部署该组件才能对其进行修复。

组件类型

组件类型指定 Amazon IoT Greengrass Core 软件如何运行组件。组件可以有以下类型:

  • Nucleus () aws.greengrass.nucleus

    Greengrass 核心是提供核心软件最低功能的组件。Amazon IoT Greengrass有关更多信息,请参阅 Greengrass 核

  • 插件 (aws.greengrass.plugin)

    Greengrass nucleus 在与核心相同的 Java 虚拟机 (JVM) 中运行插件组件。当你在核心设备上更改插件组件的版本时,nucleus 会重新启动。要安装和运行插件组件,必须将 Greengrass nucleus 配置为作为系统服务运行。有关更多信息,请参阅 将 Greengrass 核心配置为系统服务

    提供的Amazon几个组件是插件组件,这使它们能够直接与 Greengrass 核接口。插件组件使用与 Greengrass 核心相同的日志文件。有关更多信息,请参阅 监控Amazon IoT Greengrass日志

  • 通用 (aws.greengrass.generic)

    如果通用组件定义了生命周期,Greengrass nucleus 就会运行该组件的生命周期脚本。

    此类型是自定义组件的默认类型。

  • Lambda () aws.greengrass.lambda

    Greengrass nucleus 使用 Lambda 启动器组件运行 Lambda 函数组件。

    当您通过 Lambda 函数创建组件时,该组件具有这种类型。有关更多信息,请参阅 运行Amazon Lambda函数

注意

我们不建议您在配方中指定组件类型。 Amazon IoT Greengrass在创建组件时为您设置类型。