开发 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 Greengrass Core 软件以系统用户和组的身份运行您在核心设备上配置的组件,例如ggc_userggc_group。这意味着组件拥有该系统用户的权限。如果使用没有主目录的系统用户,那么组件将无法运行依赖主目录的命令或代码。例如,这意味着您不能使用 pip install some-library --user 命令来安装 Python 软件包。如果您按照入门教程设置核心设备,那么您的系统用户则没有主目录。有关如何配置运行组件的用户和组的更多信息,请参阅 配置运行组件的用户

注意

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

组件生命周期

组件生命周期定义了 Amazon IoT Greengrass 核心软件用于安装和运行组件的阶段。每个阶段都定义一个脚本和其他信息,用于指定组件的行为。例如,在安装组件时, Amazon IoT Greengrass Core 软件会运行该组件的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 Nucleus

  • 插件 (aws.greengrass.plugin)

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

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

  • 通用 (aws.greengrass.generic)

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

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

  • Lambda (aws.greengrass.lambda)

    Greengrass Nucleus 使用 Lambda 启动程序组件运行 Lambda 函数。

    当您从 Lambda 函数创建组件时,该组件包括此类型。有关更多信息,请参阅 运行 Amazon Lambda 函数

注意

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