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.
Fehlerbehandlung (Fehleraktion)
Wenn eine Nachricht von einem Gerät AWS IoT empfangen wird, prüft die Regel-Engine, ob die Nachricht einer Regel entspricht. Ist dies der Fall, wird die Abfrageanweisung der Regel evaluiert und die Aktionen der Regel aktiviert. Dabei wird das Ergebnis der Abfrageanweisung übergeben.
Wenn bei der Aktivierung einer Aktion ein Problem auftritt, aktiviert die Regel-Engine eine Fehleraktion, falls eine solche für die Regel angegeben ist. Dies kann der Fall sein, wenn:
-
Eine Regel verfügt nicht über die Berechtigung, auf einen Amazon S3-Bucket zuzugreifen.
-
Ein Benutzerfehler führt dazu, dass der für DynamoDB bereitgestellte Durchsatz überschritten wird.
Anmerkung
Die in diesem Thema behandelte Fehlerbehandlung bezieht sich auf Regelaktionen. Um SQL-Probleme, einschließlich externer Funktionen, zu debuggen, können Sie die AWS IoT Protokollierung einrichten. Weitere Informationen finden Sie unter Konfigurieren Sie die AWS IoT Protokollierung.
Nachrichtenformat für Fehleraktion
Eine einzelne Nachricht wird pro Regel und Nachricht generiert. Wenn beispielsweise zwei Regelaktionen in derselben Regel fehlschlagen, empfängt die Fehleraktion eine Nachricht, die beide Fehler enthält.
Die Fehlermeldung der Aktion kann in etwa wie im folgenden Beispiel aussehen.
{ "ruleName": "TestAction", "topic": "testme/action", "cloudwatchTraceId": "7e146a2c-95b5-6caf-98b9-50e3969734c7", "clientId": "iotconsole-1511213971966-0", "base64OriginalPayload": "ewogICJtZXNzYWdlIjogIkhlbGxvIHZyb20gQVdTIElvVCBjb25zb2xlIgp9", "failures": [ { "failedAction": "S3Action", "failedResource": "us-east-1-s3-verify-user", "errorMessage": "Failed to put S3 object. The error received was The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: 9DF5416B9B47B9AF; S3 Extended Request ID: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=). Message arrived on: error/action, Action: s3, Bucket: us-east-1-s3-verify-user, Key: \"aaa\". Value of x-amz-id-2: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=" } ] }
- ruleName
-
Der Name der Regel, die die Fehleraktion ausgelöst hat.
- Thema
-
Das Thema, in dem die ursprüngliche Nachricht empfangen wurde.
- cloudwatchTraceId
-
Eine eindeutige Identität, die sich auf den Fehler bezieht, meldet sich an CloudWatch.
- clientId
-
Die Client-ID des Herausgebers der Nachricht.
- Base64 OriginalPayload
-
Die ursprüngliche Nachrichtennutzlast, Base64-kodiert.
- failures
-
- failedAction
-
Der Name der Aktion, die nicht abgeschlossen werden konnte (z. B. „S3Action”).
- failedResource
-
Der Name der Ressource (z. B. der Name eines S3-Buckets).
- errorMessage
-
Die Beschreibung und Erläuterung des Fehlers.
Beispiel für Fehleraktion
Hier finden Sie ein Beispiel für eine Regel, der eine Fehleraktion hinzugefügt wurde. Die folgende Regel weist eine Aktion, die Nachrichtendaten in eine DynamoDB-Tabelle schreibt, und eine Fehleraktion auf, die Daten in einen Amazon S3-Bucket schreibt:
{ "sql" : "SELECT * FROM ..." "actions" : [{ "dynamoDB" : { "table" : "PoorlyConfiguredTable", "hashKeyField" : "AConstantString", "hashKeyValue" : "AHashKey"}} ], "errorAction" : { "s3" : { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3", "bucketName" : "message-processing-errors", "key" : "${replace(topic(), '/', '-') + '-' + timestamp() + '-' + newuuid()}" } } }
Sie können jede Funktion oder Ersetzungsvorlage in der SQL-Anweisung einer Fehleraktion verwenden, einschließlich der externen Funktionen: aws_lambda()
, get_dynamodb()
, get_thing_shadow()
, get_secret()
machinelearning_predict()
, und decode()
. Wenn eine Fehleraktion den Aufruf einer externen Funktion erfordert, kann der Aufruf der Fehleraktion zu einer zusätzlichen Rechnung für die externe Funktion führen.
Die folgenden externen Funktionen werden äquivalent zu einer Regelaktion abgerechnet: aws_lambda
get_dynamodb()
, und. get_thing_shadow()
Außerdem wird Ihnen die decode()
Funktion nur dann in Rechnung gestellt, wenn Sie eine Protobuf-Nachricht in JSON dekodieren. Weitere Informationen finden Sie auf der AWS IoT Core Seite mit den Preisen
Weitere Informationen zu Regeln und zur Angabe einer Fehleraktion finden Sie unter AWS IoT Regel erstellen.
Weitere Informationen CloudWatch zur Überwachung des Erfolgs oder Fehlers von Regeln finden Sie unterAWS IoT Metriken und Dimensionen.