¡Bienvenido al Día 5 de 12 Días de DigitalOcean! Ayer, configuraste tu Servicio de Recordatorio de Cumpleaños para que se ejecute en DigitalOcean Functions, lo que significa que ahora es sin servidor y listo para la nube. 🎉 Hoy, darás un paso más al automatizarlo para que funcione según su propio horario—sin necesidad de intervención manual.
Al final de esta guía, tu servicio (o cualquier otra función en la que estés trabajando) se ejecutará automáticamente a una hora establecida todos los días. Eso significa que no tendrás que recordar activarlo tú mismo—simplemente funcionará.
¿Por qué Automatizar?
Implementar tu función en la nube fue un gran logro ayer, pero tener que ejecutarla manualmente anula el propósito de la automatización. El enfoque de hoy es programar el servicio para que se ejecute automáticamente—como un reloj—para que puedas configurarlo y olvidarte de ello. DigitalOcean Functions tiene programación integrada utilizando Disparadores para este propósito exacto, y tienes dos formas de configurarlo.
🚀 Lo que aprenderás
Al final del día de hoy, sabrás cómo:
- Configurar un disparador diario para ejecutar tu función automáticamente.
- Aprender dos formas de hacer esto: a través del Panel de Control de DigitalOcean o con la CLI
doctl
yproject.yml
. - Probar la configuración para asegurarte de que funcione.
🛠 Lo que necesitarás
Antes de comenzar, asegúrate de tener lo siguiente:
- Una función ya desplegada en DigitalOcean (por ejemplo, el Servicio de Recordatorio de Cumpleaños de Día 4: Construyendo un Servicio de Recordatorio de Cumpleaños) para automatizar con disparadores.
- Si estás utilizando la CLI
doctl
, necesitarás el archivoproject.yml
para tu función. Puedes consultar Día 4 para obtener instrucciones sobre cómo instalar y configurar la CLIdoctl
, y cómo crear el archivoproject.yml
.
🧑🍳 Receta para el Día 5: Automatización de Funciones con Disparadores
Paso 1: Configura un Disparador para Tu Función
DigitalOcean te da dos opciones para configurar disparadores:
- Opción 1: Usa el Panel de Control para una configuración rápida y sencilla.
- Opción 2: Usa la CLI
doctl
para un control más robusto y programático.
Advertencia: Recuerda que los disparadores creados en el Panel de Control se pierden si vuelves a implementar la función utilizando la CLI. Si vas a volver a implementar a menudo, utiliza Opción 2 para añadir disparadores directamente al archivo project.yml
.
Opción 1: Usar el Panel de Control para Crear un Disparador
La forma más sencilla de configurar un disparador es a través del Panel de Control de DigitalOcean. Es rápido, no requiere configuración, y es ideal para configuraciones simples y únicas.
- Navega a la página principal de Funciones en el panel de control de DigitalOcean.
- Busca tu función (por ejemplo,
reminders/birthdays
) y haz clic en la pestaña Disparadores.
- Haz clic en Crear Disparador, añade un Nombre para tu disparador. Esto puede ser cualquier cosa descriptiva, como
daily-birthday-trigger
. El nombre debe contener solo caracteres alfanuméricos, guiones y puntos. - Añade una expresión cron para establecer el horario. Por ejemplo,
0 9 * * *
significa que la función se ejecutará todos los días a las 9:00 AM.
Nota: ¿No estás seguro de cómo funciona cron? Consulta crontab.guru para una guía útil.
- Guarda el disparador.
Una vez que hayas creado tu disparador, es una buena idea probarlo para asegurarte de que todo funcione como se espera. Salta a la sección Prueba la Automatización a continuación para aprender cómo.
Advertencia: Aunque el panel de control es simple y efectivo, cualquier desencadenador que crees aquí será sustituido o eliminado si vuelves a implementar la función utilizando la CLI. Para actualizaciones frecuentes o implementaciones programáticas, salta a Opción 2.
Opción 2: Usando la doctl
CLI con project.yml
También puedes crear desencadenadores añadiéndolos directamente a tu archivo project.yml. Este método es más confiable para reimplementaciones frecuentes porque asegura que tus desencadenadores siempre estén incluidos en la configuración de la función. A diferencia de la opción del Panel de Control descrita anteriormente, este enfoque evita que los desencadenadores sean sustituidos o perdidos durante las reimplementaciones.
A continuación se muestra cómo puedes configurarlo:
-
Abre tu archivo
project.yml
de Día 4: Despliegue de Notificaciones de Cumpleaños con DigitalOcean Functions. Puede verse algo así: -
Agrega una sección
triggers
a la configuración de tu función para definir el horario: -
Archivo
project.yml
final actualizado:Esto indica a DigitalOcean que ejecute la función
cumpleaños
todos los días a las 9:00 AM.-
triggers
sección: Define el nombre, tipo y horario para el disparador. Puedes nombrar tu disparador con cualquier cosa descriptiva, comodiario-cumpleaños-disparador
. -
cron
: Especifica la hora a la que la función se ejecutará diariamente en UTC. La expresión cron0 9 * * *
, por ejemplo, programa la función para que se ejecute todos los días a las 9:00 AM.
-
-
Guarda el archivo y despliega ejecutando el siguiente comando desde el directorio que contiene la carpeta
my-birthday-reminder-service
:Importante: Asegúrate de ejecutar el comando desde el directorio padre, no dentro de la carpeta
my-birthday-reminder-service
. Ejecutarlo desde la ubicación incorrecta puede resultar en un error como este: -
Una vez que el despliegue sea exitoso, verás un mensaje de confirmación similar a este:
-
Ve a tu panel de control para verificar que el disparador ha sido creado en la sección de Funciones.
Consejo Profesional: Para probar tu disparador, establece temporalmente la expresión cron a unos minutos a partir de ahora (por ejemplo, 28 9 * * *
si son las 9:25 AM). Después de confirmar que funciona, actualízalo de nuevo a tu horario previsto y vuelve a implementar.
Paso 2: Prueba la Automatización
Probemos tus disparadores para asegurarnos de que están funcionando. En lugar de esperar a que se activen en su horario habitual, puedes establecerlos temporalmente para que se ejecuten unos minutos a partir de ahora. Aquí te explicamos cómo hacerlo:
-
Establece la expresión cron para tu disparador a unos minutos a partir de la hora actual (en UTC). Por ejemplo, si son las 9:25 AM UTC, establece la expresión cron a
28 9 * * *
para que la función se ejecute a las 9:28 AM UTC.Nota: ¿No estás seguro de cómo convertir tu hora local a UTC? Herramientas como Convertidor de Zona Horaria pueden ayudar.
-
Guarda el desencadenador actualizado (si usas el Panel de Control) o vuelve a desplegar tu archivo
project.yml
actualizado (si usas la CLI): -
Espera a que se ejecute el desencadenador, luego verifica los registros de activación para confirmar que la función se ejecutó correctamente:
Nota: Los registros de activación registran detalles sobre cuándo se ejecutó tu función, incluyendo si se ejecutó correctamente o si encontró errores. Son una forma útil de verificar que tu disparador se activó a la hora programada.
Este comando devolverá los detalles de la activación más reciente de tu función. Por ejemplo, podrías ver algo como esto:
¡Esto confirma que el disparador se activó y la función fue activada con éxito! 🎉
Nota: Una vez que hayas verificado que todo funciona, actualiza la expresión cron a tu horario previsto (por ejemplo, 0 9 * * *
para las 9:00 AM UTC diarias) y guarda o vuelve a desplegar.
Una breve nota sobre los registros
Si bien el comando registros de activaciones
es una excelente manera de verificar ejecuciones recientes, a veces necesitarás registros más detallados para depurar o investigar problemas con tu función. DigitalOcean también ofrece opciones para reenvíar estos registros a servicios de registro externos, facilitando el monitoreo y la solución de problemas de tu aplicación con el tiempo.
En el Día 6, aprenderás a ver los registros directamente, interpretarlos de manera efectiva y configurar el reenvío de registros a servicios externos como Logtail o Papertrail. Estas herramientas te ayudarán a mantenerte fácilmente al tanto del rendimiento de tu función.
🎁 Resumen
Esto es lo que lograste hoy:
- Automatizaste tu Servicio de Recordatorio de Cumpleaños (o cualquier otra función) para que se ejecute diariamente.
- Aprendiste dos formas de configurar disparadores: a través del Panel de Control y con la CLI
doctl
. - Probaste tu configuración para asegurarte de que funcione como se espera.
Aquí están los tutoriales anteriores de esta serie:
- Día 1: Configurando una Base de Datos PostgreSQL para Recordatorios de Cumpleaños
- Día 2: Conectando a Tu Base de Datos PostgreSQL con Python
- Día 3: Comprobando Cumpleaños y Enviando Notificaciones por SMS
- Día 4: Desplegando Notificaciones de Cumpleaños a Funciones
A continuación: Ahora que tu servicio funciona de manera independiente, el siguiente paso es monitorearlo de manera efectiva. En el próximo tutorial, aprenderás cómo ver los registros de tu función y enviarlos a servicios externos para simplificar el seguimiento y la resolución de problemas. ¡Hasta entonces!
Source:
https://www.digitalocean.com/community/tutorials/automating-birthday-reminders-with-triggers