本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 AWS IoT SiteWise 规则操作进行故障排除
要对中的 AWS IoT SiteWise 规则操作进行故障排除 AWS IoT Core,可以执行以下步骤之一:
-
配置 Amazon CloudWatch 日志
-
为规则配置重新发布错误操作
然后,将错误消息与本主题中的错误进行比较,以排查问题。
配置 AWS IoT Core 日志
您可以配置为 AWS IoT 将不同级别的信息 CloudWatch 记录到 Logs 中。
配置和访问 CloudWatch 日志
-
要为配置日志记录 AWS IoT Core,请参阅《AWS IoT 开发人员指南》中的使用 CloudWatch 日志进行监控。
-
导航到CloudWatch 控制台
。 -
在导航窗格中,选择 日志组。
-
选择群AWSIotLogs组。
-
选择最近的日志流。默认情况下,首先 CloudWatch 显示最新的日志流。
-
选择日志条目以展开日志消息。您的日志条目可能类似于以下屏幕截图。
-
将错误消息与本主题中的错误进行比较,以排查问题。
配置重新发布错误操作
您可以对规则的错误操作进行配置以处理错误消息。在此过程中,您将重新发布规则操作配置为错误操作,以便在MQTT测试客户端中查看错误消息。
注意
重新发布错误操作仅输出 ERROR
级别日志的等效内容。如果需要更多详细日志,则必须配置 CloudWatch 日志。
在规则中添加重新发布错误操作
-
导航到 AWS IoT 控制台
。 -
在左侧导航窗格中,选择行动,然后选择规则。
-
选择您的规则。
-
在 错误操作 下面,选择 添加操作。
-
选择 “将消息重新发布到某个 AWS IoT 主题”。
-
选择页面底部的 配置操作。
-
在主题中,输入唯一的主题(例如,
sitewise/windfarm/rule/error
)。 AWS IoT Core 将重新发布此主题的错误消息。 -
选择 “选择” 以授予执行错误操作的 AWS IoT Core 访问权限。
-
选择为规则创建的角色旁边的 选择。
-
选择 更新角色 以在角色中添加其他权限。
-
选择添加操作。
您的规则的错误操作应类似于以下屏幕截图。
-
选择主机左上角的后退箭头返回 AWS IoT 主机主页。
设置重新发布错误操作后,可以在中的MQTT测试客户端中 AWS IoT Core查看错误消息。
在以下步骤中,您可以在MQTT测试客户端中订阅错误主题。在MQTT测试客户端中,您可以收到规则的错误消息来解决问题。
订阅错误操作主题
-
导航到 AWS IoT 控制台
。 -
在左侧导航页中,选择 “测试” 以打开MQTT测试客户端。
-
在 订阅主题 字段中,输入您之前配置的错误主题(例如,
sitewise/windfarm/rule/error
),然后选择 订阅主题。 -
等待错误消息出现,然后在任何错误消息中展开
failures
数组。接下来,将错误消息与本主题中的错误进行比较,以排查问题。
对规则问题进行故障排除
使用以下信息排查规则问题。
问题
- 错误:成员必须在当前时间戳之前 604800 秒和之后 300 秒范围内
- 错误:Property value does not match data type <type> (属性值与数据类型 <type> 不匹配)
- 错误:用户:<role-arn>无权在资源上执行:iotsitewise:BatchPutAssetPropertyValue
- 错误:iot.amazonaws.com 无法在资源上执行:sts:AssumeRole <role-arn>
- 信息:No requests were sent (没有发送请求)。 PutAssetPropertyValueEntries 执行替换模板后为空。
错误:成员必须在当前时间戳之前 604800 秒和之后 300 秒范围内
与当前 Unix 纪元时间相比,您的时间戳早了超过 7 天或晚了超过 5 分钟。尝试以下操作:
-
检查您的时间戳是否为 Unix epoch (UTC) 时间。如果您提供具有不同时区的时间戳,则会收到此错误。
-
检查您的时间戳是否以秒为单位。 AWS IoT SiteWise 期望时间戳分为以秒为单位的时间(以 Unix 纪元时间为单位)和以纳秒为单位的偏移量。
-
检查您正在上传的数据的时间戳是否是在过去 7 天之前。
错误:Property value does not match data type <type> (属性值与数据类型 <type> 不匹配)
规则操作中的条目与目标资产属性具有不同的数据类型。例如,您的目标资产属性为 DOUBLE
,但您选择的数据类型为 整数,或者您用 integerValue
传递了值。尝试以下操作:
-
如果您从 AWS IoT 控制台配置规则,请检查是否为每个条目选择了正确的数据类型。
-
如果您通过API或 AWS Command Line Interface (AWS CLI) 配置规则,请检查您的
value
对象是否使用了正确的类型字段(doubleValue
例如,DOUBLE
属性字段)。
错误:用户:<role-arn>无权在资源上执行:iotsitewise:BatchPutAssetPropertyValue
未授权您的规则访问目标资产属性,或者目标资产属性不存在。尝试以下操作:
-
检查您的属性别名是否正确,以及您是否有具有给定属性别名的资产属性。有关更多信息,请参阅 将工业数据流映射到资产属性。
-
检查您的规则是否具有角色以及该角色是否允许目标资产属性具有
iotsitewise:BatchPutAssetPropertyValue
权限,例如通过目标资产的层次结构。有关更多信息,请参阅 授 AWS IoT 予所需的访问权限。
错误:iot.amazonaws.com 无法在资源上执行:sts:AssumeRole <role-arn>
您的用户无权扮演您在 AWS Identity and Access Management (IAM) 中的规则中的角色。
检查是否对您的用户授予规则上角色的 iam:PassRole
权限。有关更多信息,请参阅 AWS IoT 开发人员指南中的 传递角色权限。
信息:No requests were sent (没有发送请求)。 PutAssetPropertyValueEntries 执行替换模板后为空。
注意
此消息是 INFO
级别日志。
您的请求必须至少具有一个包含所有必需参数的条目。
检查规则的参数(包括替换模板)是否会导致非空值。替换模板无法访问规则查询语句中的 AS
子句定义的值。有关更多信息,请参阅 AWS IoT 开发人员指南中的替换模板。
对规则进行故障排除 (AWS IoT SiteWise)
如果CPU和内存使用率数据未按预期显示,请按照此过程中的 AWS IoT SiteWise 步骤对规则进行故障排除。在此过程中,您将重新发布规则操作配置为错误操作,以便在MQTT测试客户端中查看错误消息。您也可以配置日志记录以 CloudWatch 进行故障排除。有关更多信息,请参阅 对 AWS IoT SiteWise 规则操作进行故障排除。
在规则中添加重新发布错误操作
-
导航到 AWS IoT 控制台
。 -
在左侧导航窗格中,选择消息路由,然后选择规则。
-
选择您以前创建的规则,然后选择编辑。
-
在错误操作 -可选下,选择添加错误操作。
-
选择 “将消息重新发布到某个 AWS IoT 主题”。
-
在主题中,输入错误路径(例如,
sitewise/rule/tutorial/error
)。 AWS IoT Core 将重新发布此主题的错误消息。 -
选择您之前创建的角色(例如,SiteWiseTutorialDeviceRuleRole)。
-
选择更新。
设置重新发布错误操作后,可以在中的MQTT测试客户端中 AWS IoT Core查看错误消息。
在以下步骤中,您可以在MQTT测试客户端中订阅错误主题。
订阅错误操作主题
-
导航到 AWS IoT 控制台
。 -
在左侧导航页中,选择 “MQTT测试客户端” 以打开MQTT测试客户端。
-
在主题筛选器字段中,输入
sitewise/rule/tutorial/error
并选择订阅。
出现错误消息时,查看任何错误消息中的 failures
阵列以诊断问题。有关可能的问题以及如何解决这些问题的更多信息,请参阅对 AWS IoT SiteWise 规则操作进行故障排除。
如果未显示错误,请检查是否启用了您的规则,以及您是否订阅了在重新发布错误操作中配置的相同主题。如果在执行此操作后仍未出现错误,请检查设备脚本是否正在运行并成功更新设备的影子。
注意
您还可以订阅设备的影子更新主题,以查看您的 AWS IoT SiteWise 操作解析的有效负载。为此,请订阅以下主题。
$aws/things/+/shadow/update/accepted
对规则进行故障排除 (DynamoDB)
如果演示资产数据未按预期方式显示在 DynamoDB 表中,请按照该过程中的步骤排除规则故障。在此过程中,您将重新发布规则操作配置为错误操作,以便在MQTT测试客户端中查看错误消息。您也可以配置日志记录以 CloudWatch 进行故障排除。有关更多信息,请参阅《AWS IoT 开发人员指南》中的使用 CloudWatch 日志进行监控。
在规则中添加重新发布错误操作
-
导航到 AWS IoT 控制台
。 -
在左侧导航窗格中,选择行动,然后选择规则。
-
选择您以前创建的规则。
-
在 错误操作 下面,选择 添加操作。
-
选择 “将消息重新发布到某个 AWS IoT 主题”。
-
选择页面底部的 配置操作。
-
在 Topic(主题)中输入
windspeed/error
。 AWS IoT Core 将重新发布此主题的错误消息。 -
选择 Select 以授予使用您之前创建的角色执行错误操作的 C AWS IoT ore 访问权限。
-
选择您的角色旁边的 选择。
-
选择 更新角色 以在角色中添加其他权限。
-
选择 添加操作 以完成添加错误操作的过程。
-
选择主机左上角的后退箭头返回 AWS IoT 酷睿主机主页。
设置重新发布错误操作后,您可以在 C AWS IoT ore 的MQTT测试客户端中查看错误消息。
在以下步骤中,您可以在MQTT测试客户端中订阅错误主题。
订阅错误操作主题
-
在 AWS IoT Core 控制台的左侧导航页中,选择 “测试”。
-
在 订阅主题 字段中,输入
windspeed/error
并选择 订阅主题。 -
观察显示的错误消息,并在错误消息中浏览
failures
数组以诊断以下常见问题:-
规则查询语句中的错别字
-
角色权限不足
如果未显示错误,请检查是否启用了您的规则,以及您是否订阅了在重新发布错误操作中配置的相同主题。如果仍未显示错误,请检查您的演示风电场资产是否仍然存在,以及是否在风速属性上启用了通知。如果您的演示资产已过期并从中消失 AWS IoT SiteWise,则可以创建一个新的演示并更新规则查询语句以反映更新的资产模型和属性IDs。
-