Amazon IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 Amazon IoT Greengrass V1 维护策略。在此日期之后,将 Amazon IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 Amazon IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这样可以添加重要的新功能并支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Amazon IoT Greengrass 的 IDT 问题排查
适用于 Amazon IoT Greengrass 的 IDT 根据错误类型将这些错误写入各种位置。错误将被写入到控制台、日志文件和测试报告。
错误代码
下表列出了由适用于 Amazon IoT Greengrass 的 IDT 生成的错误代码。
错误代码 | 错误代码名称 | 可能的根本原因 | 故障排查 |
---|---|---|---|
101 |
InternalError |
出现内部错误。 |
检查 |
102 |
TimeoutError |
测试无法在限定的时间范围内完成。在以下条件下会出现这种情况:
|
|
103 |
PlatformNotSupportError |
|
将您的配置更改为支持的组合之一:
有关更多信息,请参阅 配置 device.json。 |
104 |
VersionNotSupportError |
您使用的 IDT 版本不支持 Amazon IoT Greengrass 核心软件版本。 |
使用 device_tester_bin version 命令查找支持的 Amazon IoT Greengrass 核心软件版本。例如,如果您使用的是 macOS,请使用 ./devicetester_mac_x86_64 version。 查找您使用的 Amazon IoT Greengrass Core 软件的版本:
您可以测试不同版本的 Amazon IoT Greengrass 核心软件。有关更多信息,请参阅 开始使用 Amazon IoT Greengrass。 |
105 |
LanguageNotSupportError |
IDT 仅对于 Amazon IoT Greengrass 库和开发工具包支持 Python。 |
确保:
|
106 |
ValidationError |
|
检查报告中错误代码右侧的错误消息。
|
107 |
SSHConnectionFailed |
测试计算机无法连接到已配置的设备。 |
验证
有关更多信息,请参阅 配置 device.json。 |
108 |
RunCommandError |
测试在测试中的设备上执行命令失败。 |
验证是否允许在 当通过根访问权限执行命令时,某些设备需要密码。确保在使用不密码的情况下允许获得根访问权限。有关更多信息,请参阅设备的文档。 尝试在您的设备上手动运行失败的命令以查看是否发生错误。 |
109 |
PermissionDeniedError |
无根访问权限。 |
在您的设备上为配置的用户设置根访问权限。 |
110 |
CreateFileError |
无法创建文件。 |
检查您设备的磁盘空间和目录权限。 |
111 |
CreateDirError |
无法创建目录。 |
检查您设备的磁盘空间和目录权限。 |
112 |
InvalidPathError |
指向 Amazon IoT Greengrass 核心软件的路径不正确。 |
验证错误消息中的路径是有效的。请勿编辑 |
113 |
InvalidFileError |
文件无效。 |
验证错误消息中的文件是否有效。 |
114 |
ReadFileError |
无法读取指定的文件。 |
请验证以下内容:
如果您正在 macOS 上进行测试,请增加打开文件数量限制。默认限制为 256,这足够用于测试。 |
115 |
FileNotFoundError |
找不到所需的文件。 |
请验证以下内容:
|
116 |
OpenFileFailed |
无法打开指定的文件。 |
请验证以下内容:
如果您正在 macOS 上进行测试,请增加打开文件数量限制。默认限制为 256,这足够用于测试。 |
117 |
WriteFileFailed |
无法写入文件(可以是 DUT 或测试机)。 |
验证错误消息中指定的目录是否存在,并且您是否具有写入权限。 |
118 |
FileCleanUpError |
测试未能删除指定的文件或目录,或未能在远程设备上卸载指定的文件。 |
如果二进制文件仍在运行,则文件可能被锁定。结束进程并删除指定的文件。 |
119 |
InvalidInputError |
配置无效。 |
验证 |
120 |
InvalidCredentialError |
Amazon 凭证无效。 |
|
121 |
AWSSessionError |
未能创建 Amazon 会话。 |
如果 Amazon 凭证无效或 Internet 连接不稳定,也可能会发生此错误。尝试使用 Amazon CLI 来调用 Amazon API 操作。 |
122 |
AWSApiCallError |
发生了 Amazon API 错误。 |
此错误可能是由于网络问题导致的。检查您的网络,然后重试测试组。 |
123 |
IpNotExistError |
IP 地址未包含在连接信息中。 |
检查您的 Internet 连接。您可以使用 Amazon IoT Greengrass 控制台检查测试正在使用的 Amazon IoT Greengrass 核心事物的连接信息。如果连接信息中包含 10 个端点,则您可以删除部分或所有端点并重新运行测试。有关更多信息,请参阅连接信息。 |
124 |
OTAJobNotCompleteError |
一个 OTA 作业未完成。 |
检查您的 Internet 连接并重试 OTA 测试组。 |
125 |
CreateGreengrassServiceRoleError |
发生了以下错误之一:
|
配置 Amazon IoT Greengrass 服务角色。有关更多信息,请参阅 Greengrass 服务角色。 |
126 |
DependenciesNotPresentError |
设备上不存在特定测试所需的一个或多个依赖项。 |
检查测试日志以查看该设备上缺少哪些依赖项: |
127 |
InvalidHSMConfiguration |
提供的 HSM/PKCS 配置不正确。 |
在 |
128 |
OTAJobNotSuccededError |
该 OTA 作业没有获得成功。 |
|
129 |
NoConnectivityError |
主机代理无法连接到 Internet。 |
请检查您的网络连接和防火墙设置。连接问题得到解决后,重试此测试组。 |
130 |
NoPermissionError |
您用于运行适用于 Amazon IoT Greengrass 的 IDT 的 IAM 用户不具备创建运行 IDT 所需的 Amazon 资源的权限。 |
请参阅权限策略模板,以了解授予运行适用于 Amazon IoT Greengrass 的 IDT 所需的权限的策略模板。 |
131 |
LeftoverAgentExistError |
当您尝试启动适用于 Amazon IoT Greengrass 的 IDT 时,设备正在运行 Amazon IoT Greengrass 进程。 |
确保您的设备上没有正在运行的 Greengrass 守护程序。
注意如果您使用的是已配置为在重新引导后自动启动的现有 Amazon IoT Greengrass 安装,则必须在重新引导之后、运行测试套件之前停止守护程序。 |
132 |
DeviceTimeOffsetError |
设备的时间不正确。 |
将设备设置为正确的时间。 |
133 |
InvalidMLConfiguration |
提供的 ML 配置不正确。 |
在 |
纠正适用于 Amazon IoT Greengrass 的 IDT 错误
在使用 IDT 时,您必须先获取正确的配置文件,然后再运行适用于 Amazon IoT Greengrass 的 IDT。如果出现解析和配置错误,第一步应找到并使用适合您的环境的配置模板。
如果仍有问题,请参阅以下调试过程。
应该在哪里寻找错误?
在执行期间,控制台上会显示高级别错误,并且在所有测试完成后会显示失败测试及其错误的摘要。awsiotdevicetester_report.xml
包含导致测试失败的所有错误的摘要。每次测试运行的日志文件都存储在一个以 UUID 命名的目录中,用于在测试运行期间在控制台上显示的测试执行。
测试日志目录位于
。此目录包含以下对调试有用的文件。<device-tester-extract-location>
/results/<execution-id>
/logs/
文件 | 描述 |
---|---|
test_manager.log |
在测试执行期间写入控制台的所有日志。结果的摘要位于该文件的末尾,其中包含失败的测试的列表。 此文件中的警告和错误日志可以为您提供有关失败的一些信息。 |
|
特定测试的详细日志。 |
<test-name> _ggc_logs.tar.gz |
Amazon IoT Greengrass 核心守护程序在测试期间生成的所有日志的压缩集合。有关更多信息,请参阅故障排除Amazon IoT Greengrass。 |
|
Amazon IoT Greengrass OTA 代理在测试期间生成的日志的压缩集合。仅适用于 OTA 测试。 |
|
测试期间由 Amazon IoT 发布者设备生成的日志的压缩集合。 |
|
测试期间由 Amazon IoT 订阅者设备生成的日志的压缩集合。 |
解析错误
有时候,JSON 配置中的输入错误会导致解析错误。大部分情况下,问题是因 JSON 文件中漏掉括号、逗号或引号所导致。IDT 执行 JSON 验证并输入调试信息。它输出发生错误的行、行号以及语法错误的列号。这些信息应足以帮助您修复错误,但是如果仍不能定位错误,则可以通过您的 IDE、文本编辑器(例如 Atom 或 Sublime)或 JSONLint 等在线工具手动执行验证。
缺少必需参数错误
由于将新功能添加到 IDT 中,可能会对配置文件进行更改。使用旧配置文件可能会破坏您的配置。如果出现这种情况,/results/
下的 <execution-id>
/logs
文件明确列出了所有缺少的参数。IDT 还将验证 JSON 配置文件架构,以确保使用支持的最新版本。<test_case_id>
.log
无法启动测试错误
在测试启动期间,您可能遇到指示失败的错误。有几种可能的原因,因此,请执行以下操作:
-
确保包含在执行命令中的池名称实际存在。池名称将从您的
device.json
文件中直接引用。 -
确保池中的设备具有正确的配置参数。
无权访问资源错误
您可能会在终端输出或 /results/
下的 <execution-id>
/logstest_manager.log
文件中看到 <user or role> is not authorized to access this resource
错误消息。要解决此问题,请将 AWSIoTDeviceTesterForGreengrassFullAccess
托管策略附加到您的测试用户。有关更多信息,请参阅 创建和配置 Amazon Web Services 账户。
权限被拒绝错误
IDT 将对所测试设备中的各种目录和文件执行操作。其中一些操作需要根用户访问权限。要自动执行这些操作,IDT 必须能够在不键入密码的情况下使用 sudo 运行命令。
请按照以下步骤操作,以允许在不键入密码的情况下进行 sudo 访问。
注意
user
和 username
是指 IDT 用来访问所测试设备的 SSH 用户。
-
使用 sudo usermod -aG sudo
<ssh-username>
将 SSH 用户添加到 sudo 组。 -
注销,然后重新登录,以使更改生效。
-
打开
/etc/sudoers
文件,并将以下行添加到文件末尾:<ssh-username>
ALL=(ALL) NOPASSWD: ALL注意
作为最佳实践,我们建议您在编辑
/etc/sudoers
时使用 sudo visudo。
SSH 连接错误
当 IDT 无法连接到所测试设备时,会在 /results/
中记录连接失败。SSH 失败消息将显示在此日志文件的顶部,因为连接到所测试设备是 IDT 最先执行的操作之一。<execution-id>
/logs/<test-case-id>
.log
大多数 Windows 设置使用 PuTTy 终端应用程序连接到 Linux 主机。该应用程序要求将标准 PEM 私有密钥文件转换为称为 PPK 的专有 Windows 格式。在 device.json
文件中配置 IDT 时,仅使用 PEM 文件。如果使用 PPK 文件,IDT 将无法与 Amazon IoT Greengrass 设备建立 SSH 连接,并且无法运行测试。
超时错误
您可以通过指定超时乘数来增加每个测试的超时,该超时乘数应用于每个测试超时的默认值。为此标志配置的任何值都必须大于或等于 1.0。
要使用超时乘数,请在运行测试时使用标志 --timeout-multiplier
。例如:
./devicetester_linux run-suite --suite-id GGQ_1.0.0 --pool-id DevicePool1 --timeout-multiplier 2.5
有关更多信息,请运行 run-suite --help
。
测试时出现找不到命令错误
您需要较旧版本的 OpenSSL 库 (libssl1.0.0) 才能在 Amazon IoT Greengrass 设备上运行测试。当前的大多数 Linux 发行版都使用 libssl 1.0.2 或更高版本 (v1.1.0)。
例如,在 Raspberry Pi 上,可以运行以下命令来安装所需的 libssl 版本:
-
wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb
-
sudo dpkg -i libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb
macOS 上的安全例外
当在使用 macOS 10.15 的主机上运行 IDT 时,系统无法正确检测到 IDT 的公证票证,而且 IDT 也会被阻止运行。要运行 IDT,您需要为 devicetester_mac_x86-64
可执行文件授予安全例外。
为 IDT 可执行文件授予安全例外
-
从 Apple 菜单中启动系统偏好设置。
-
选择 安全与隐私,然后在通用选项卡上,单击小锁图标以更改安全设置。
-
查找以下消息并选择仍然允许:
"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.
。 -
接受安全警告。
如果您对 IDT 支持策略有疑问,请联系 Amazon 客户支持