Comprender el comportamiento de reintento en Lambda
Al invocar una función de forma directa, se determina la estrategia para tratar los errores relacionados al código de la función. Lambda no reintenta de forma automática este tipo de errores en su nombre. Para reintentar, puede volver a invocar la función de forma manual y enviar el evento fallido a una cola para depurar o ignorar el error. El código de la función puede haberse ejecutado en su totalidad, en parte o no haberse ejecutado. Si vuelve a intentarlo, asegúrese de que el código de la función pueda gestionar el mismo evento varias veces sin generar transacciones duplicados u otros efectos colaterales no deseados.
Al invocar una función indirectamente, que debe tener en cuenta el comportamiento de reintento del invocador y cualquier servicio que la solicitud encuentra en el proceso. Esto incluye los siguientes escenarios.
-
Invocación asíncrona: Lambda reintenta los errores de funciones dos veces. Si la función no tiene capacidad suficiente para gestionar todas las solicitudes entrantes, los eventos podrían esperar en la cola durante horas para su envío a la función. Puede configurar una cola de mensajes fallidos en la función para capturar eventos que no se hubieran procesado correctamente. Para obtener más información, consulte Invocación de una función de Lambda de forma asíncrona.
-
Mapeos de fuente de eventos: los mapeos de fuentes de eventos que leen desde flujos reintentan el lote de elementos completo. Los errores repetidos bloquean el procesamiento del fragmento afectado hasta que se resuelve el error o los elementos caduquen. Para detectar fragmentos estancados, puede monitorizar la métrica antigüedad del iterador.
Para mapeos de orígenes de eventos que leen de una cola, debe determinar el período de tiempo entre los reintentos y el destino de los eventos fallidos configurando el tiempo de espera de visibilidad y la política de redireccionamiento en la cola de origen. Para obtener más información, consulte Cómo procesa Lambda registros de orígenes de eventos basados en secuencias y colas y los temas específicos del servicio en Invocar Lambda con eventos de otros servicios de AWS.
-
Servicios de AWS: los servicios de AWS pueden invocar la función de forma sincrónica o asincrónica. Para la invocación síncrona, el servicio decide si volver a intentarlo. Por ejemplo, las operaciones por lotes de Amazon S3 reintentan la operación si la función Lambda devuelve un código de respuesta
TemporaryFailure
. Los servicios que solicitan proxy de un usuario o cliente ascendente pueden tener una estrategia de reintento o pueden transmitir la respuesta de error de vuelta al solicitante. Por ejemplo, API Gateway siempre retransmite la respuesta de error de vuelta al solicitante.Para una invocación asíncrona, la lógica de reintento es la misma, independientemente del origen de invocación. De forma predeterminada, Lambda vuelve a intentar una invocación asíncrona fallida hasta dos veces. Para obtener más información, consulte Cómo Lambda administra los errores y los reintentos mediante la invocación asíncrona.
-
Otras cuentas y clientes: al conceder acceso a otras cuentas, puede utilizar políticas basadas en recursos para restringir los servicios o recursos que pueden configurar para invocar la función. Para proteger su función de sobrecargas, considere la posibilidad de colocar una capa de API delante de su función con Amazon API Gateway.
Para ayudarle a abordar errores en aplicaciones de Lambda, Lambda se integra con servicios como Amazon CloudWatch y AWS X-Ray. Puede utilizar una combinación de registros, métricas, alarmas y seguimiento de para detectar e identificar rápidamente problemas en el código de la función, la API u otros recursos que admiten la aplicación. Para obtener más información, consulte Supervisión y solución de problemas de funciones de Lambda.