Gestione degli errori (operazione in caso di errore) - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione degli errori (operazione in caso di errore)

Quando AWS IoT riceve un messaggio da un dispositivo, il motore delle regole verifica se il messaggio corrisponde a una regola. In tal caso, l'istruzione query della regola viene valutata e vengono attivate le operazioni della regola, passando il risultato dell'istruzione query.

Se si verifica un problema quando si richiama un'operazione, il motore di regole richiama un'operazione da eseguire in caso di errore, se ne è stata specificata una per la regola. Questo può accadere quando:

  • Una regola non dispone dell'autorizzazione per l'accesso a un bucket Amazon S3.

  • Un errore dell'utente causa il superamento della velocità effettiva di Dynamo DB di cui è stato effettuato il provisioning.

Nota

La gestione degli errori trattata in questo argomento riguarda le operazioni delle regole. Per eseguire il debug dei problemi SQL, incluse le funzioni esterne, puoi configurare la AWS IoT registrazione. Per ulteriori informazioni, consulta Configura AWS IoT logging.

Formato del messaggio dell'operazione da eseguire in caso di errore

Viene generato un singolo messaggio per ogni regola e messaggio. Se, ad esempio, si verifica un errore per due operazioni nella stessa regola, l'operazione da eseguire in caso di errore riceve un messaggio contenente entrambi gli errori.

Il messaggio dell'operazione di errore è simile a quello nell'esempio seguente.

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

Nome della regola che ha attivato l'operazione da eseguire in caso di errore.

topic

Argomento dove è stato ricevuto il messaggio originale.

cloudwatchTraceId

Un'identità univoca che si riferisce ai log in degli errori. CloudWatch

clientId

ID client di chi ha pubblicato il messaggio.

base64 OriginalPayload

Payload del messaggio originale con codifica Base64.

failures
failedAction

Nome dell'operazione che non è stato possibile completare, ad esempio "S3Action".

failedResource

Nome della risorsa, ad esempio il nome di un bucket S3.

errorMessage

Descrizione e spiegazione dell'errore.

Esempio di operazione in caso di errore

Di seguito è illustrato un esempio di una regola a cui è stata aggiunta un'operazione da eseguire in caso di errore. La regola seguente include un'operazione di scrittura dei dati dei messaggi in una tabella Dynamo DB e un'operazione da eseguire in caso di errore di scrittura dei dati in un bucket Amazon S3:

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

È possibile utilizzare qualsiasi funzione o modello di sostituzione nell'istruzione SQL di un'azione di errore, incluse le funzioni esterne: aws_lambda(),,, get_dynamodb()get_thing_shadow(), get_secret()e. machinelearning_predict()decode() Se un'azione di errore richiede la chiamata di una funzione esterna, l'invocazione dell'azione di errore può comportare una fattura aggiuntiva per la funzione esterna.

Le seguenti funzioni esterne vengono fatturate in modo equivalente a quella di un'azione di regola: aws_lambdaget_dynamodb(), e. get_thing_shadow() La decode()funzione viene inoltre fatturata solo quando decodifichi un messaggio Protobuf in JSON. Per maggiori dettagli, consulta la pagina dei prezzi.AWS IoT Core

Per ulteriori informazioni sulle regole e su come specificare un'azione di errore, vedi Creazione di una AWS IoT regola.

Per ulteriori informazioni sull'utilizzo CloudWatch per monitorare l'esito positivo o negativo delle regole, vedereAWS IoT metriche e dimensioni.