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

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

创建自定义Amazon IoT Greengrass组件

与Amazon IoT Greengrass,您可以在 Greengrass 核心设备上开发和测试组件。

开发自定义组件

要开发新组件或组件的新版本,请为新组件版本创建处方和对象。

在 Greengrass 的核心设备上开发一个组件。

  1. 为组件创建一个文件夹,其中包含食谱和工件的子文件夹。在您的 Greengrass 核心设备上运行以下命令以创建这些文件夹并更改为组件文件夹。Replace~/绿草v2以及用于本地开发的文件夹的路径。

    mkdir -p ~/greengrassv2/{recipes,artifacts} cd ~/greengrassv2
  2. 创建配方,以定义组件的元数据、参数、依赖项、生命周期和平台功能。运行以下命令以创建配方文件并在nano文本编辑器。在处方文件名中包括组件版本,以便您可以确定哪个处方反映了哪个组件版本。您可以为您的配方选择 YAML 或 JSON 格式。

    JSON
    nano recipes/com.example.HelloWorld-1.0.0.json
    YAML
    nano recipes/com.example.HelloWorld-1.0.0.yaml
  3. 定义组件的处方。有关更多信息,请参阅Amazon IoT Greengrass组件配方参考

    您的配方可能类似于以下 Hello World 示例配方。

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first Amazon IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}'" } } ] }
    YAML
    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first Amazon IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: Run: | python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}'

    此配方运行了您好世界 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)
  4. 为要开发的组件版本创建一个文件夹。我们建议您为每个组件版本的对象使用单独的文件夹,以便确定每个组件版本的对象。运行以下 命令:

    mkdir -p artifacts/com.example.HelloWorld/1.0.0
    重要

    对于构件文件夹路径,您必须使用以下格式。包括您在处方中指定的组件名称和版本。

    artifacts/componentName/componentVersion/
  5. 在上一步中创建的文件夹中为组件创建构件。工件可以包括软件、图像和组件使用的任何其他二进制文件。

    当您的组件准备就绪时,测试您的组件.

测试自定义组件

当您准备好测试组件时,您可以将其安装到您的 Greengrass 核心设备上。

在 Greengrass 核心设备上测试组件

  1. 核心设备记录组件更新等事件。您可以查看此日志文件,以发现组件错误并对其进行故障排除,例如无效的配方。此日志文件还显示组件打印到标准输出 (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
  2. 在原始终端会话中,运行以下命令以使用组件更新核心设备。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

  3. 测试您的组件在 Greengrass 核心设备上运行时。完成此版本的组件后,您可以将其上传到Amazon IoT Greengrass服务。然后,可以将组件部署到其他核心设备。有关更多信息,请参阅上传要部署到核心设备的组件