

终止支持通知：2026 年 10 月 7 日， Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 Amazon IoT Greengrass Version 1](https://docs.amazonaws.cn/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 用于故障排除的 IDT Amazon IoT Greengrass
<a name="idt-troubleshooting"></a>

IDT fo Amazon IoT Greengrass r 根据错误的类型将这些错误写入不同的位置。错误将被写入到控制台、日志文件和测试报告。

## 错误代码
<a name="bk-error-codes"></a>

下表列出了由适用于 Amazon IoT Greengrass的 IDT 生成的错误代码。


| 错误代码 | 错误代码名称 | 可能的根本原因 | 故障排查 | 
| --- | --- | --- | --- | 
|  101  |  InternalError  |  出现内部错误。  |  检查 `<device-tester-extract-location>/results` 目录下的日志。如果您无法调试该问题，请联系 [Amazon 开发人员支持](https://www.amazonaws.cn/premiumsupport/plans/developers/)。  | 
|  102  |  TimeoutError  |  测试无法在限定的时间范围内完成。在以下条件下会出现这种情况： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  | 
|  103  |  PlatformNotSupportError  |  `device.json` 中指定的操作系统/架构组合不正确。  |  将您的配置更改为支持的组合之一： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html) 有关更多信息，请参阅 [配置 device.json](set-config.md#device-config)。  | 
|  104  |  VersionNotSupportError  |  您正在使用的 IDT 版本不支持 Amazon IoT Greengrass 核心软件版本。  |  使用**device\$1tester\$1bin version**命令查找 C Amazon IoT Greengrass ore 软件支持的版本。例如，如果您使用的是 macOS，请使用 **./devicetester\$1mac\$1x86\$164 version**。 要查找您正在使用的 Amazon IoT Greengrass 酷睿软件版本，请执行以下操作： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html) 您可以测试不同版本的 Amazon IoT Greengrass Core 软件。有关更多信息，请参阅 [入门 Amazon IoT Greengrass](gg-gs.md)。  | 
|  105  |  LanguageNotSupportError  |  IDT SDKs 仅在 Amazon IoT Greengrass 库中支持 Python。  |  确保： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  | 
|  106  |  ValidationError  |  `device.json` 或 `config.json` 中的有些字段无效。  |  检查报告中错误代码右侧的错误消息。 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  | 
|  107  |  SSHConnection失败了  |  测试计算机无法连接到已配置的设备。  |  验证 `device.json` 文件中的以下字段是否正确： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html) 有关更多信息，请参阅 [配置 device.json](set-config.md#device-config)。  | 
|  108  |  RunCommandError  |  测试在测试中的设备上执行命令失败。  |  验证是否允许在 `device.json` 中配置的用户拥有根访问权限。 当通过根访问权限执行命令时，某些设备需要密码。确保在使用不密码的情况下允许获得根访问权限。有关更多信息，请参阅设备的文档。 尝试在您的设备上手动运行失败的命令以查看是否发生错误。  | 
|  109  |  PermissionDeniedError  |  无根访问权限。  |  在您的设备上为配置的用户设置根访问权限。  | 
|  110  |  CreateFileError  |  无法创建文件。  |  检查您设备的磁盘空间和目录权限。  | 
|  111  |  CreateDirError  |  无法创建目录。  |  检查您设备的磁盘空间和目录权限。  | 
|  112  |  InvalidPathError  |   Amazon IoT Greengrass Core 软件的路径不正确。  |  验证错误消息中的路径是有效的。请勿编辑 `devicetester_greengrass_<os>` 目录下的任何文件。  | 
|  113  |  InvalidFileError  |  文件无效。  |  验证错误消息中的文件是否有效。  | 
|  114  |  ReadFileError  |  无法读取指定的文件。  |  请验证以下内容： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html) 如果您正在 macOS 上进行测试，请增加打开文件数量限制。默认限制为 256，这足够用于测试。  | 
|  115  |  FileNotFoundError  |  找不到所需的文件。  |  请验证以下内容： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  | 
|  116  |  OpenFileFailed  |  无法打开指定的文件。  |  请验证以下内容： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html) 如果您正在 macOS 上进行测试，请增加打开文件数量限制。默认限制为 256，这足够用于测试。  | 
|  117  |  WriteFileFailed  |  无法写入文件（可以是 DUT 或测试机）。  |  验证错误消息中指定的目录是否存在，并且您是否具有写入权限。  | 
|  118  |  FileCleanUpError  |  测试未能删除指定的文件或目录，或未能在远程设备上卸载指定的文件。  |  如果二进制文件仍在运行，则文件可能被锁定。结束进程并删除指定的文件。  | 
|  119  |  InvalidInputError  |  配置无效。  |  验证 `suite.json` 文件是否有效。  | 
|  120  |  InvalidCredentialError  |   Amazon 凭证无效。  |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  | 
|  121  |  AWSSession错误  |  创建会 Amazon 话失败。  |  如果 Amazon 凭证无效或互联网连接不稳定，则可能会发生此错误。尝试使用 Amazon CLI 调用 Amazon API 操作。  | 
|  122  |  AWSApiCallError  |  出现了 Amazon API 错误。  |  此错误可能是由于网络问题导致的。检查您的网络，然后重试测试组。  | 
|  123  |  IpNotExistError  |  IP 地址未包含在连接信息中。  |  检查您的 Internet 连接。您可以使用 Amazon IoT Greengrass 控制台检查测试使用的 Amazon IoT Greengrass 核心设备的连接信息。如果连接信息中包含 10 个端点，则您可以删除部分或所有端点并重新运行测试。有关更多信息，请参阅[连接信息](https://docs.amazonaws.cn/cli/latest/reference/greengrass/get-connectivity-info.html)。  | 
|  124  |  OTAJobNotCompleteError  |  一个 OTA 作业未完成。  |  检查您的 Internet 连接并重试 OTA 测试组。  | 
|  125  |  CreateGreengrassServiceRoleError  |  发生了以下错误之一： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  |  配置 Amazon IoT Greengrass 服务角色。有关更多信息，请参阅 [Greengrass 服务角色](service-role.md)。  | 
|  126  |  DependenciesNotPresentError  |  设备上不存在特定测试所需的一个或多个依赖项。  |  检查测试日志以查看该设备上缺少哪些依赖项：`<device-tester-extract-location>/results/<execution-id>/logs/<test-case-name.log>`  | 
|  127  |  无效 HSMConfiguration  |  提供的 HSM/PKCS 配置不正确。  |  在 `device.json` 文件中，提供使用 PKCS＃11 与 HSM 交互所需的配置。  | 
|  128  |  OTAJobNotSuccededError  |  该 OTA 作业没有获得成功。  |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  | 
|  129  |  NoConnectivityError  |  主机代理无法连接到 Internet。  |  请检查您的网络连接和防火墙设置。连接问题得到解决后，重试此测试组。  | 
|  130  |  NoPermissionError  |  您用于运行 IDT 的 IAM 用户 Amazon IoT Greengrass 无权创建运行 IDT 所需的 Amazon 资源。  |  请参阅[权限策略模板](https://docs.amazonaws.cn/greengrass/latest/developerguide/policy-template.html)，以了解授予运行适用于 Amazon IoT Greengrass的 IDT 所需的权限的策略模板。  | 
|  131  |  LeftoverAgentExistError  |  当您尝试启动 IDT 时，您的设备正在运行 Amazon IoT Greengrass 进程。 Amazon IoT Greengrass  |  确保您的设备上没有正在运行的 Greengrass 守护程序。 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v1/developerguide/idt-troubleshooting.html)  如果您使用的是 Amazon IoT Greengrass 配置为在重新启动后自动启动的现有安装，则必须在重新启动后和运行测试套件之前停止守护程序。   | 
|  132  |  DeviceTimeOffsetError  |  设备的时间不正确。  |  将设备设置为正确的时间。  | 
|  133  |  无效 MLConfiguration  |  提供的 ML 配置不正确。  |  在 `device.json` 文件中，提供运行 ML 推理测试所需的正确配置。有关更多信息，请参阅 [可选：配置设备进行 ML 资格认证](idt-ml-qualification.md)。  | 

## 解决 IDT 中的错误 Amazon IoT Greengrass
<a name="idt-gg-resolve-errors"></a>

使用 IDT 时，必须先准备好正确的配置文件，然后才能运行 IDT。 Amazon IoT Greengrass如果出现解析和配置错误，第一步应找到并使用适合您的环境的配置模板。

如果仍有问题，请参阅以下调试过程。

**Topics**
+ [应该在哪里寻找错误？](#where-to-look)
+ [解析错误](#parse-error)
+ [缺少必需参数错误](#param-missing)
+ [无法启动测试错误](#could-not-start-test)
+ [无权访问资源错误](#not-authorized-to-access-resource)
+ [权限被拒绝错误](#pwd-sudo)
+ [SSH 连接错误](#ssh-connect-errors)
+ [超时错误](#test-timeout)
+ [测试时出现找不到命令错误](#cmd-not-found)
+ [macOS 上的安全例外](#macos-notarization-exception)

### 应该在哪里寻找错误？
<a name="where-to-look"></a>

在执行期间，控制台上会显示高级别错误，并且在所有测试完成后会显示失败测试及其错误的摘要。`awsiotdevicetester_report.xml` 包含导致测试失败的所有错误的摘要。每次测试运行的日志文件都存储在一个以 UUID 命名的目录中，用于在测试运行期间在控制台上显示的测试执行。

测试日志目录位于 `<device-tester-extract-location>/results/<execution-id>/logs/`。此目录包含以下对调试有用的文件。


| 文件 | 描述 | 
| --- | --- | 
| test\$1manager.log |  在测试执行期间写入控制台的所有日志。结果的摘要位于该文件的末尾，其中包含失败的测试的列表。 此文件中的警告和错误日志可以为您提供有关失败的一些信息。  | 
| <test-group-id>\$1\$1<test-name>.log | 特定测试的详细日志。 | 
| <test-name>\$1ggc\$1logs.tar.gz |  Amazon IoT Greengrass 核心守护程序在测试期间生成的所有日志的压缩集合。有关更多信息，请参阅[故障排除 Amazon IoT Greengrass](https://docs.amazonaws.cn/greengrass/latest/developerguide/gg-troubleshooting.html)。 | 
| <test-name>\$1ota\$1logs.tar.gz |  Amazon IoT Greengrass OTA 代理在测试期间生成的压缩日志集合。仅适用于 OTA 测试。 | 
| <test-name>\$1basic\$1assertion\$1publisher\$1ggad\$1logs.tar.gz | 测试期间由 Amazon IoT 发布者设备生成的日志的压缩集合。 | 
| <test-name>\$1basic\$1assertion\$1subscriber\$1ggad\$1logs.tar.gz | 测试期间由 Amazon IoT 订阅者设备生成的日志的压缩集合。 | 

### 解析错误
<a name="parse-error"></a>

有时候，JSON 配置中的输入错误会导致解析错误。大部分情况下，问题是因 JSON 文件中漏掉括号、逗号或引号所导致。IDT 执行 JSON 验证并输入调试信息。它输出发生错误的行、行号以及语法错误的列号。这些信息应该足以帮助您修复错误，但是如果您仍然无法找到错误，则可以在IDE、Atom或Sublime等文本编辑器中手动进行验证，也可以通过诸如此类的在线工具进行验证。 JSONLint

### 缺少必需参数错误
<a name="param-missing"></a>

由于将新功能添加到 IDT 中，可能会对配置文件进行更改。使用旧配置文件可能会破坏您的配置。如果出现这种情况，`/results/<execution-id>/logs` 下的 `<test_case_id>.log` 文件明确列出了所有缺少的参数。IDT 还将验证 JSON 配置文件架构，以确保使用支持的最新版本。

### 无法启动测试错误
<a name="could-not-start-test"></a>

在测试启动期间，您可能遇到指示失败的错误。有几种可能的原因，因此，请执行以下操作：
+ 确保包含在执行命令中的池名称实际存在。池名称将从您的 `device.json` 文件中直接引用。
+ 确保池中的设备具有正确的配置参数。

### 无权访问资源错误
<a name="not-authorized-to-access-resource"></a>

您可能会在终端输出或 `/results/<execution-id>/logs` 下的 `test_manager.log` 文件中看到 `<user or role> is not authorized to access this resource` 错误消息。要解决此问题，请将 `AWSIoTDeviceTesterForGreengrassFullAccess` 托管策略附加到您的测试用户。有关更多信息，请参阅 [创建和配置 Amazon Web Services 账户](dev-tst-prereqs.md#config-aws-account-for-idt)。

### 权限被拒绝错误
<a name="pwd-sudo"></a>

IDT 将对被测设备中的各种目录和文件执行操作。其中一些操作需要根用户访问权限。要自动执行这些操作，IDT 必须能够在不键入密码的情况下使用 sudo 运行命令。

请按照以下步骤操作，以允许在不键入密码的情况下进行 sudo 访问。

**注意**  
`user` 和 `username` 是指 IDT 用来访问所测试设备的 SSH 用户。

1. 使用 **sudo usermod -aG sudo *<ssh-username>*** 将 SSH 用户添加到 sudo 组。

1. 注销，然后重新登录，以使更改生效。

1. 打开 `/etc/sudoers` 文件，并将以下行添加到文件末尾：`<ssh-username> ALL=(ALL) NOPASSWD: ALL`
**注意**  
作为最佳实践，我们建议您在编辑 `/etc/sudoers` 时使用 **sudo visudo**。

### SSH 连接错误
<a name="ssh-connect-errors"></a>

当 IDT 无法连接到所测试设备时，会在 `/results/<execution-id>/logs/<test-case-id>.log` 中记录连接失败。SSH 失败消息将显示在此日志文件的顶部，因为连接到所测试设备是 IDT 最先执行的操作之一。

大多数 Windows 设置使用 Pu TTy 终端应用程序连接到 Linux 主机。该应用程序要求将标准 PEM 私有密钥文件转换为称为 PPK 的专有 Windows 格式。在 `device.json` 文件中配置 IDT 时，仅使用 PEM 文件。如果您使用 PPK 文件，IDT 将无法与 Amazon IoT Greengrass 设备建立 SSH 连接，也无法运行测试。

### 超时错误
<a name="test-timeout"></a>

您可以通过指定超时乘数来增加每个测试的超时，该超时乘数应用于每个测试超时的默认值。为此标志配置的任何值都必须大于或等于 1.0。

要使用超时乘数，请在运行测试时使用标志 `--timeout-multiplier`。例如：

```
./devicetester_linux run-suite --suite-id GGQ_1.0.0 --pool-id DevicePool1 --timeout-multiplier 2.5
```

有关更多信息，请运行 `run-suite --help`。

### 测试时出现找不到命令错误
<a name="cmd-not-found"></a>

你需要旧版本的 OpenSSL 库 (libssl1.0.0) 才能在设备上运行测试。 Amazon IoT Greengrass 当前的大多数 Linux 发行版都使用 libssl 1.0.2 或更高版本 (v1.1.0)。

例如，在 Raspberry Pi 上，可以运行以下命令来安装所需的 libssl 版本：

1. 

   ```
   wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb
   ```

1. 

   ```
   sudo dpkg -i libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb
   ```

### macOS 上的安全例外
<a name="macos-notarization-exception"></a>

当在使用 macOS 10.15 的主机上运行 IDT 时，系统无法正确检测到 IDT 的公证票证，而且 IDT 也会被阻止运行。要运行 IDT，您需要为 `devicetester_mac_x86-64` 可执行文件授予安全例外。

**为 IDT 可执行文件授予安全例外**

1. 从 Apple 菜单中启动**系统偏好设置**。

1. 选择 **安全与隐私**，然后在**通用**选项卡上，单击小锁图标以更改安全设置。

1. 查找以下消息并选择**仍然允许**：`"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.`。

1. 接受安全警告。

如果您对 IDT 支持策略有疑问，请联系 [Amazon 客户支持](https://www.amazonaws.cn/contact-us/)。