步骤 4:在核心设备上部署和测试组件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

步骤 4:在核心设备上部署和测试组件

在本节中,您将组件部署到核心设备以测试其功能。在核心设备上,您可以创建虚拟电池电量文件来模仿真实的电池。然后,您可以创建其他部署并观察核心设备上的组件日志文件,以查看组件延迟和确认更新。

部署和测试延迟更新的 Hello World 组件
  1. 使用文本编辑器创建虚拟电池电量文件。此文件模仿真实电池。

    • 在 Linux 核心设备上,创建一个名为的文件/home/ggc_user/virtual_battery.json。使用sudo权限运行文本编辑器。

    • 在 Windows 核心设备上,创建一个名为的文件C:\Users\ggc_user\virtual_battery.json。以管理员身份运行文本编辑器。

    例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。

    sudo nano /home/ggc_user/virtual_battery.json

    将以下 JSON 复制到文件中。

    { "battery_level": 50 }
  2. 将 Hello World 组件部署到核心设备。执行以下操作:

    1. Amazon IoT Greengrass控制台导航菜单中,选择组件

    2. 在 “组件” 页面上,选择 “我的组件” 选项卡,然后选择com.example.BatteryAwareHelloWorld

    3. com.example.BatteryAwareHelloWorld 页面上,选择部署

    4. 从 “添加到部署” 中,选择要修改的现有部署,或者选择创建新部署,然后选择 “下一步”。

    5. 如果您选择创建新部署,请为部署选择目标核心设备或事物组。在 “指定目标” 页面的 “部署目标” 下,选择核心设备或事物组,然后选择下一步

    6. “选择组件” 页面上,确认已选择该com.example.BatteryAwareHelloWorld组件,然后选择 “下一步”。

    7. 在 “配置组件” 页面上 com.example.BatteryAwareHelloWorld,选择,然后执行以下操作:

      1. 选择配置组件

      2. 在 “配置” com.example.BatteryAwareHelloWorld 模式的 “配置更新” 下,在 “要合并的配置” 中,输入以下配置更新。

        { "BatteryThreshold": 70 }
      3. 选择 “确认” 关闭模式,然后选择 “下一步”。

    8. 在 “确认高级设置” 页面的 “部署策略” 部分的 “组件更新策略” 下,确认已选中 “通知组件”。创建新部署时,默认情况下会选择 “通知组件”。

    9. Review(检查)页上,选择 Deploy(部署)。

      部署最多可能需要一分钟才能完成。

  3. Amazon IoT GreengrassCore 软件将组件进程中的 stdout 保存到文件夹中的日志文件中。logs运行以下命令以验证 Hello World 组件是否运行并打印状态消息。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.BatteryAwareHelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.BatteryAwareHelloWorld.log
    PowerShell
    gc C:\greengrass\v2\logs\com.example.BatteryAwareHelloWorld.log -Tail 10 -Wait

    您应该会看到类似于以下示例的消息。

    Hello, World! Battery level (50) is below threshold (70), so the component will defer updates.
    注意

    如果文件不存在,则部署可能尚未完成。如果文件在 30 秒内不存在,则部署可能失败。例如,如果核心设备无权从 S3 存储桶下载组件的项目,则可能会发生这种情况。运行以下命令查看Amazon IoT Greengrass核心软件日志文件。此文件包含来自 Greengrass 核心设备部署服务的日志。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.log

    type命令将文件内容写入终端。多次运行此命令以观察文件中的更改。

    PowerShell
    gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  4. 在核心设备上创建新的部署,以验证该组件是否推迟了更新。执行以下操作:

    1. Amazon IoT Greengrass控制台导航菜单中,选择部署

    2. 选择您之前创建或修改的部署。

    3. 在部署页面上,选择修订

    4. 在 “修订部署” 模式中,选择 “修订部署”。

    5. 在每个步骤中选择 “下一步”,然后选择 “部署”。

  5. 运行以下命令以再次查看组件的日志,并验证它是否推迟了更新。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.BatteryAwareHelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.BatteryAwareHelloWorld.log
    PowerShell
    gc C:\greengrass\v2\logs\com.example.BatteryAwareHelloWorld.log -Tail 10 -Wait

    您应该会看到类似于以下示例的消息。该组件将更新推迟 30 秒,因此该组件会重复打印此消息。

    Deferred update for deployment 50722a95-a05f-4e2a-9414-da80103269aa.
  6. 使用文本编辑器编辑虚拟电池电量文件并将电池电量更改为高于阈值的值,这样部署就可以继续进行。

    • 在 Linux 核心设备上,编辑名为的文件/home/ggc_user/virtual_battery.json。使用sudo权限运行文本编辑器。

    • 在 Windows 核心设备上,编辑名为的文件C:\Users\ggc_user\virtual_battery.json。以管理员身份运行文本编辑器。

    例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。

    sudo nano /home/ggc_user/virtual_battery.json

    将电池电量更改为80

    { "battery_level": 80 }
  7. 运行以下命令以再次查看组件的日志,并验证它是否确认更新。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.BatteryAwareHelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.BatteryAwareHelloWorld.log
    PowerShell
    gc C:\greengrass\v2\logs\com.example.BatteryAwareHelloWorld.log -Tail 10 -Wait

    您应该会看到与以下示例类似的消息。

    Hello, World! Battery level (80) is above threshold (70), so the component will acknowledge updates. Acknowledged update for deployment f9499eb2-4a40-40a7-86c1-c89887d859f1.