- Más nuevo
- Más votos
- Más comentarios
El comportamiento que estás experimentando con EventBridge Scheduler ejecutando tu función Lambda múltiples veces no es el esperado, pero hay algunas explicaciones posibles para este fenómeno.
En casos raros, EventBridge puede ejecutar la misma regla más de una vez para un único evento o tiempo programado. Esto es un comportamiento documentado de EventBridge, donde el mismo objetivo puede ser invocado más de una vez para una regla activada determinada, incluso cuando la ventana de tiempo flexible está desactivada (modo "OFF").
Para resolver este problema, te recomiendo las siguientes acciones:
-
Implementa idempotencia en tu función Lambda para garantizar que, aunque se ejecute varias veces, no cause efectos secundarios no deseados.
-
Verifica si hay errores en la ejecución de tu Lambda que puedan estar causando reintentos automáticos.
-
Considera usar la característica de ventana de tiempo flexible con un valor pequeño (por ejemplo, 1 minuto) para mejorar la confiabilidad de la programación.
-
Revisa los registros de CloudWatch para ambas ejecuciones para ver si tienen datos de eventos idénticos o si hay mensajes de error.
-
Habilita los eventos de datos de Lambda en CloudTrail para verificar qué servicio está ejecutando Lambda en los momentos inesperados.
Si el problema persiste después de implementar estas soluciones, podría ser necesario contactar directamente con el soporte de AWS para una investigación más profunda, ya que este comportamiento no es típico para EventBridge Scheduler cuando está correctamente configurado.
Sources
Lambda Function Triggering Twice | AWS re:Post
AWS EventBridge Scheduler Rules Fire Immediately After Terraform Deployment Outside Scheduled Window | AWS re:Post
Lambda attached to API Gateway is called multiple times even when scheduled once. | AWS re:Post
Hola Fran,
Revisando los CloudWatch logs de la ejecución de Lambda que compartes en la imagen, puedo ver que la petición que se esta ejecutando es siempre la misma (mismo valor de RequestId
). Además, parece que la función no acaba su ejecución en un tiempo inferior al timeout
configurado. Fíjate que la duración es siempre 15000 ms y que seguramente este valor coincide con el configurado para tu función.
Con estos indicios, todo parece indicar que la función no esta acabando su ejecución de forma exitosa y, por tanto, el servicio de EventBridge Scheduler la vuelve a invocar como parte de su política de reintentos. Puedes añadir más logging a la función para ver su progreso y así detectar por qué no acaba dentro del tiempo esperado (o quizá, es legítimo que tarde ese tiempo y lo que hay que hacer es incrementar el timeout
).
Una vez la función pueda acabar con éxito, EventBridge Scheduler no volverá a intentar su ejecución.
Un saludo.
Contenido relevante
- preguntada hace 5 meses
- preguntada hace 6 meses
- preguntada hace 5 meses
- OFICIAL DE AWSActualizada hace 3 meses
- OFICIAL DE AWSActualizada hace 4 meses