Hola a tod@s
En ocasiones es posible que necesitemos ejecutar el servicio lambda de aws en una hora en concreto y en este post veremos lo sencillo que es usar EventBridge, ya que actúa como cron.
Cron es un sistema en Unix y sistemas operativos similares utilizado para programar tareas (cronjobs) para ejecutarse en momentos específicos o con cierta regularidad, ideal para automatizar scripts y comandos..
Para agregar un nuevo horario, será tan fácil como Agregar desencadenador elegir la opción EventBridge. Una vez dentro marcaremos Crear nueva regla, añadiremos nombre y descripción y en la sección de Rule type elegimos Schedule expression y añadimos el cron de horario, en mi ejemplo: cron(30 14 * * ? *) se ejecutará todos los días a las 14:30.
Sintaxis de Cron:
La sintaxis de las expresiones cron en AWS sigue el formato: cron(Minutos Horas Día-del-mes Mes Día-de-la-semana Año)
Tenemos la flexibilidad para añadir varios días o días de la semana, podemos especificar 1-15 en el campo del día del mes para que la función se ejecute solo los primeros 15 días de cada mes. De manera similar, podemos usar rangos como MON-FRI o 2-6 en el campo del día de la semana para ejecutar la función solo los días laborales.
La expresión cron(30 14 * * ? *) se traduce a:
30
en el campo de minutos: la función se ejecutará a los 30 minutos de la hora.14
en el campo de horas: la función se ejecutará a las 14 horas (2 PM) UTC.*
en el campo del día del mes: cada día del mes.*
en el campo del mes: cada mes.?
en el campo del día de la semana: no especifica un día de la semana (se usa?
cuando no se quiere especificar un valor en el día del mes o el día de la semana).*
en el campo del año: cada año.
Es importante tener en cuenta que el horario será en UTC. En mi caso, he restado una hora ya que quería que se ejecutase a las 15:30.
Adjunto captura del ejemplo a la hora de crear la configuración:
Al agregar el evento nos aparecerá en Información general de la función y si pulsamos en ella en los detalles veremos su configuración:
Podremos acceder al servicio de si pulsamos en el link del nombre de la app, en este caso app: EventBridge (CloudWatch Events): app
Aquí nos da la opción de elegir en el desplegable la «Zona horaria local» útil para verificar el horario introducido. Aunque se opera en UTC, esta opción ayuda a visualizar y verificar los horarios de tus eventos en tu zona horaria local, lo que es especialmente útil para garantizar que tus lambdas se ejecuten en el horario correcto en diferentes regiones geográficas:
Como acabamos de ver, este servicio nos ofrece una gran flexibilidad para programar eventos.
Permisos:
Finalmente, es crucial asegurarse de que los permisos y políticas de seguridad están correctamente establecidos cuando configuras una función Lambda para ser invocada por EventBridge. Esto incluye definir el rol IAM con los permisos adecuados para que pueda invocar la función.
Dejo un código de ejemplo en caso de necesitarlo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:region:account-id:function:function-name"
}
]
}
Espero que esta guía os sea de ayuda para configurar y programar vuestras funciones.
Salu2!