第 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. 检查 页上,选择 部署

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

  3. Amazon IoT Greengrass Core 软件将组件进程中的 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 Core 软件日志文件。此文件包含来自 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.