适用于的 IDT 故障排除Amazon IoT GreengrassV2 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

适用于的 IDT 故障排除Amazon IoT GreengrassV2

适用于的 IDT IDTAmazon IoT GreengrassV2 根据错误类型将错误写入各种位置。IDT 将错误写入控制台、日志文件和测试报告中。

在哪里查找错误

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

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

文件 说明
test_manager.log

测试运行时写入控制台的日志。此文件末尾的结果摘要包含失败的测试的列表。

此文件中的警告和错误日志可以为您提供有关失败的一些信息。

test-group-id/test-case-id/test-name.log 测试组中特定测试的详细日志。对于部署 Greengrass 组件的测试,测试用例日志文件称为greengrass-test-run.log.
test-group-id/test-case-id/greengrass.log 详细的日志Amazon IoT GreengrassCore 软件。IDT 在运行安装Amazon IoT Greengrass设备上的核心软件。有关此日志文件中消息的更多信息,请参阅此日志文件中的Troubleshooting.
test-group-id/test-case-id/component-name.log 测试运行期间部署的 Greengrass 组件的详细日志。IDT 在运行部署特定组件的测试时,从被测设备复制组件日志文件。每个组件日志文件的名称对应于已部署组件的名称。有关此日志文件中消息的更多信息,请参阅此日志文件中的Troubleshooting.

解析适用于的 IDT 问题Amazon IoT GreengrassV2 错误 V2 错误

在运行 IDT 之前Amazon IoT Greengrass,获取正确的配置文件。如果收到解析和配置错误,第一步应找到并使用适合环境的配置模板。

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

测试时出现找不到命令错误

您需要较旧版本的 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
  2. sudo dpkg -i libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb

冲突错误错误

运行时,您可能会看到以下错误。Amazon IoT Greengrass并行在多个设备上使用资格套件。

ConflictException: Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE] { RespMetadata: { StatusCode: 409, RequestID: “id” }, Message_: “Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE]” }

并发测试执行尚不支持并发测试执行。Amazon IoT Greengrass资格套件。按顺序运行每台设备的资格套件。

无法启动测试错误

您可能遇到指示尝试启动测试时出现失败的错误。有几种可能的原因,因此,请执行以下操作:

  • 确保执行命令中的池名称实际存在。IDT 直接从device.json文件。

  • 确保池中的设备具有正确的配置参数。

码头资格映像存在错误

Docker 应用程序管理器资格测试使用amazon/amazon-ec2-metadata-mock容器映像来限定正在测试的设备。

如果映像已存在于被测设备上的 Docker 容器中,则可能会收到以下错误信息。

The Docker image amazon/amazon-ec2-metadata-mock:version already exists on the device.

如果您之前下载了此映像并运行了amazon/amazon-ec2-metadata-mock容器,请确保在运行资格测试之前从受测设备中删除此映像。

机器学习资格认证错误

运行机器学习 (ML) 资格测试时,如果您的设备不符合部署Amazon-提供的 ML 组件。要排查 ML 资格认证错误,请执行以下操作:

  • 在测试运行期间部署的组件日志中查找错误详细信息。组件日志位于<device-tester-extract-location>/results/<execution-id>/logs/<test-group-id>目录中。

  • 添加-Dgg.persist=installed.software并将参数转换为test.json文件,以获取失败的测试用例。这些区域有:test.json文件位于<device-tester-extract-location>/tests/GGV2Q_version directory.

解析错误

JSON 配置中的输入错误会导致解析错误。大部分情况下,问题是因 JSON 文件中漏掉括号、逗号或引号所导致。IDT 执行 JSON 验证并输入调试信息。它输出发生错误的行、行号以及语法错误的列号。这些信息应足以帮助您修复错误,但是如果仍不能定位错误,则可以通过您的 IDE、文本编辑器(例如 Atom 或 Sublime)或 JSONLint 等在线工具手动执行验证。

权限被拒绝错误

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

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

注意

userusername 是指 IDT 用来访问所测试设备的 SSH 用户。

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

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

  3. 打开 /etc/sudoers 文件,并将以下行添加到文件末尾:<ssh-username> ALL=(ALL) NOPASSWD: ALL

    注意

    作为最佳实践,我们建议您在编辑 /etc/sudoers 时使用 sudo visudo

资格认证报告生成错误

IDT 支持四个最新的major.minor版本的Amazon IoT GreengrassV2 资格套件 (GGV2Q),以生成可提交给Amazon Partner Network将您的设备包含在Amazon Partner设备目录。资格套件的早期版本不会生成资格鉴定报告。

如果您对支持策略有疑问,请联系Amazon Web Services Supportathttp://www.amazonaws.cn/contact-us/.

缺少必需参数错误

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

macOS 上的安全异常例外

在使用 macOS 10.15 的主机上运行 IDT 时,不会检测到 IDT 的公证票证,这会阻止 IDT 运行。要运行 IDT,请将安全例外授予devicetester_mac_x86-64可执行文件。请执行下列操作之一:

向 IDT 可执行文件授予安全异常

  1. 启动“系统首选项从苹果菜单中选择。

  2. 选择安全与隐私保护,然后在常规选项卡上,选择锁图标以更改安全设置。

  3. 查找消息。"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.,然后选择允许无论如何.

  4. 接受安全警告。

SSH 连接错误

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

大多数 Windows 配置使用 PuTTY 终端应用程序连接到 Linux 主机。此应用程序要求您将标准 PEM 私有密钥文件转换为称为 PPK 的专有 Windows 格式。如果您在device.json文件中,请使用 PEM 文件。如果使用 PPK 文件,IDT 将无法使用Amazon IoT Greengrass设备并且无法运行测试。

流管理器资格认证错误

运行流管理器资格认证测试时,您可能会在com.aws.StreamManagerExport.log文件。

Failed to upload data to S3

当流管理器使用Amazon凭证中的凭证。~/root/.aws/credentials文件,而不是使用 IDT 导出到被测设备的环境凭据。要防止出现此问题,请删除credentials文件,然后重新运行资格测试。

Docker 资格期间的限制错误

Docker Hub 限制匿名和免费 Docker Hub 用户可以发出的拉取请求的数量。当您为 Docker 资格运行 IDT 测试时,如果超过匿名或免费用户拉取请求的速率限制,则可能会收到以下错误之一:

ERROR: toomanyrequests: Too Many Requests.
You have reached your pull rate limit.

要解决这些错误,您可以等待几个小时,然后再运行资格测试。如果您计划持续运行大量测试,这可能会导致提交大量的拉取请求,请参阅Docker Hub 网站上网站了解有关费率限制的信息,以及验证和升级 Docker 帐户的选项。

超时错误

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

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

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

有关更多信息,请运行 run-suite --help

版本检查错误

IDT 发出以下错误时AmazonIDT 用户的用户证书没有所需的 IAM 权限。

Failed to check version compatibility

这些区域有:Amazon没有所需的 IAM 权限的用户。