

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

# AWS IoT 作业疑难解答
<a name="jobs-troubleshooting"></a>

这是 AWS IoT 作业的疑难解答部分。

## 如何找到 AWS IoT 作业终端节点？
<a name="jobs-endpoint-troubleshooting"></a>

**如何找到 AWS IoT 作业控制平面端点？**  
AWS IoT 作业支持使用 HTTPS 协议控制平面 API 操作。确认您已使用 HTTPS 协议连接到正确的控制面板端点。  
有关 AWS 特定区域终端节点的列表，请参阅[AWS IoT 核心-控制平面](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core-control-plane-endpoints)终端节点。  
有关符合 FIPS 的 **AWS IoT Jobs 控制面板**端点的列表，请参阅[按服务划分的 FIPS 端点](https://aws.amazon.com//compliance/fips/#FIPS_Endpoints_by_Service)  
AWS IoT 任务和 AWS IoT Core 共享相同的 AWS 特定区域终端节点。

**如何找到 AWS IoT 作业数据平面端点？**  
AWS IoT 作业支持使用 HTTPS 和 MQTT 协议进行数据平面 API 操作。确认您已使用 HTTPS 或 MQTT 协议连接到正确的数据端点。  
+ HTTPS 协议
  + 使用下面显示的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) CLI 命令或 [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html) REST API。对于端点类型，请使用 `iot:Jobs`。

    ```
    aws iot describe-endpoint --endpoint-type iot:Jobs
    ```
+ MQTT 协议
  + 使用下面显示的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) CLI 命令或 [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html) REST API。对于端点类型，请使用 `iot:Data-ATS`。

    ```
    aws iot describe-endpoint --endpoint-type iot:Data-ATS
    ```
有关符合 FIPS 的 **AWS IoT Jobs 数据面板**端点的列表，请参阅[按服务划分的 FIPS 端点](https://aws.amazon.com//compliance/fips/#FIPS_Endpoints_by_Service)

## 如何监控 AWS IoT 作业活动并提供指标？
<a name="jobs-logs-troubleshooting"></a>

使用 Amaz CloudWatch on 监控 AWS IoT 任务活动可以实时了解正在进行的 AWS IoT 任务操作，并通过 AWS IoT 规则 CloudWatch 发出警报，帮助控制成本。必须先配置日志记录，然后才能监控 AWS IoT 作业活动和设置 CloudWatch警报。有关如何设置日志记录的更多信息，请参阅 [配置 AWS IoT 日志](configure-logging.md)。

有关亚马逊 CloudWatch 以及如何通过 IAM 用户角色设置 CloudWatch 资源使用权限的更多信息，请参阅[亚马逊的身份和访问管理 CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html)。

**如何使用 Amazon 设置 AWS IoT 任务指标和监控 CloudWatch？**  
要设置 AWS IoT 日志记录，请按照[配置 AWS IoT 日志](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html)中概述的步骤进行操作。 AWS IoT 日志设置可以在 AWS 管理控制台 AWS CLI、或 API 中完成。 AWS IoT 为特定事物组设置的日志只能在 AWS CLI 或 API 中完成。  
[AWS IoT 作业指标](https://docs.aws.amazon.com/iot/latest/developerguide/metrics_dimensions.html#jobs-metrics)部分包含用于监控 AWS IoT 作业活动的 AWS IoT 作业指标。它说明了如何查看 AWS 管理控制台 和中的指标 AWS CLI。  
此外，您可以设置 CloudWatch 警报，提醒您要密切监控的特定指标。有关警报设置的指导，请参阅[使用 Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

## 设备队列和单台设备故障排除
<a name="jobs-troubleshooting-for-fleethub"></a>

**任务执行无限期保持 `QUEUED` 状态**  
当状态为 `QUEUED` 的任务执行未进入下一个逻辑状态（例如 `IN_PROGRESS`、`FAILED`、或 `TIMED_OUT`）时，原因可能是以下情况之一：  
+ 在[CloudWatch 控制台](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)中的 CloudWatch 日志中查看您的设备活动。有关更多信息，请参阅[AWS IoT 使用 CloudWatch 日志进行监控](https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html)。
+ 与该任务和后续任务执行关联的 IAM 角色可能不具备附加到该 IAM 角色的 IAM 策略其中一项策略声明中所列的正确权限。使用 [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html) API 确定与该任务和后续任务执行关联的 IAM 角色，并查看 IAM 策略了解正确的权限。更新策略权限声明后，您应该能够对资源执行 [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 命令。

**没有为我的事物或事物组创建任务执行**  
当任务将其状态更新为 `IN_PROGRESS` 时，它就会开始向目标组中的所有设备推出任务文档。此状态更新将为每台目标设备创建任务执行。如果未为其中一台目标设备创建任务执行，请参阅以下指导：  
+ `thing` 是否由任务*直接*定向，任务的状态是否为 `IN_PROGRESS`，任务是否是并发任务？ 如果所有三个条件都满足，则该任务仍向目标组中的所有设备发送任务执行，并且该特定 `thing` 尚未收到其任务执行。
  + 在 AWS 管理控制台中查看目标组中任务的设备以及任务状态或使用 [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html)API 命令。
  + 使用 [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html) API 命令查看任务的 `IsConcurrent` 属性设置为 true 还是 false。有关更多信息，请参阅[任务限制](https://docs.aws.amazon.com/iot/latest/developerguide/job-limits.html)。
+ `thing` *并非直接*由任务定向。
  + 如果 `Thing` 已添加到 `ThingGroup`，且任务已定向 `ThingGroup`，则请验证 `Thing` 是否属于 `ThingGroup`。
  + 如果该任务状态为 `IN_PROGRESS` 且属于并发任务的快照任务，则该任务仍向目标组中的所有设备发送任务执行，并且该特定 `Thing` 尚未收到其任务执行。
  + 如果该任务状态为 `IN_PROGRESS` 且属于并发任务的持续任务，则该任务仍向目标组中的所有设备发送任务执行，并且该特定 `Thing` 尚未收到其任务执行。仅对于持续任务，您也可以从 `ThingGroup` 中删除 `Thing`，然后将 `Thing` 重新添加回 `ThingGroup`。
  + 如果作业是状态为`IN_PROGRESS`且非并发状态的快照作 AWS IoT 业，则任务很可能未确认`Thing`或`ThingGroup`成员关系的情况。建议在 `AddThingToThingGroup` 调用后多等待几秒钟的时间，然后再创建 `Job`。或者，您可以将目标选择切换到 `Continuous`，从而使服务回填延迟的 `Thing` 和 `ThingGroup` 成员资格附件事件。

**由于 `LimitedExceededException` 错误，新任务失败**  
如果您的任务创建失败并显示错误响应 `LimitedExceededException`，请调用 `list-jobs` API 并查看 `isConcurrent=true` 的所有任务，以确定您是否已达到任务并发限制。有关并发任务的更多信息，请参阅[任务限制](https://docs.aws.amazon.com/iot/latest/developerguide/job-limits.html)。要查看任务并发限制以及请求提高限制，请参阅 [AWS IoT Device Management 任务限制和配额](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits)。

**任务文档大小限制**  
任务文档的大小受 MQTT 有效载荷大小的限制。如果您需要一个大于 32 kB（千字节）、32000 B（字节）的任务文档，请在 Amazon S3 中创建并存储该任务文档，然后在 `CreateJob` API 的 `documentSource` 字段中（或使用 AWS CLI）添加一个 Amazon S3 对象 URL。对于 AWS 管理控制台，请在创建任务时在 Amazon S3 网址文本框中添加 Amazon S3 对象 URL。  
+ AWS 管理控制台 创建任务文档：[使用创建和管理作业 AWS 管理控制台](https://docs.aws.amazon.com/iot/latest/developerguide/manage-job-console.html)
+ AWS CLI 创建任务文档：[使用创建和管理作业 AWS CLI](https://docs.aws.amazon.com/iot/latest/developerguide/manage-job-cli.html)
+ `CreateJob`API 文档：[CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)

**设备端 MQTT 消息请求阈值限制**  
如果您收到错误代码 400 `ThrottlingException`，则设备端 MQTT 消息会因已达到设备端同时请求的限制而失败。有关阈值限制及其是否可调整的更多信息，请参阅 [AWS IoT Device Management 任务限制和配额](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits)。

**连接超时错误**  
错误代码 400 `RequestExpired` 表示由于延迟时间较长或客户端超时值较低而导致连接失败。  
+ 有关测试客户端和服务器端之间连接的信息，请参阅[测试与设备数据端点的连接](https://docs.aws.amazon.com/iot/latest/developerguide/iot-quick-start-test-connection.html)。

**API 命令无效**  
确认输入了正确的 API 命令，以免出现错误消息，指出 API 命令无效。有关所有 AWS IoT API 命令的完整列表，请参阅 [AWS IoT API 参考](https://docs.aws.amazon.com/iot/latest/apireference/Welcome.html)。

**服务端连接错误**  
错误代码 503 `ServiceUnavailable` 表示服务器端出现错误。  
+ 有关[所有 AWS 服务的当前状态，请参阅AWS Health Dashboard （所有 AWS 服务）](https://health.aws.amazon.com/health/status)。
+ 有关您[个人的当前状态，请参阅AWS Health Dashboard （个人 AWS 账户）](https://aws.amazon.com/premiumsupport/technology/aws-health-dashboard/) AWS 账户。