

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

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

# 同义词 AWS IoT Greengrass 故障排除
<a name="idt-troubleshooting"></a>

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

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

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


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

## 正在解决 IDT AWS IoT Greengrass 错误
<a name="idt-gg-resolve-errors"></a>

使用 IDT 时，必须先准备好正确的配置文件，然后才能运行 IDT。 AWS 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>

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

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


| 文件 | 说明 | 
| --- | --- | 
| test\_manager.log | 在测试执行期间写入控制台的所有日志。结果的摘要位于该文件的末尾，其中包含失败的测试的列表。<br />此文件中的警告和错误日志可以为您提供有关失败的一些信息。 | 
| {{<test-group-id>}}\_\_{{<test-name>}}.log | 特定测试的详细日志。 | 
| {{<test-name>}}\_ggc\_logs.tar.gz |  AWS IoT Greengrass 核心守护程序在测试期间生成的所有日志的压缩集合。有关更多信息，请参阅[故障排除 AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-troubleshooting.html)。 | 
| {{<test-name>}}\_ota\_logs.tar.gz |  AWS IoT Greengrass OTA 代理在测试期间生成的压缩日志集合。仅适用于 OTA 测试。 | 
| {{<test-name>}}\_basic\_assertion\_publisher\_ggad\_logs.tar.gz | 测试期间由 AWS IoT 发布者设备生成的日志的压缩集合。 | 
| {{<test-name>}}\_basic\_assertion\_subscriber\_ggad\_logs.tar.gz | 测试期间由 AWS 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` 托管策略附加到您的测试用户。有关更多信息，请参阅 [创建和配置 AWS 账户](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 设置使用 PuTTy 终端应用程序连接到 Linux 主机。该应用程序要求将标准 PEM 私有密钥文件转换为称为 PPK 的专有 Windows 格式。在 `device.json` 文件中配置 IDT 时，仅使用 PEM 文件。如果您使用 PPK 文件，IDT 将无法与 AWS 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) 才能在设备上运行测试。 AWS 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 支持策略有疑问，请联系 [AWS 客户支持](https://aws.amazon.com/contact-us/)。