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

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

创建自定义 AWS AWS IoT Greengrass 组件

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

开发自定义组件

要开发新组件或组件新版本,请为新组件版本创建配方和构件。

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

  1. 使用配方和构件的子文件夹为您的组件创建一个文件夹。在 Greengrass 核心设备上运行以下命令以创建这些文件夹并更改为 组件文件夹。Replace ~/greengrassv2 替换为用于本地开发的文件夹的路径。

    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. 为您的组件定义配方。有关更多信息,请参阅AWS AWS IoT Greengrass 组件配方参考

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

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

    此配方运行 Hello World Python 脚本,该脚本可能类似于以下示例脚本。

    import sys import datetime message = f"Hello, {sys.argv[1]}! Current time: {str(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 /greengrass/v2 替换为 AWS AWS IoT Greengrass 根文件夹的路径。

    sudo tail -f /greengrass/v2/logs/greengrass.log

    您还可以查看组件的日志文件。

    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
  2. 在原始终端会话中,运行以下命令以使用您的组件更新核心设备。Replace /greengrass/v2 替换为 AWS AWS IoT Greengrass 根文件夹的路径,并替换 ~/greengrassv2 替换为本地开发文件夹的路径。

    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 核心设备上运行组件时测试组件。完成此版本的组件后,您可以将其上传到 AWS AWS IoT Greengrass 服务。然后,可以将组件部署到其他核心设备。有关更多信息,请参阅上传组件以部署到您的核心设备