Diagnostic des problèmes de règles - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Diagnostic des problèmes de règles

Cette section décrit certaines des choses à vérifier lorsque vous rencontrez un problème avec une règle.

Configuration des CloudWatch journaux pour le dépannage

La meilleure façon de résoudre les problèmes que vous rencontrez avec les règles est d'utiliser les CloudWatch journaux. Lorsque vous activez CloudWatch Logs for AWS IoT, vous pouvez voir quelles règles sont déclenchées, ainsi que leur succès ou leur échec. Vous obtenez également des informations concernant la correspondance ou non des conditions de clause WHERE. Pour plus d’informations, consultez Surveiller AWS IoT à l'aide CloudWatch des journaux.

Le problème le plus fréquent avec les règles est celui de l'autorisation. Les journaux indiquent si votre rôle n'est pas autorisé à jouer AssumeRole sur la ressource. Voici un exemple de journal généré par la journalisation affinée :

{ "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)" }

Voici un exemple similaire de journal généré par la journalisation globale :

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.

Pour plus d’informations, consultez Afficher AWS IoT les journaux dans la CloudWatch console.

Diagnostic des services externes

Les services externes sont contrôlés par l'utilisateur final. Avant d'exécuter une règle, assurez-vous que les services externes que vous avez liés à votre règle sont configurés et disposent de suffisamment d'unités de débit et de capacité pour votre application.

Diagnostic des problèmes SQL

Si votre requête SQL ne renvoie pas les données attendues :
  • Consultez les journaux pour détecter les messages d'erreur.

  • Vérifiez que votre syntaxe SQL correspond au document JSON contenu dans le message.

    Passez en revue les noms d'objets et de propriétés utilisés dans la requête avec ceux utilisés dans le document JSON de la charge utile des messages du sujet. Pour plus d'informations sur le formatage JSON dans les requêtes SQL, voir Extensions JSON.

  • Vérifiez si les noms d'objets ou de propriétés JSON incluent des caractères réservés ou numériques.

    Pour plus d'informations sur les caractères réservés dans les références d'objets JSON dans les requêtes SQL, consultez Extensions JSON.