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

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. Si es así, se evalúa la sentencia de consulta de la regla y se activan las acciones de la regla, pasando el resultado de la sentencia de consulta.

Si se produce un problema al activar una acción, el motor de reglas activa una acción de error, si se ha especificado 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.

nota

El tratamiento de errores que se trata en este tema se refiere a las acciones de las reglas. Para depurar problemas de SQL, incluidas las funciones externas, puede configurar el registro AWS IoT. Para obtener más información, consulte Configuración de registros de AWS IoT.

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 se parece 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 en 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 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 plantilla de sustitución en la instrucción de SQL de una acción de error, incluidas las funciones externas: aws_lambda(), get_dynamodb(), get_thing_shadow(), get_secret(), machinelearning_predict() y decode(). Si una acción de error requiere llamar a una función externa, la invocación de la acción de error puede generar una factura adicional por la función externa.

Las siguientes funciones externas se facturan de forma similar a la de una acción de regla: aws_lambda, get_dynamodb() y get_thing_shadow(). Además, solo se le facturará por la función decode() cuando descodifique un mensaje de Protobuf en JSON. Para obtener más detalles, consulte la página de precios de AWS IoT Core.

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 monitorizar el éxito o el fracaso de las reglas, consulte AWS IoTMétricas y dimensiones de .