Soporte nativo para eventos programados agregado el 8 de octubre de 2015:
Como se anunció en esta publicación de blog de AWS , la programación ahora se admite como un tipo de origen de evento (también llamado desencadenantes) llamado " Eventos de CloudWatch - Programa ", y se puede expresar como una tasa o una expresión cron.
Agregar evento programado a una nueva lambda
Vaya al paso de creación 'Configurar activadores' y especifique el activador 'Evento de CloudWatch - Programar'. Ejemplo de configuración a continuación:
Agregar evento programado a una lambda existente
Navegue a la pestaña 'Activadores' de su lambda, seleccione 'Agregar activador' y especifique el activador 'Evento CloudWatch - Programación'. Captura de pantalla de ejemplo donde tengo una lambda existente con un disparador SNS:
Una vez cargada, la IU para configurar este activador es idéntica a la captura de pantalla en la sección anterior "Agregar evento programado a una nueva lambda".
Discusión
Para su caso de ejemplo, querrá usar en cron()
lugar de rate()
. Las expresiones de Cron en lambda requieren todos los campos y se expresan en UTC. Entonces, para ejecutar una función todos los días a las 5 p.m. (UTC), use la siguiente expresión cron:
cron(0 17 * * ? *)
Recursos adicionales
Notas
- El nombre de este tipo de evento ha cambiado de "Evento programado" a "Eventos de CloudWatch - Programa" desde que se lanzó esta función por primera vez.
- Antes del lanzamiento de esta función, la solución recomendada para este problema (según "Introducción a AWS Lambda" a 42 minutos y 50 segundos ) era usar SWF para crear un temporizador o crear un temporizador con una aplicación externa.
- La interfaz de usuario de Lambda se ha revisado desde que salió la publicación del blog del evento programado, y las capturas de pantalla ya no son exactas. Vea mis capturas de pantalla actualizadas arriba del 10/03/2017 para las últimas revisiones.
Desde el momento de esta publicación, parece haber surgido otra solución: Programar invocaciones recurrentes de AWS Lambda con The Unreliable Town Clock (UTC) en el que el autor propone suscribirse al tema de SNS Unreliable Town Clock . No he usado SWF ni SNS, pero me parece que la solución SNS es más simple. Aquí hay un extracto del artículo.
fuente
NUEVA SOLUCIÓN: Trabajos programados de Lambda
Werner Vogel ha anunciado esta noche (10/08) en re: Invent que AWS Lambda ahora tiene su propio programador.
Se la nota de lanzamiento de AWS en Lambda 08/10/2015 :
ANTERIOR SOLUCIÓN: Programación con AWS Data Pipeline
Puede usar AWS Data Pipeline para programar una tarea con un período determinado. La acción puede ser cualquier comando cuando configura su Pipeline con ShellCommandActivity .
Por ejemplo, puede ejecutar un comando de AWS CLI para:
Puede crear fácilmente la tarea programada de AWS Data Pipeline directamente dentro de la consola de AWS (por ejemplo, con un comando de AWS CLI):
También puede usar la API para definir su programación:
Límites : el intervalo de programación mínimo es de 15 minutos.
Precio : alrededor de $ 1.00 por mes.
fuente
Así es como lo hago:
Crea Lambda que:
Cree una alarma de CloudWatch para: ApproximateNumberOfMessagesVisible> 0 durante 1 minuto
Ahora tiene un temporizador con aproximadamente 15 minutos de resolución.
Luego, otras funciones de Lambda se suscriben al tema SNS y se llaman cada 15 minutos.
fuente
Dado que ahora es posible activar fácilmente funciones lambda a través de HTTP (por ejemplo, usando GET o curl), una solución simple es utilizar un CRON administrado como easycron: https://www.easycron.com/ para activar su función lambda.
Tuvimos el mismo problema y terminamos ejecutando un servicio cron en Google App Engine en Python, ya que esto permitió una mayor flexibilidad y complejidad en el trabajo CRON.
fuente
En la página Función, Agregar disparador, puede agregar Eventos de CloudWatch y convertirlo en un tipo de programación
fuente
También puede programarlo con eventos de cloudWatch. Crear regla -> adjuntar objetivo (lambda) y configurar cron / sabio horario en su regla.
fuente
La forma de la consola web es bastante sencilla. Simplemente cree una
CloudWatch
regla para el lambda y agréguela en laTriggers
pestaña del lambda .Para aquellos que necesitan automatizar eso
aws cli
, podemosCrear función
Crear reglas
fuente
Una forma sencilla de ejecutar su consulta en lambda para un intervalo de tiempo particular es establecer una regla para su función lambda. para eso después de crear la función lambda, vaya a cloudwatch >> reglas >> horario. y defina la expresión cron y en la sección de destino seleccione la función lambda que desea activar.
fuente
Al crear la función lambda, cree el desencadenador "CloudWatch Events - Schedule"
Ahora puede usar los ajustes preestablecidos de AWS en la expresión de programación como rate = 15 min o puede usar una expresión cron.
Para su requerimiento, el Cron Schedule es "0 0 17 1/1 *? *"
fuente
Diksha es AWS Lambda Scheduler basado en AWS SWF Trigger como lo recomienda el equipo de AWS . Uno puede programar trabajos usando expresiones cron y también puede especificar cuánto tiempo desea ejecutar, cuándo comenzar o cuándo terminar. Puede ver el estado y el historial de trabajos programados. La seguridad es administrada por las políticas de AWS.
Una vez que configure el motor diksha, puede programar funciones utilizando la expresión cron de la siguiente manera:
java -jar diksha-client-0.0.1.jar -lcfg cf1 -cj "jobName | functionName | context | 0 0-59 * * * * | 10"
En este trabajo, el trabajo se ejecutará cada minuto 10 veces. AWS SWF activará la función por sí mismo.
Detalles: https://github.com/milindparikh/diksha
Descargo de responsabilidad: soy colaborador del proyecto.
fuente