本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon IoT SiteWise 规则操作故障排除
要对 Amazon IoT Core 中的 Amazon IoT SiteWise 规则操作进行故障排除,可以执行以下步骤之一:
-
配置亚马逊 CloudWatch 日志
-
为规则配置重新发布错误操作
然后,将错误消息与本主题中的错误进行比较,以排查问题。
配置 Amazon IoT Core 日志
您可以配置为Amazon IoT将不同级别的信息 CloudWatch 记录到日志中。
配置和访问 CloudWatch 日志
-
要配置日志Amazon IoT Core,请参阅《Amazon IoT开发者指南》中的 “使用 CloudWatch 日志进行监控”。
-
导航到 CloudWatch 控制台
。 -
在导航窗格中,选择 Log groups(日志组)。
-
选择群AWSIotLogs组。
-
选择最近的日志流。默认情况下,首先 CloudWatch 显示最新的日志流。
-
选择日志条目以展开日志消息。您的日志条目可能类似于以下屏幕截图。
-
将错误消息与本主题中的错误进行比较,以排查问题。
配置重新发布错误操作
您可以对规则的错误操作进行配置以处理错误消息。在该过程中,您将重新发布规则操作配置为错误操作,以在 MQTT 测试客户端中查看错误消息。
注意
重新发布错误操作仅输出 ERROR
级别日志的等效内容。如果您想要更多详细日志,则必须配置 CloudWatch 日志。
在规则中添加重新发布错误操作
-
导航到 Amazon IoT 控制台
。 -
在左侧导航窗格中,选择行动,然后选择规则。
-
选择您的规则。
-
在 Error action (错误操作) 下面,选择 Add action (添加操作)。
-
选择 Schema 以及 ScheAmazon IoT m a。
-
选择页面底部的 Configure action (配置操作)。
-
在 Topic (主题) 中,输入唯一主题(例如
sitewise/windfarm/rule/error
)。Amazon IoT Core 将错误消息重新发布到该主题。 -
选择 Select (选择) 以授予 Amazon IoT Core 访问权限来执行错误操作。
-
选择为规则创建的角色旁边的 Select (选择)。
-
选择 Update Role (更新角色) 以在角色中添加其他权限。
-
选择添加操作。
您的规则的错误操作应类似于以下屏幕截图。
-
选择控制台左上角的后退箭头以返回到 Amazon IoT 控制台主页。
在设置重新发布错误操作后,您可以在 Amazon IoT Core 上的 MQTT 测试客户端中查看错误消息。
在以下过程中,您在 MQTT 测试客户端中订阅错误主题。在 MQTT 测试客户端中,您可以接收规则的错误消息以排查问题。
订阅错误操作主题
-
导航到 Amazon IoT 控制台
。 -
在左侧导航页面中,选择 Test (测试) 以打开 MQTT 测试客户端。
-
在 Subscription topic (订阅主题) 字段中,输入您之前配置的错误主题(例如,
sitewise/windfarm/rule/error
),然后选择 Subscribe to topic (订阅主题)。 -
等待错误消息出现,然后在任何错误消息中展开
failures
数组。接下来,将错误消息与本主题中的错误进行比较,以排查问题。
排查问题
使用以下信息排查规则问题。
问题
- 错误:成员必须在当前时间戳之前的 604800 秒以内,在当前时间戳之后 300 秒内
- 错误:Property value does not match data type <type> (属性值与数据类型 <type> 不匹配)
- 错误:用户:<role-arn>无权在资源BatchPutAssetPropertyValue 上执行:iotsitewise:
- 错误:iot.amazonaws.com 无法AssumeRole 在资源上执行:sts: <role-arn>
- 信息:No requests were sent (没有发送请求)。 PutAssetPropertyValueEntries 执行替换模板后为空。
错误:成员必须在当前时间戳之前的 604800 秒以内,在当前时间戳之后 300 秒内
与当前 Unix 纪元时间相比,您的时间戳早于 7 天或晚于 5 分钟。尝试以下操作:
-
检查您的时间戳是否采用 Unix 纪元 (UTC) 时间。如果您提供具有不同时区的时间戳,则会收到此错误。
-
检查您的时间戳是否以秒为单位。Amazon IoT SiteWise 期望时间戳分割成以秒为单位的时间(采用 Unix 纪元时间)和以纳秒为单位的偏移量。
-
检查您上传的数据是否不晚于过去 7 天的时间戳。
错误:Property value does not match data type <type> (属性值与数据类型 <type> 不匹配)
规则操作中的条目与目标资产属性具有不同的数据类型。例如,您的目标资产属性为 DOUBLE
,但您选择的数据类型为 Integer (整数),或者您用 integerValue
传递了值。尝试以下操作:
-
如果从 Amazon IoT 控制台配置规则,请检查您是否为每个条目选择了正确的 Data type (数据类型)。
-
如果您从 API 或 Amazon Command Line Interface (Amazon CLI) 配置规则,请检查您的
value
对象是否使用了正确的类型字段(例如,对于DOUBLE
属性,正确的类型字段为doubleValue
)。
错误:用户:<role-arn>无权在资源BatchPutAssetPropertyValue 上执行:iotsitewise:
未授权您的规则访问目标资产属性,或者目标资产属性不存在。尝试以下操作:
-
检查您的属性别名是否正确,以及您是否有具有给定属性别名的资产属性。有关更多信息,请参阅将工业数据流映射到资产属性:
-
检查您的规则是否具有角色以及该角色是否允许目标资产属性具有
iotsitewise:BatchPutAssetPropertyValue
权限,例如通过目标资产的层次结构。有关更多信息,请参阅授予 Amazon IoT 所需的访问权限:
错误:iot.amazonaws.com 无法AssumeRole 在资源上执行:sts: <role-arn>
您的用户无权代入您在Amazon Identity and Access Management (IAM) 中的规则中的角色。
检查您的用户是否iam:PassRole
有权使用您的规则中的角色。有关更多信息,请参阅Amazon IoT开发者指南中的传递角色权限。
信息:No requests were sent (没有发送请求)。 PutAssetPropertyValueEntries 执行替换模板后为空。
注意
此消息是 INFO
级别日志。
您的请求必须至少具有一个包含所有必需参数的条目。
检查规则的参数(包括替换模板)是否会导致非空值。替换模板无法访问规则查询语句中的 AS
子句定义的值。有关更多信息,请参阅Amazon IoT开发者指南中的替代模板。