本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建自定义Amazon IoT Greengrass组件
与Amazon IoT Greengrass,您可以在 Greengrass 核心设备上开发和测试组件。
开发自定义组件
要开发新组件或组件的新版本,请为新组件版本创建处方和对象。
在 Greengrass 的核心设备上开发一个组件。
-
为组件创建一个文件夹,其中包含食谱和工件的子文件夹。在您的 Greengrass 核心设备上运行以下命令以创建这些文件夹并更改为组件文件夹。Replace
~/绿草v2
以及用于本地开发的文件夹的路径。mkdir -p
~/greengrassv2
/{recipes,artifacts} cd~/greengrassv2
-
创建配方,以定义组件的元数据、参数、依赖项、生命周期和平台功能。运行以下命令以创建配方文件并在
nano
文本编辑器。在处方文件名中包括组件版本,以便您可以确定哪个处方反映了哪个组件版本。您可以为您的配方选择 YAML 或 JSON 格式。 -
定义组件的处方。有关更多信息,请参阅Amazon IoT Greengrass组件配方参考。
您的配方可能类似于以下 Hello World 示例配方。
此配方运行了您好世界 Python 脚本,该脚本可能类似于以下示例脚本。
import sys import datetime message = "Hello, %s! Current time: %s." % (sys.argv[1], datetime.datetime.now()) # Print the message to stdout. print(message) # Append the message to the log file. with open('/tmp/Greengrass_HelloWorld.log', 'a') as f: print(message, file=f)
-
为要开发的组件版本创建一个文件夹。我们建议您为每个组件版本的对象使用单独的文件夹,以便确定每个组件版本的对象。运行以下 命令:
mkdir -p artifacts/
com.example.HelloWorld
/1.0.0
重要 对于构件文件夹路径,您必须使用以下格式。包括您在处方中指定的组件名称和版本。
artifacts/
componentName
/componentVersion
/ -
在上一步中创建的文件夹中为组件创建构件。工件可以包括软件、图像和组件使用的任何其他二进制文件。
当您的组件准备就绪时,测试您的组件.
测试自定义组件
当您准备好测试组件时,您可以将其安装到您的 Greengrass 核心设备上。
在 Greengrass 核心设备上测试组件
-
核心设备记录组件更新等事件。您可以查看此日志文件,以发现组件错误并对其进行故障排除,例如无效的配方。此日志文件还显示组件打印到标准输出 (stdout) 的消息。我们建议您在核心设备上打开额外的终端会话,以实时观察新的日志消息。打开新的终端会话(例如通过 SSH),然后运行以下命令查看日志。Replace
/绿草/v2
的路径与Amazon IoT Greengrass根文件夹。sudo tail -f
/greengrass/v2
/logs/greengrass.log您还可以查看组件的日志文件。
sudo tail -f
/greengrass/v2
/logs/com.example.HelloWorld
.log -
在原始终端会话中,运行以下命令以使用组件更新核心设备。Replace
/绿草/v2
的路径与Amazon IoT Greengrass根文件夹,然后将~/绿草v2
替换为本地开发文件夹的路径。sudo
/greengrass/v2
/bin/greengrass-cli deployment create \ --recipeDir~/greengrassv2
/recipes \ --artifactDir~/greengrassv2
/artifacts \ --merge "com.example.HelloWorld
=1.0.0
"注意 您也可以使用
greengrass-cli deployment create
命令设置组件配置参数的值。有关更多信息,请参阅create。 -
测试您的组件在 Greengrass 核心设备上运行时。完成此版本的组件后,您可以将其上传到Amazon IoT Greengrass服务。然后,可以将组件部署到其他核心设备。有关更多信息,请参阅上传要部署到核心设备的组件。