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 comprueba 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 AWS IoT registro. Para obtener más información, consulte Configure el AWS IoT registro.

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.

cloudwatch TraceId

Inicia sesión con una identidad única que hace referencia al error. CloudWatch

clientId

El ID de cliente del publicador de mensajes.

base64 OriginalPayload

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 sentencia 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 para la función externa.

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

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

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