

# Invocación de una función de Lambda de forma asíncrona
<a name="invocation-async"></a>

Varios Servicios de AWS, como de Amazon Simple Storage Service (Amazon S3) y Amazon Simple Notification Service (Amazon SNS), invocan funciones de forma asíncrona para procesar eventos. También puede invocar una función de Lambda de forma asíncrona mediante la AWS Command Line Interface (AWS CLI) o los AWS SDK. Cuando se invoca una función de forma asíncrona, no se espera una respuesta del código de función. Se entrega el evento a Lambda, y Lambda se ocupa del resto. Puede configurar la forma en que Lambda gestiona los errores y enviar registros de invocaciones a un recurso posterior, como Amazon Simple Queue Service (Amazon SQS) o Amazon EventBridge (EventBridge), para encadenar los componentes de la aplicación.

El siguiente diagrama muestra los clientes que invocan una función de Lambda de forma asíncrona. Lambda pone en cola los eventos antes de enviarlos a la función.

![\[\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/features-async.png)


Para la invocación asíncrona, Lambda coloca el evento en una cola y devuelve una respuesta de “proceso realizado con éxito” sin información adicional. Un proceso independiente lee eventos de la cola y los envía a la función.

 Para invocar una función de Lambda de forma asíncrona mediante la AWS Command Line Interface (AWS CLI) o uno de los SDK de AWS, establezca el parámetro [InvocationType](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-InvocationType) en `Event`. En el siguiente ejemplo se muestra un comando de la AWS CLI para invocar una función.

```
aws lambda invoke \
  --function-name my-function  \
  --invocation-type Event \
  --cli-binary-format raw-in-base64-out \
  --payload '{ "key": "value" }' response.json
```

Debería ver los siguientes datos de salida:

```
{
    "StatusCode": 202
}
```

La opción **cli-binary-format** es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute `aws configure set cli-binary-format raw-in-base64-out`. Para obtener más información, consulte [Opciones de la línea de comandos globales compatibles con AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) en la *Guía del usuario de la AWS Command Line Interface versión 2*.

El archivo de salida (`response.json`) no contiene ninguna información, pero se crea al ejecutar este comando. Si Lambda no puede añadir el caso a la cola, el mensaje de error aparece en la salida del comando.

# Cómo Lambda administra los errores y los reintentos mediante la invocación asíncrona
<a name="invocation-async-error-handling"></a>

Lambda administra la cola de eventos asincrónica de la función y vuelve a intentarlo en caso de errores. Si la función devuelve un error, de forma predeterminada, Lambda intenta ejecutarla dos veces más, con una espera de un minuto entre los dos primeros intentos y dos minutos entre el segundo y el tercero. Los errores de la función incluyen errores devueltos por el código de la función y los errores devueltos por el tiempo de ejecución de la función, como, por ejemplo, los tiempos de espera.

Si la función no tiene disponible suficiente simultaneidad para procesar todos los eventos, se limitan las solicitudes adicionales. Para la limitación controlada de errores (429) y errores del sistema (serie 500), de forma predeterminada, Lambda devuelve el evento a la cola e intenta ejecutar la función de nuevo durante un máximo de 6 horas. El intervalo de reintento aumenta exponencialmente desde 1 segundo después del primer intento hasta un máximo de 5 minutos. Si la cola contiene muchas entradas, Lambda aumenta el intervalo de reintento y reduce la velocidad a la que lee eventos de la cola.

Aunque la función no devuelva un error, es posible que reciba el mismo evento de Lambda varias veces, ya que la propia cola ofrece consistencia final. Si la función no es capaz de gestionar los eventos entrantes, podrían también eliminarse de la cola sin que se envíen a la función. Asegúrese de que el código de la función gestione sin problemas eventos duplicados y de que tenga simultaneidad suficiente disponible para gestionar todas las invocaciones.

Cuando la cola es muy larga, es posible que los nuevos eventos se agoten antes de que Lambda pueda enviarlos a la función. Cuando un evento caduca o todos los intentos de procesamiento fallan, Lambda lo descarga. Puede [configurar la administración de errores](invocation-async-configuring.md) de una función para reducir el número de reintentos que realiza Lambda o para descartar eventos no procesados más rápidamente. Para conservar los eventos descartados, [configure una cola de mensajes fallidos](invocation-async-retain-records.md#invocation-dlq) para la función. Para conservar registros de invocaciones fallidas (como tiempos de espera o errores de tiempo de ejecución), [cree un destino en caso de error](invocation-async-retain-records.md#invocation-async-destinations). 

# Configuración de la gestión de errores para invocaciones asíncronas de Lambda
<a name="invocation-async-configuring"></a>

Utilice los siguientes parámetros para configurar la forma en que Lambda gestiona los errores y los reintentos de las invocaciones de funciones asíncronas:
+ [MaximumEventAgeInSeconds](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumEventAgeInSeconds): cantidad de tiempo máxima, en segundos, que Lambda mantiene un evento en la cola de eventos asíncrona antes de descartarlo.
+ [MaximumRetryAttempts](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumRetryAttempts): número máximo de veces que Lambda reintenta los eventos cuando la función devuelve un error.

Utilice la consola de Lambda o la AWS CLI para configurar los parámetros de gestión de errores en una función, una versión o un alias.

------
#### [ Console ]

**Para configurar la gestión de errores**

1. Abra la [página de Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija una función.

1. Elija **Configuración** y, a continuación, elija **Invocación asíncrona**.

1. En **Asynchronous invocation (Invocación asincrónica)**, elija **Edit (Editar)**.

1. Configure los siguientes ajustes.
   + **Antigüedad máxima del evento**: el período máximo de tiempo durante el que Lambda retiene un evento en la cola de evento asincrónico, hasta 6 horas.
   + **Número de reintentos**: número de reintentos que Lambda realiza cuando la función devuelve un error, entre 0 y 2.

1. Seleccione **Guardar**.

------
#### [ AWS CLI ]

Para configurar la invocación asíncrona con la AWS CLI, utilice el comando [put-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-function-event-invoke-config.html). En el ejemplo siguiente se configura una función con una antigüedad máxima de evento de 1 hora y sin reintentos.

```
aws lambda put-function-event-invoke-config \ 
  --function-name error \
  --maximum-event-age-in-seconds 3600 \
  --maximum-retry-attempts 0
```

El comando `put-function-event-invoke-config` sobrescribe cualquier configuración existente en la función, versión o alias. Para configurar una opción sin restablecer las otras, utilice [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). En el siguiente ejemplo, se configura Lambda para enviar un registro a una cola de SQS estándar llamada `destination` cuando no se puede procesar un evento.

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

Debería ver los siguientes datos de salida:

```
{
    "LastModified": 1573686021.479,
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
    "MaximumRetryAttempts": 0,
    "MaximumEventAgeInSeconds": 3600,
    "DestinationConfig": {
        "OnSuccess": {},
        "OnFailure": {}
    }
}
```

Cuando un evento de invocación supera la antigüedad máxima o no supera ningún reintento, Lambda lo descarta. Para conservar una copia de los eventos descartados, configure un [destino](invocation-async-retain-records.md#invocation-async-destinations) de eventos fallidos.

# Captura de los registros de invocaciones asíncronas de Lambda
<a name="invocation-async-retain-records"></a>

Lambda puede enviar registros de invocaciones asíncronas a uno de los siguientes Servicios de AWS.
+ **Amazon SQS**: una cola de SQS estándar.
+ **Amazon SNS**: un tema de SNS estándar.
+ **Amazon S3**: un bucket de Amazon S3 (solo en caso de error).
+ **AWS Lambda**: una función de Lambda.
+ **Amazon EventBridge**: un bus de eventos de EventBridge.

El registro de invocación contiene detalles sobre la solicitud y la respuesta en formato JSON. Puede configurar destinos independientes en eventos que se procesan con éxito, y eventos que fallan todos los intentos de procesamiento. También puede configurar una cola de Amazon SQS estándar o un tema de Amazon SNS estándar como una cola de mensajes fallidos para eventos descartados. En las colas de mensajes fallidos, Lambda solo envía el contenido del evento, sin detalles sobre la respuesta.

Si Lambda no puede enviar un registro a un destino que haya configurado, envía una métrica `DestinationDeliveryFailures` a Amazon CloudWatch. Esto puede ocurrir si la configuración incluye un tipo de destino no admitido, como una cola FIFO de Amazon SQS o un tema FIFO de Amazon SNS. También pueden producirse errores de entrega debido a errores de permisos y límites de tamaño. Para obtener más información sobre las métricas de invocación de Lambda, consulte [Métricas de invocación](monitoring-metrics-types.md#invocation-metrics).

**nota**  
Para evitar que una función se active, puede establecer la simultaneidad reservada de la función en cero. Cuando establece la simultaneidad reservada en cero para una función invocada de forma asíncrona, Lambda comienza a enviar nuevos eventos a la [cola de mensajes fallidos](#invocation-dlq) configurada o al [destino para eventos](#invocation-async-destinations) en caso de error, sin reintentos. Para procesar eventos que se enviaron mientras la simultaneidad reservada estaba establecida en cero, debe consumir los eventos de la cola de mensajes fallidos o el destino para eventos en caso de error.

## Cómo agregar un destino
<a name="invocation-async-destinations"></a>

Para retener registros de invocaciones asincrónicas, agregue un destino a su función. Puede elegir enviar las invocaciones correctas o fallidas a un destino. Cada función puede tener varios destinos, por lo que puede configurar destinos independientes para los eventos correctos y los fallidos. Cada registro enviado al destino es un documento JSON con detalles sobre la invocación. Al igual que con los ajustes de gestión de errores, puede configurar los destinos en una función, versión de la función o alias.

**sugerencia**  
También puede retener registros de las invocaciones fallidas para los siguientes tipos de asignación de orígenes de eventos: [Amazon Kinesis](kinesis-on-failure-destination.md#kinesis-on-failure-destination-console), [Amazon DynamoDB](services-dynamodb-errors.md) y [Apache Kafka (Amazon MSK y Apache Kafka autoadministrado)](kafka-on-failure.md#kafka-onfailure-destination).<a name="destinations-permissions"></a>

La siguiente table enumera los destinos admitidos para los registros de invocación asincrónica. Para que Lambda envíe correctamente los registros al destino elegido, asegúrese de que el [rol de ejecución](lambda-intro-execution-role.md) de la función también contenga los permisos pertinentes. En la tabla también se describe cómo cada tipo de destino recibe el registro de invocación de JSON.


| Tipo de destino | Permiso necesario | Formato JSON específico del destino | 
| --- | --- | --- | 
|  Cola de Amazon SQS  |  [sqs:SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)  |  Lambda pasa el registro de invocación como `Message` al destino.  | 
|  Tema de Amazon SNS  |  [sns:Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)  |  Lambda pasa el registro de invocación como `Message` al destino.  | 
|  Bucket de Amazon S3 (solo en caso de error)  |  [s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) [s3:ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/invocation-async-retain-records.html)  | 
|  Función de Lambda  |  [lambda:InvokeFunction](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)  |  Lambda pasa el registro de invocación como carga útil a la función.  | 
|  EventBridge  |  [events:PutEvents](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/invocation-async-retain-records.html)  | 

**nota**  
Para los destinos de Amazon S3, si ha habilitado el cifrado en el bucket mediante una clave de KMS, su función también necesitará el permiso [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).

**importante**  
Tenga en cuenta que Amazon SNS tiene un límite máximo de tamaño de mensaje de 256 KB cuando lo utilice como destino. Si la carga útil de invocación asíncrona se acerca a 1 MB, el registro de invocación (que incluye la carga útil original más metadatos adicionales) puede superar el límite de Amazon SNS y provocar errores en la entrega. Piense en la posibilidad de utilizar destinos de Amazon SQS o Amazon S3 para cargas útiles más grandes.

En los siguientes pasos se describe cómo configurar un destino para una función utilizando la consola de Lambda y la AWS CLI.

------
#### [ Console ]

1. Abra la [página de Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija una función.

1. En **Descripción general de la función**, elija **Agregar destino**.

1. En **Source (Origen)**, elija **Asynchronous invocation (Invocación asincrónica)**.

1. En **Condition (Condición)** elija una de las siguientes opciones:
   + **En caso de error**: enviar un registro cuando el evento no supera los intentos de procesamiento o supera la antigüedad máxima.
   + **Si es correcto**: enviar un registro cuando la función procesa correctamente una invocación asincrónica.

1. En **Destination type** (Tipo de destino), elija el tipo de recurso que recibe el registro de invocación.

1. En **Destination** (Destino), elija un recurso.

1. Seleccione **Save**.

------
#### [ AWS CLI ]

Para configurar un destino mediante la AWS CLI, ejecute el comando [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). En el siguiente ejemplo, se configura Lambda para enviar un registro a una cola de SQS estándar llamada `destination` cuando no se puede procesar un evento.

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

### Prácticas recomendadas de seguridad para destinos de Amazon S3
<a name="s3-destination-security"></a>

Eliminar un bucket de S3 que está configurado como destino sin eliminar el destino de la configuración de la función puede suponer un riesgo de seguridad. Si otro usuario conoce el nombre del bucket de destino, puede volver a crear el bucket en su Cuenta de AWS. Los registros de las invocaciones fallidas se enviarán a su bucket, lo que podría exponer los datos de su función.

**aviso**  
Para asegurarse de que los registros de invocación de su función no se puedan enviar a un bucket de S3 de otra Cuenta de AWS, agregue una condición al rol de ejecución de la función que limite los permisos `s3:PutObject` a los buckets de su cuenta. 

En el siguiente ejemplo, se muestra una política de IAM que limita los permisos `s3:PutObject` de la función a los buckets de la cuenta. Esta política también otorga a Lambda el permiso `s3:ListBucket` que necesita para usar un bucket de S3 como destino.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BucketResourceAccountWrite",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::*/*",
                "arn:aws:s3:::*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

Para agregar una política de permisos al rol de ejecución de su función mediante la Consola de administración de AWS o la AWS CLI, consulte las instrucciones de los siguientes procedimientos:

------
#### [ Console ]

**Cómo agregar una política de permisos al rol de ejecución de la función (consola)**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Seleccione la función de Lambda cuyo rol de ejecución desee modificar.

1. En la pestaña **Configuración**, elija **Permisos**.

1. En la pestaña **Rol de ejecución**, seleccione el **nombre del rol** de la función para abrir la página de la consola de IAM del rol.

1. Agregue una política de permisos al rol de la siguiente manera:

   1. En el panel **Política de permisos**, elija **Agregar permisos** y seleccione **Crear política insertada**.

   1. En el **editor de políticas**, seleccione **JSON**.

   1. Pegue la política que desee agregar en el editor (sustituyendo el JSON existente) y, a continuación, seleccione **Siguiente**.

   1. En **Detalles de política**, ingrese un **Nombre de política**.

   1. Elija **Crear política**.

------
#### [ AWS CLI ]

**Cómo agregar una política de permisos al rol de ejecución de la función (CLI)**

1. Cree un documento de política de JSON con los permisos necesarios y guárdelo en un directorio local.

1. Utilice el comando de la CLI de IAM `put-role-policy` para agregar permisos al rol de ejecución de la función. Ejecute el siguiente comando desde el directorio en el que guardó el documento de política JSON y sustituya el nombre del rol, el nombre de la política y el documento de política por sus propios valores.

   ```
   aws iam put-role-policy \
   --role-name my_lambda_role \
   --policy-name LambdaS3DestinationPolicy \
   --policy-document file://my_policy.json
   ```

------

### Registro de invocación de ejemplo
<a name="destination-example-record"></a>

Cuando una invocación coincide con la condición, Lambda envía [un documento JSON](#destinations-permissions) con detalles sobre la invocación al destino. El ejemplo siguiente muestra un registro de invocación para un evento que ha fallado tres intentos de procesamiento debido a un error de función.

**Example**  

```
{
    "version": "1.0",
    "timestamp": "2019-11-14T18:16:05.568Z",
    "requestContext": {
        "requestId": "e4b46cbf-b738-xmpl-8880-a18cdf61200e",
        "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
        "condition": "RetriesExhausted",
        "approximateInvokeCount": 3
    },
    "requestPayload": {
        "ORDER_IDS": [
            "9e07af03-ce31-4ff3-xmpl-36dce652cb4f",
            "637de236-e7b2-464e-xmpl-baf57f86bb53",
            "a81ddca6-2c35-45c7-xmpl-c3a03a31ed15"
        ]
    },
    "responseContext": {
        "statusCode": 200,
        "executedVersion": "$LATEST",
        "functionError": "Unhandled"
    },
    "responsePayload": {
        "errorMessage": "RequestId: e4b46cbf-b738-xmpl-8880-a18cdf61200e Process exited before completing request"
    }
}
```

El registro de invocación contiene detalles sobre el evento, la respuesta y el motivo por el que se ha enviado el registro.

### Seguimiento de solicitudes a destinos
<a name="destinations-tracing"></a>

Puede utilizar AWS X-Ray para ver una vista conectada de cada solicitud a medida que se pone en cola, la procesa una función de Lambda y se pasa al servicio de destino. Al activar el seguimiento de X-Ray para una función o un servicio que invoca una función, Lambda agrega un encabezado de X-Ray a la solicitud y lo pasa al servicio de destino. El seguimiento de los servicios anteriores se vincula automáticamente al seguimiento de las funciones de Lambda posteriores, lo que crea una vista integral de toda la aplicación. Para obtener más información sobre el seguimiento, consulte [Visualice las invocaciones de la función de Lambda mediante AWS X-Ray](services-xray.md).

## Cómo agregar una cola de mensajes fallidos
<a name="invocation-dlq"></a>

Como alternativa a un [destino en caso de fallo](#invocation-async-destinations), puede configurar su función con una cola de mensajes fallidos para guardar eventos descartados para su posterior procesamiento. Una cola de mensajes fallidos actúa igual que un destino en caso de error, ya que se utiliza cuando un evento falla todos los intentos de procesamiento o caduca sin ser procesado. Sin embargo, solo puede agregar o eliminar una cola de mensajes fallidos a nivel de función. Las versiones de la función usan la misma configuración de cola de mensajes fallidos que la versión no publicada (\$1LATEST). Los destinos en caso de error también admiten destinos adicionales e incluyen detalles sobre la respuesta de la función en el registro de invocación.

Para volver a procesar los eventos en una cola de mensajes fallidos, puede configurarla como un [origen de eventos](invocation-eventsourcemapping.md) para su función de Lambda. También puede recuperar manualmente los eventos.

Puede elegir una cola de Amazon SQS estándar o un tema estándar de Amazon SNS para la cola de mensajes fallidos. No se admiten las colas FIFO ni los temas FIFO de Amazon SNS.
+ [Cola de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html): una cola que contiene eventos fallidos hasta que se recuperan. Elija una cola estándar de Amazon SQS si espera que una sola entidad, como una función de Lambda o una alarma de CloudWatch, procese el evento fallido. Para obtener más información, consulte [Uso de Lambda con Amazon SQS](with-sqs.md).
+ [Tema de Amazon SNS](https://docs.aws.amazon.com/sns/latest/gsg/CreateTopic.html): un tema transmite eventos fallidos a uno o más destinos. Elija un tema estándar de Amazon SNS si espera que varias entidades actúen en un evento fallido. Por ejemplo, puede configurar un tema para enviar eventos a una dirección de correo electrónico, una función de Lambda o un punto de enlace HTTP. Para obtener más información, consulte [Invocar las funciones de Lambda usando las notificaciones de Amazon SNS](with-sns.md).

Para enviar eventos a una cola o tema, la función necesita permisos adicionales. Agregue una política con los [permisos necesarios](#destinations-permissions) al [rol de ejecución](lambda-intro-execution-role.md) de la función. Si la cola o el tema de destino están cifrados con una clave de AWS KMS administrada por el cliente, asegúrese de que tanto el rol de ejecución de su función como la [política basada en recursos](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) de la clave cuentan con los permisos pertinentes.

Después de crear el destino y actualizar el rol de ejecución de la función, añada la cola de mensajes fallidos a la función. Puede configurar varias funciones para enviar eventos al mismo destino.

------
#### [ Console ]

1. Abra la [página de Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija una función.

1. Elija **Configuración** y, a continuación, elija **Invocación asíncrona**.

1. En **Asynchronous invocation (Invocación asincrónica)**, elija **Edit (Editar)**.

1. Establezca **Servicio de cola de mensajes fallidos** en **Amazon SQS** o **Amazon SNS**.

1. Elija la cola o el tema de destino.

1. Seleccione **Save**.

------
#### [ AWS CLI ]

Para configurar una cola de mensajes fallidos con la AWS CLI, utilice el comando [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html).

```
aws lambda update-function-configuration \
  --function-name my-function \
  --dead-letter-config TargetArn=arn:aws:sns:us-east-1:123456789012:my-topic
```

------

Lambda envía el evento a la cola de mensajes fallidos tal y como está, con información adicional en atributos. Puede utilizar esta información para identificar el error que la función devuelve o correlacionar el evento con los registros o un rastro de AWS X-Ray.

**Atributos de mensajes de cola de mensajes fallidos**
+ **RequestID** (cadena): el ID de la solicitud de invocación. Los ID de las solicitudes aparecen en los registros de la función. También puede usar el X-Ray SDK para registrar el ID de solicitud en un atributo del rastro. A continuación, puede buscar rastros por ID de solicitud en la consola de X-Ray.
+ **ErrorCode** (número): el código de estado de HTTP.
+ **ErrorMessage** (cadena): el primer 1 KB del mensaje de error.

Si Lambda no puede enviar un mensaje a la cola de mensajes fallidos, elimina el evento y emite la métrica [DeadLetterErrors](monitoring-metrics-types.md). Esto puede ocurrir debido a la falta de permisos o si el tamaño total del mensaje supera el límite de la cola o tema de destino. Por ejemplo, supongamos que una notificación de Amazon SNS con un cuerpo cercano a 1 MB activa una función que genera un error. En ese caso, los datos del evento que Amazon SNS agrega, junto con los atributos agregados por Lambda, pueden hacer que el mensaje supere el tamaño máximo permitido en la cola de mensajes fallidos.

Si está utilizando Amazon SQS como fuente de eventos, configure una cola de mensajes fallidos en la propia cola de Amazon SQS y no en la función de Lambda. Para obtener más información, consulte [Uso de Lambda con Amazon SQS](with-sqs.md).