诊断规则问题 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

诊断规则问题

帮助我们改进此主题

本部分介绍了在遇到规则问题时要检查的一些事项。

配置用于故障排除的 CloudWatch 日志

调试规则问题的最佳方法是使用 CloudWatch 日志。启用 CloudWatch 日志后 Amazon IoT,您可以看到哪些规则被触发以及它们的成功或失败。您还可以了解 WHERE 子句条件是否匹配。有关更多信息,请参阅Amazon IoT 使用 CloudWatch 日志进行监控

最常见的规则问题是授权问题。日志会显示您的角色是否无权在资源 AssumeRole 上执行。下面是一个精细日志记录功能生成的示例日志:

{ "timestamp": "2017-12-09 22:49:17.954", "logLevel": "ERROR", "traceId": "ff563525-6469-506a-e141-78d40375fc4e", "accountId": "123456789012", "status": "Failure", "eventType": "RuleExecution", "clientId": "iotconsole-123456789012-3", "topicName": "test-topic", "ruleName": "rule1", "ruleAction": "DynamoAction", "resources": { "ItemHashKeyField": "id", "Table": "trashbin", "Operation": "Insert", "ItemHashKeyValue": "id", "IsPayloadJSON": "true" }, "principalId": "ABCDEFG1234567ABCD890:outis", "details": "User: arn:aws:sts::123456789012:assumed-role/dynamo-testbin/5aUMInJH is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/testbin (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException; Request ID: AKQJ987654321AKQJ123456789AKQJ987654321AKQJ987654321)" }

下面是一个全局日志记录功能生成的类似示例日志:

2017-12-09 22:49:17.954 TRACEID:ff562535-6964-506a-e141-78d40375fc4e PRINCIPALID:ABCDEFG1234567ABCD890:outis [ERROR] EVENT:DynamoActionFailure TOPICNAME:test-topic CLIENTID:iotconsole-123456789012-3 MESSAGE:Dynamo Insert record failed. The error received was User: arn:aws:sts::123456789012:assumed-role/dynamo-testbin/5aUMInJI is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/testbin (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException; Request ID: AKQJ987654321AKQJ987654321AKQJ987654321AKQJ987654321). Message arrived on: test-topic, Action: dynamo, Table: trashbin, HashKeyField: id, HashKeyValue: id, RangeKeyField: None, RangeKeyValue: 123456789012 No newer events found at the moment. Retry.

有关更多信息,请参阅在 CloudWatch 控制台中查看 Amazon IoT 日志

诊断外部服务

外部服务由最终用户控制。在执行规则之前,请确保已设置链接到规则的外部服务,并且具有足够的应用程序吞吐量和容量单位。

诊断 SQL 问题

如果您的 SQL 查询没有返回您期望的数据:
  • 查看日志中的错误消息。

  • 确认您的 SQL 语法与消息中的 JSON 文档匹配。

    查看查询中使用的对象和属性名称,以及主题消息负载的 JSON 文档中使用的对象名和属性名称。有关 SQL 查询中 JSON 格式的更多信息,请参阅 JSON 扩展

  • 检查 JSON 对象或属性名称是否包含预留字符或数字字符。

    有关 SQL 查询中 JSON 对象引用中预留字符的更多信息,请参阅 JSON 扩展