Amazon IoT 作业疑难解答 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon IoT 作业疑难解答

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

如何找到 Amazon IoT 作业终端节点?

如何找到 Amazon IoT Jobs 控制平面端点?

Amazon IoT 作业支持使用 HTTPS 协议控制平面 API 操作。确认您已使用 HTTPS 协议连接到正确的控制平面端点。

有关 Amazon 特定区域终端节点的列表,请参阅Amazon IoT 核心-控制平面端点。

有关符合 FIPS 的 Amazon IoT Jobs 控制平面端点的列表,请参阅按服务划分的 FIPS 端点

注意

Amazon IoT 任务和 Amazon IoT Core 共享相同的 Amazon 特定于区域的终端节点。

如何找到 Amazon IoT 作业数据平面端点?

Amazon IoT 作业支持使用 HTTPS 和 MQTT 协议进行数据平面 API 操作。确认您已使用 HTTPS 或 MQTT 协议连接到正确的数据端点。

  • HTTPS 协议

    • 使用下面显示的 describe-endpoint CLI 命令或 DescribeEndpoint REST API。对于端点类型,请使用 iot:Jobs

      aws iot describe-endpoint --endpoint-type iot:Jobs
  • MQTT 协议

    • 使用下面显示的 describe-endpoint CLI 命令或 DescribeEndpoint REST API。对于端点类型,请使用 iot:Data-ATS(推荐)或 iot:Data

      aws iot describe-endpoint --endpoint-type iot:Data-ATS (recommended)
      aws iot describe-endpoint --endpoint-type iot:Data

有关符合 FIPS 的 Amazon IoT Jobs 数据平面端点的列表,请参阅按服务划分的 FIPS 端点

如何监控 Amazon IoT 作业活动并提供指标?

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

有关亚马逊 CloudWatch 以及如何通过 IAM 用户角色设置 CloudWatch 资源使用权限的更多信息,请参阅亚马逊的身份和访问管理 CloudWatch

如何使用 Amazon 设置 Amazon IoT 任务指标和监控 CloudWatch?

要设置 Amazon IoT 日志记录,请按照配置 Amazon IoT 日志中概述的步骤进行操作。 Amazon IoT 日志设置可以在 Amazon Web Services Management Console Amazon CLI、或 API 中完成。 Amazon IoT 为特定事物组设置的日志只能在 Amazon CLI 或 API 中完成。

Amazon IoT 作业指标部分包含用于监控 Amazon IoT 作业活动的 Amazon IoT 作业指标。它说明了如何查看 Amazon Web Services Management Console 和中的指标 Amazon CLI。

此外,您可以设置 CloudWatch 警报,提醒您要密切监控的特定指标。有关警报设置的指导,请参阅使用 Amazon CloudWatch 警报

设备队列和单台设备故障排除

任务执行无限期保持 QUEUED 状态

当状态为 QUEUED 的任务执行未进入下一个逻辑状态(例如 IN_PROGRESSFAILED、或 TIMED_OUT)时,原因可能是以下情况之一:

  • CloudWatch 控制台中的 CloudWatch 日志中查看您的设备活动。有关更多信息,请参阅Amazon IoT 使用 CloudWatch 日志进行监控

  • 与该任务和后续任务执行关联的 IAM 角色可能不具备附加到该 IAM 角色的 IAM 策略其中一项策略声明中所列的正确权限。使用 describe-job API 确定与该任务和后续任务执行关联的 IAM 角色,并查看 IAM 策略了解正确的权限。更新策略权限声明后,您应该能够对资源执行 AssumeRole API 命令。

没有为我的事物或事物组创建任务执行

当任务将其状态更新为 IN_PROGRESS 时,它就会开始向目标组中的所有设备推出任务文档。此状态更新将为每台目标设备创建任务执行。如果未为其中一台目标设备创建任务执行,请参阅以下指导:

  • thing 是否由任务直接定向,任务的状态是否为 IN_PROGRESS,任务是否是并发任务? 如果所有三个条件都满足,则该任务仍向目标组中的所有设备发送任务执行,并且该特定 thing 尚未收到其任务执行。

    • 在 Amazon 管理控制台中查看目标组中的设备是否有任务和任务状态或使用 describe-jobAPI 命令。

    • 使用 describe-job API 命令查看任务的 IsConcurrent 属性设置为 true 还是 false。有关更多信息,请参阅任务限制

  • thing 并非直接由任务定向。

    • 如果 Thing 已添加到 ThingGroup,且任务已定向 ThingGroup,则请验证 Thing 是否属于 ThingGroup

    • 如果该任务状态为 IN_PROGRESS 且属于并发任务的快照任务,则该任务仍向目标组中的所有设备发送任务执行,并且该特定 Thing 尚未收到其任务执行。

    • 如果该任务状态为 IN_PROGRESS 且属于并发任务的持续任务,则该任务仍向目标组中的所有设备发送任务执行,并且该特定 Thing 尚未收到其任务执行。仅对于持续任务,您也可以从 ThingGroup 中删除 Thing,然后将 Thing 重新添加回 ThingGroup

    • 如果作业是状态为IN_PROGRESS且非并发状态的快照作 Amazon IoT 业,则任务很可能未确认ThingThingGroup成员关系的情况。建议在AddThingToThingGroup呼叫后增加几秒钟的等待时间,然后再创建Job。或者,您可以将目标选择切换到Continuous,从而使服务回填延迟ThingThingGroup成员资格附件事件。

由于 LimitedExceededException 错误,新任务失败

如果您的任务创建失败并显示错误响应 LimitedExceededException,请调用 list-jobs API 并查看 isConcurrent=true 的所有任务,以确定您是否已达到任务并发限制。有关并发任务的更多信息,请参阅任务限制。要查看任务并发限制以及请求提高限制,请参阅 Amazon IoT Device Management 任务限制和配额

任务文档大小限制

任务文档的大小受 MQTT 负载大小的限制。如果您需要一个大于 32 kB(千字节)、32000 B(字节)的任务文档,请在 Amazon S3 中创建并存储该任务文档,然后在 CreateJob API 的 documentSource 字段中(或使用 Amazon CLI)添加一个 Amazon S3 对象 URL。对于 Amazon Web Services Management Console,请在创建任务时在 Amazon S3 网址文本框中添加 Amazon S3 对象 URL。

设备端 MQTT 消息请求阈值限制

如果您收到错误代码 400 ThrottlingException,则设备端 MQTT 消息会因已达到设备端同时请求的限制而失败。有关阈值限制及其是否可调整的更多信息,请参阅 Amazon IoT Device Management 任务限制和配额

连接超时错误

错误代码 400 RequestExpired 表示由于延迟时间较长或客户端超时值较低而导致连接失败。

API 命令无效

确认输入了正确的 API 命令,以免出现错误消息,指出 API 命令无效。有关所有 Amazon IoT API 命令的完整列表,请参阅 Amazon IoT API 参考

服务端连接错误

错误代码 503 ServiceUnavailable 表示服务器端出现错误。