Sé que cuando falla una función Lambda (por ejemplo, cuando hay un tiempo de espera), intenta ejecutar la función 3 veces más nuevamente. ¿Hay alguna forma de evitar este comportamiento? He estado leyendo la documentación, pero no encontré nada al respecto.
¡Gracias!
Vuelve a intentarlo cuando se trata de una falla no controlada (un error que no detectó) o si lo manejó pero aún le dijo a Lambda que lo volviera a intentar (por ejemplo, en Node, cuando llama a callback() con un primer argumento no nulo).
Para evitar que vuelva a intentarlo, debe asegurarse de que se maneje cualquier error y decirle a Lambda que su invocación finalizó correctamente devolviendo un error (o en Node, llamando a callback(null, <any>) .
Para hacer esto, puede encerrar todo el cuerpo de su función de controlador con un try-catch.
module.exports.handler(event, context, callback) { try { // Do you what you want to do. return callback(null, 'Success') } catch (err) { // You probably still want to log it. console.error(err) // Return happy despite all the hardships you went through. return callback(null, 'Still success') } }En cuanto a las fallas por tiempos de espera, hay cosas que puede hacer.
Si se agota el tiempo fuera de su controlador, generalmente hay algún problema con su código (por ejemplo, configuración incorrecta de la base de datos, etc.) que debe revisar.
Si se agota el tiempo dentro de su controlador durante una invocación, hay algo que puede hacer al respecto.
context.getRemainingTimeInMillis() para saber si Lambda está a punto de agotarse, para que pueda manejarlo antes.EDITADO : ahora es posible cambiar la configuración de lambda para deshabilitar los reintentos (ver anuncio )
Respuesta original :
No hay forma de desactivar el comportamiento de reintento de las funciones de Lambda. Sugiero dos opciones para lidiar con eso:
Si llama a la función de forma asíncrona, en la Console , en Function configuration , puede modificar los Retry attempts :