診斷規則問題 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

診斷規則問題

協助我們改善此主題

本節說明當您遇到規則問題時,要檢查的一些事項。

設定疑難排解的 CloudWatch 記錄

調試規則遇到的問題的最佳方法是使用 CloudWatch 日誌。當您啟用 CloudWatch 記錄檔時 AWS IoT,您可以查看哪些規則已觸發,以及其成功或失敗。也會獲得 WHERE 子句條件是否符合的資訊。如需詳細資訊,請參閱 AWS 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 主控台中檢視 AWS IoT 記錄

診斷外部服務

外部服務受最終使用者的控制。在執行規則之前,請確認您連結至規則的外部服務已經設定,並為您的應用程式提供足夠的輸送量和容量單位。

診斷 SQL 問題

若您的 SQL 查詢並未傳回您想要的資料:
  • 請檢閱錯誤訊息的日誌。

  • 確認您的 SQL 語法符合訊息中的 JSON 文件。

    檢閱用於查詢中的物件和屬性名稱,及主題訊息承載的 JSON 文件中所使用名稱。如需 SQL 查詢中 JSON 格式的詳細資訊,請參閱 JSON Extensions

  • 檢查 JSON 物件或屬性名稱是否包含保留或數字字元。

    如需 SQL 查詢中 JSON 物件參考中保留字元的詳細資訊,請參閱 JSON Extensions