Saltar al contenido

Tareas programadas de AWS Lambda

Solución:

Soporte nativo para eventos programados agregado el 8 de octubre de 2015:

Como se anunció en esta publicación del blog de AWS, la programación ahora se admite como un tipo de fuente de evento (también llamado desencadenadores) llamado “Eventos de CloudWatch: programación“, y puede expresarse 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 – Programación’. Ejemplo de configuración a continuación:

Imagen que muestra la configuración para crear un evento programado a las 5 p.m. UTC.

Agregar evento programado a una lambda existente

Vaya a la pestaña ‘Disparadores’ de su lambda, seleccione ‘Agregar disparador’ y especifique el disparador ‘CloudWatch Event – Schedule’. Captura de pantalla de ejemplo donde tengo una lambda existente con un disparador SNS:

Imagen que muestra cómo navegar para agregar la interfaz de usuario del disparador desde la consola Lambda.

Una vez cargada, la interfaz de usuario para configurar este disparador 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 cron() en lugar de rate(). Las expresiones 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

  • Documentación de AWS: Programar expresiones mediante Rate o Cron
  • Documentación de AWS: ejecute una función de AWS Lambda de forma programada mediante la AWS CLI
  • Documentación de AWS – Tutorial: uso de AWS Lambda con eventos programados
    • AWS ha proporcionado un “modelo” de muestra que utiliza una expresión cron llamada lambda-canary que se pueden seleccionar durante la creación de funciones desde la consola de AWS.
    • Este tutorial lo guía a través de la configuración de este plan.

Notas

  • El nombre de este tipo de evento ha cambiado de “Evento programado” a “Eventos de CloudWatch – Programación” 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” en 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 que contiene ya no son exactas. Vea mis capturas de pantalla actualizadas del 10/3/2017 para conocer las últimas revisiones.

Desde el momento de esta publicación, parece haber surgido otra solución: Programar invocaciones recurrentes de AWS Lambda con el reloj de la ciudad no confiable (UTC) en el que el autor propone suscribirse al tema SNS Reloj de la ciudad poco confiable. No he utilizado SWF ni SNS, pero me parece que la solución SNS es más sencilla. Aquí hay un extracto del artículo.

Reloj de la ciudad poco confiable (UTC)

El reloj de la ciudad no confiable (UTC) es un nuevo tema de SNS público y gratuito (Servicio de notificación simple de Amazon) que transmite un mensaje de “timbre” cada cuarto de hora a todos los suscriptores. Puede enviar las campanillas a las funciones de AWS Lambda, las colas de SQS y las direcciones de correo electrónico.

Puede usar los atributos de timbre para ejecutar su código cada quince minutos, o solo ejecutar su código una vez por hora (por ejemplo, cuando el minuto == “00”) o una vez al día (por ejemplo, cuando la hora == “00” y el minuto = = “00”) o cualquier otra serie de intervalos.

Incluso puede suscribir una función que solo desea ejecutar una vez en un momento específico en el futuro: haga que la función ignore todas las invocaciones hasta que pase la hora deseada. Cuando llegue el momento, puede realizar su trabajo y luego darse de baja del tema SNS.

Conectar su código al reloj de la ciudad no confiable es rápido y fácil. No se requiere proceso de solicitud o creación de cuenta

NUEVA SOLUCIÓN: Trabajos programados de Lambda

Werner Vogel ha anunciado esta noche (08/10) en re: Invent que AWS Lambda ahora tiene su propio programador.

Consulte la nota de la versión de AWS Lambda el 08/10/2015:

También puede configurar AWS Lambda para invocar su código de forma regular y programada mediante la consola de AWS Lambda. Puede especificar una tasa fija (número de horas, días o semanas) o puede especificar una expresión cron. Para ver un ejemplo, consulte Tutorial 5: Uso de funciones de Lambda para procesar eventos programados (Python).


ANTIGUA SOLUCIÓN: Programación con AWS Data Pipeline

Puede utilizar AWS Data Pipeline para programar una tarea con un período determinado. La acción puede ser cualquier comando cuando configura su Pipeline con el ShellCommandActivity.

Por ejemplo, puede ejecutar un comando de la AWS CLI para:

  • Pon un mensaje a SQS
  • o directamente invocar una función Lambda (ver invocar)

Puede crear fácilmente la tarea programada de AWS Data Pipeline directamente en la consola de AWS (por ejemplo, con un comando de la AWS CLI):

ingrese la descripción de la imagen aquí

También puede utilizar la API para definir su programación:

{
 "pipelineId": "df-0937003356ZJEXAMPLE",
 "pipelineObjects": [
    {
      "id": "Schedule",
      "name": "Schedule",
      "fields": [
        { "key": "startDateTime", "stringValue": "2012-12-12T00:00:00" }, 
        { "key": "type", "stringValue": "Schedule" }, 
        { "key": "period", "stringValue": "1 hour" }, 
        { "key": "endDateTime", "stringValue": "2012-12-21T18:00:00"  }
       ]
     }, {
      "id": "DoSomething",
      "name": "DoSomething",
      "fields": [
        { "key": "type", "stringValue": "ShellCommandActivity" },
        { "key": "command", "stringValue": "echo hello" },
        { "key": "schedule", "refValue": "Schedule" }
      ]
    }
  ]
}

Límites: el intervalo mínimo de programación es de 15 minutos.

Precio: alrededor de $ 1.00 por mes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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