Fehler bei der Regeldiagnose - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehler bei der Regeldiagnose

In diesem Abschnitt werden einige Dinge beschrieben, die Sie überprüfen sollten, wenn Sie auf ein Problem mit einer Regel stoßen.

Konfiguration von CloudWatch Protokollen für die Problembehandlung

Die beste Methode zum Debuggen von Problemen, die Sie mit Regeln haben, ist die Verwendung von CloudWatch Protokollen. Wenn Sie CloudWatch Logs for aktivieren AWS IoT, können Sie sehen, welche Regeln ausgelöst wurden und ob sie erfolgreich waren oder nicht. Sie werden ebenfalls informiert, ob die Bedingungen der WHERE-Klausel zutreffen. Weitere Informationen finden Sie unter Überwachung AWS IoT mithilfe von CloudWatch Protokollen.

Der häufigsten Probleme in Zusammenhang mit Regeln betreffen die Autorisierung. In den Protokollen wird angezeigt, ob Ihre Rolle nicht autorisiert ist, AssumeRole auf der Ressource zu arbeiten. Hier sehen Sie ein Beispielprotokoll bei einer differenzierten Protokollierung:

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

Hier sehen Sie ein ähnliches Beispielprotokoll bei einer globalen Protokollierung:

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.

Weitere Informationen finden Sie unter AWS IoT Protokolle in der CloudWatch Konsole anzeigen.

Diagnose externer Services

Externe Services werden vom Endbenutzer reguliert. Stellen Sie vor der Ausführung der Regel sicher, dass die externen Services, die Sie mit Ihrer Regel verknüpft haben, eingerichtet sind und über genügend Durchsatz- und Kapazitätseinheiten für Ihre Anwendung verfügen.

Diagnose von SQL-Problemen

Wenn Ihre SQL-Abfrage nicht die erwarteten Daten zurückgibt:
  • Überprüfen Sie die Protokolle auf Fehlermeldungen.

  • Vergewissern Sie sich, dass Ihre SQL-Syntax mit dem JSON-Dokument in der Nachricht übereinstimmt.

    Vergleichen Sie die in der Abfrage verwendeten Objekt- und Eigenschaftsnamen mit denen, die im JSON-Dokument der Nachrichtennutzlast des Themas verwendet wurden. Weitere Informationen über die JSON-Formatierung in SQL-Abfragen finden Sie unter JSON-Erweiterungen.

  • Prüfen Sie, ob die JSON-Objekt- oder Eigenschaftsnamen reservierte oder numerische Zeichen enthalten.

    Weitere Hinweise zu reservierten Zeichen in JSON-Objektreferenzen in SQL-Abfragen finden Sie unter JSON-Erweiterungen.