

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)
<a name="rule-error-handling"></a>

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](iot-rule-actions.md). 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](configure-logging.md). 

## Formato de mensaje de acción de error
<a name="rule-error-message-format"></a>

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  
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 name="rule-error-example"></a>

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](iot-sql-functions.md) o [plantilla de sustitución](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html) en la sentencia SQL de una acción de error, incluidas las funciones externas: [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-registry_data](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-registry_data), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-thing-shadow](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-thing-shadow), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-secret](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-secret), y [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64). 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.

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](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-rule.html).

Para obtener más información sobre el uso CloudWatch para supervisar el éxito o el fracaso de las reglas, consulte[AWS IoT métricas y dimensiones](metrics_dimensions.md).