aws Lambda + EventBridge – Programar eventos

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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Warning: Undefined array key "rerror" in /volume1/web/WebTomoNota/wp-content/plugins/wp-recaptcha-bp/recaptcha.php on line 300 Call Stack: 0.0001 361048 1. {main}() /volume1/web/WebTomoNota/index.php:0 0.0001 361360 2. require('/volume1/web/WebTomoNota/wp-blog-header.php') /volume1/web/WebTomoNota/index.php:17 0.5516 14466968 3. require_once('/volume1/web/WebTomoNota/wp-includes/template-loader.php') /volume1/web/WebTomoNota/wp-blog-header.php:19 0.5593 14635360 4. include('/volume1/web/WebTomoNota/wp-content/themes/yuki/index.php') /volume1/web/WebTomoNota/wp-includes/template-loader.php:106 3.0165 19012720 5. yuki_do_elementor_location($elementor_location = 'single', $template_part = 'template-parts/special', $name = 'single') /volume1/web/WebTomoNota/wp-content/themes/yuki/index.php:20 3.0166 19012720 6. get_template_part($slug = 'template-parts/special', $name = 'single', $args = ???) /volume1/web/WebTomoNota/wp-content/themes/yuki/inc/helpers.php:34 3.0166 19013296 7. locate_template($template_names = [0 => 'template-parts/special-single.php', 1 => 'template-parts/special.php'], $load = TRUE, $load_once = FALSE, $args = []) /volume1/web/WebTomoNota/wp-includes/general-template.php:206 3.0172 19013408 8. load_template($_template_file = '/volume1/web/WebTomoNota/wp-content/themes/yuki/template-parts/special-single.php', $load_once = FALSE, $args = []) /volume1/web/WebTomoNota/wp-includes/template.php:745 3.0174 19019520 9. require('/volume1/web/WebTomoNota/wp-content/themes/yuki/template-parts/special-single.php') /volume1/web/WebTomoNota/wp-includes/template.php:812 3.0667 19095040 10. do_action($hook_name = 'yuki_action_after_single_post') /volume1/web/WebTomoNota/wp-content/themes/yuki/template-parts/special-single.php:58 3.0667 19095416 11. WP_Hook->do_action($args = [0 => '']) /volume1/web/WebTomoNota/wp-includes/plugin.php:517 3.0667 19095416 12. WP_Hook->apply_filters($value = '', $args = [0 => '']) /volume1/web/WebTomoNota/wp-includes/class-wp-hook.php:348 3.1717 19190352 13. yuki_show_post_comments('') /volume1/web/WebTomoNota/wp-includes/class-wp-hook.php:324 3.1718 19190352 14. comments_template($file = ???, $separate_comments = ???) /volume1/web/WebTomoNota/wp-content/themes/yuki/inc/template-functions.php:354 3.1742 19206024 15. require('/volume1/web/WebTomoNota/wp-content/themes/yuki/comments.php') /volume1/web/WebTomoNota/wp-includes/comment-template.php:1631 3.1743 19206024 16. comment_form($args = ['class_form' => 'comment-form yuki-form form-default'], $post = ???) /volume1/web/WebTomoNota/wp-content/themes/yuki/comments.php:66 3.1767 19217744 17. do_action($hook_name = 'comment_form', ...$arg = variadic(1339)) /volume1/web/WebTomoNota/wp-includes/comment-template.php:2896 3.1767 19218120 18. WP_Hook->do_action($args = [0 => 1339]) /volume1/web/WebTomoNota/wp-includes/plugin.php:517 3.1767 19218120 19. WP_Hook->apply_filters($value = '', $args = [0 => 1339]) /volume1/web/WebTomoNota/wp-includes/class-wp-hook.php:348 3.1768 19218872 20. ReCAPTCHAPlugin->show_recaptcha_in_comments(1339) /volume1/web/WebTomoNota/wp-includes/class-wp-hook.php:324