ルール関連の問題の診断 - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ルール関連の問題の診断

このトピックの改善にご協力ください

このセクションでは、ルールに関する問題が発生した場合に確認する必要のあるいくつかの事項について説明します。

トラブルシューティングのための CloudWatch ログの設定

ルールで発生している問題をデバッグする最善の方法は、 CloudWatch ログを使用することです。の CloudWatch ログを有効にすると AWS IoT、トリガーされるルールとその成功または失敗を確認できます。また、WHERE 句の条件の一致について情報も得られます。詳細については、「 CloudWatch ログ AWS IoT を使用したモニタリング」を参照してください。

最も一般的なルールの問題は権限付与です。ログには、ロールがリソース 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 拡張」を参照してください。

  • JSON オブジェクトまたはプロパティ名に予約文字または数字が含まれているかどうかを確認します。

    SQL クエリでの JSON オブジェクト参照の予約文字の詳細については、「JSON 拡張」を参照してください。