Control de errores (acción de error) - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Control de errores (acción de error)

Cuando AWS IoT recibe un mensaje de un dispositivo, el motor de reglas realiza comprobaciones para ver si el mensaje coincide con una regla. En caso afirmativo, se evalúa la instrucción de consulta de la regla y se activan las acciones de la regla, pasando el resultado de la instrucción de consulta.

Si se produce un problema al activar una acción, el motor de reglas activa una acción de error si se especificó una para la regla. Esto podría ocurrir cuando:

  • Una regla no dispone de permiso para acceder al bucket de Amazon S3.

  • Un error de usuario provoca que se supere el rendimiento aprovisionado de DynamoDB.

Formato de mensaje de acción de error

Se genera un único mensaje por regla y mensaje. Por ejemplo, si se produce un error en dos acciones de regla en la misma regla, la acción de error recibe un mensaje con los dos errores.

El mensaje de acción de error es similar al siguiente ejemplo.

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

El nombre de la regla que activó la acción de error.

tema

El tema en el que se recibió el mensaje original.

cloudwatchTraceId

Una identidad única relacionada con los registros de errores de CloudWatch.

clientId

El ID de cliente del publicador de mensajes.

base64OriginalPayload

La carga del mensaje original codificada en Base64.

failures
failedAction

El nombre de la acción que no se pudo completar (por ejemplo "S3Action").

failedResource

El nombre del recurso (por ejemplo el nombre de un bucket de S3).

errorMessage

La descripción y explicación del error.

Ejemplo de acción de error

A continuación se muestra un ejemplo de una regla con una acción de error añadida. La siguiente regla tiene una acción que escribe datos de mensajes en una tabla de DynamoDB y una acción de error que escribe datos en un bucket de 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()}" } } }

Puede utilizar cualquier función o sustitución en una instrucción SQL de la acción de error, excepto en funciones externas (por ejemplo, get_thing_shadow, aws_lambda y machinelearning_predict).

Para obtener más información acerca de reglas y cómo especificar una acción de error, consulte Creación de una regla de AWS IoT.

Para obtener más información sobre el uso de CloudWatch para supervisar el éxito o el fracaso de las reglas, consulteMétricas y dimensiones de AWS IoT.