本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS IoT作业疑难解答
这是AWS IoT作业的疑难解答部分。
如何找到AWS IoT作业终端节点?
- 如何找到AWS IoT作业控制平面端点?
-
AWS IoT作业支持使用 HTTPS 协议控制平面 API 操作。确认您已使用 HTTPS 协议连接到正确的控制面板端点。
有关AWS特定区域终端节点的列表,请参阅AWS IoT核心-控制平面终端节点。
有关符合 FIPS 的 AWS IoT Jobs 控制面板端点的列表,请参阅按服务划分的 FIPS 端点
注意
AWS IoT任务和AWS IoT Core共享相同的AWS特定区域终端节点。
- 如何找到AWS IoT作业数据平面端点?
-
AWS IoT作业支持使用 HTTPS 和 MQTT 协议进行数据平面 API 操作。确认您已使用 HTTPS 或 MQTT 协议连接到正确的数据端点。
-
HTTPS 协议
-
使用下面显示的 describe-endpoint
CLI 命令或 DescribeEndpointREST API。对于端点类型,请使用iot:Jobs。aws iot describe-endpoint --endpoint-typeiot:Jobs
-
-
MQTT 协议
-
使用下面显示的 describe-endpoint
CLI 命令或 DescribeEndpointREST API。对于端点类型,请使用iot:Data-ATS。aws iot describe-endpoint --endpoint-typeiot:Data-ATS
-
有关符合 FIPS 的 AWS IoT Jobs 数据面板端点的列表,请参阅按服务划分的 FIPS 端点
-
如何监控AWS IoT作业活动并提供指标?
使用 Amaz CloudWatch on 监控AWS IoT任务活动可以实时了解正在进行的AWS IoT任务操作,并通过AWS IoT规则 CloudWatch 发出警报,帮助控制成本。必须先配置日志记录,然后才能监控AWS IoT作业活动和设置 CloudWatch警报。有关如何设置日志记录的更多信息,请参阅 配置AWS IoT日志。
有关亚马逊 CloudWatch 以及如何通过 IAM 用户角色设置 CloudWatch 资源使用权限的更多信息,请参阅亚马逊的身份和访问管理 CloudWatch。
- 如何使用 Amazon 设置AWS IoT任务指标和监控 CloudWatch?
-
要设置AWS IoT日志记录,请按照配置AWS IoT日志中概述的步骤进行操作。 AWS IoT日志设置可以在AWS 管理控制台AWS CLI、或 API 中完成。 AWS IoT为特定事物组设置的日志只能在AWS CLI或 API 中完成。
AWS IoT作业指标部分包含用于监控AWS IoT作业活动的AWS IoT作业指标。它说明了如何查看AWS 管理控制台和中的指标AWS CLI。
此外,您可以设置 CloudWatch 警报,提醒您要密切监控的特定指标。有关警报设置的指导,请参阅使用 Amazon CloudWatch 警报。
设备队列和单台设备故障排除
- 任务执行无限期保持
QUEUED状态 -
当状态为
QUEUED的任务执行未进入下一个逻辑状态(例如IN_PROGRESS、FAILED、或TIMED_OUT)时,原因可能是以下情况之一:-
在CloudWatch 控制台中的 CloudWatch 日志中查看您的设备活动。有关更多信息,请参阅AWS IoT使用 CloudWatch 日志进行监控。
-
与该任务和后续任务执行关联的 IAM 角色可能不具备附加到该 IAM 角色的 IAM 策略其中一项策略声明中所列的正确权限。使用
describe-jobAPI 确定与该任务和后续任务执行关联的 IAM 角色,并查看 IAM 策略了解正确的权限。更新策略权限声明后,您应该能够对资源执行AssumeRoleAPI 命令。
-
- 没有为我的事物或事物组创建任务执行
-
当任务将其状态更新为
IN_PROGRESS时,它就会开始向目标组中的所有设备推出任务文档。此状态更新将为每台目标设备创建任务执行。如果未为其中一台目标设备创建任务执行,请参阅以下指导:-
thing是否由任务直接定向,任务的状态是否为IN_PROGRESS,任务是否是并发任务? 如果所有三个条件都满足,则该任务仍向目标组中的所有设备发送任务执行,并且该特定thing尚未收到其任务执行。-
在AWS管理控制台中查看目标组中任务的设备以及任务状态或使用
describe-jobAPI 命令。 -
使用
describe-jobAPI 命令查看任务的IsConcurrent属性设置为 true 还是 false。有关更多信息,请参阅任务限制。
-
-
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-jobsAPI 并查看isConcurrent=true的所有任务,以确定您是否已达到任务并发限制。有关并发任务的更多信息,请参阅任务限制。要查看任务并发限制以及请求提高限制,请参阅 AWS IoT Device Management 任务限制和配额。
- 任务文档大小限制
-
任务文档的大小受 MQTT 有效载荷大小的限制。如果您需要一个大于 32 kB(千字节)、32000 B(字节)的任务文档,请在 Amazon S3 中创建并存储该任务文档,然后在
CreateJobAPI 的documentSource字段中(或使用 AWS CLI)添加一个 Amazon S3 对象 URL。对于AWS 管理控制台,请在创建任务时在 Amazon S3 网址文本框中添加 Amazon S3 对象 URL。-
AWS 管理控制台创建任务文档:使用创建和管理作业 AWS 管理控制台
-
AWS CLI创建任务文档:使用创建和管理作业 AWS CLI
-
CreateJobAPI 文档:CreateJob
-
- 设备端 MQTT 消息请求阈值限制
-
如果您收到错误代码 400
ThrottlingException,则设备端 MQTT 消息会因已达到设备端同时请求的限制而失败。有关阈值限制及其是否可调整的更多信息,请参阅 AWS IoT Device Management 任务限制和配额。
- 连接超时错误
-
错误代码 400
RequestExpired表示由于延迟时间较长或客户端超时值较低而导致连接失败。-
有关测试客户端和服务器端之间连接的信息,请参阅测试与设备数据端点的连接。
-
- API 命令无效
-
确认输入了正确的 API 命令,以免出现错误消息,指出 API 命令无效。有关所有 AWS IoT API 命令的完整列表,请参阅 AWS IoT API 参考。
- 服务端连接错误
-
错误代码 503
ServiceUnavailable表示服务器端出现错误。