es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo establecer el segundo en el que se activan los eventos de EventBridge?

Puedo activar una función programada de EventBridge (una característica de regla / programación anteriormente en CloudWatch) con una tasa (digamos, cada 5 minutos) o a través de una configuración de cron para hacer lo mismo.

La configuración de la tasa activará rutinariamente a las:
7:05:13, 7:10:13, 7:15:13, etc.

Si elimino la regla de EventBridge y la reconstruyo, se activará a las:
7:05:42, 7:10:42, 7:15:42, etc…

Mi suposición es que comienza en el segundo en que la regla entra en efecto y simplemente se activa obedientemente a esa tasa.

Necesito activar exactamente en el mismo segundo, de preferencia en el segundo cero o en algún otro valor muy cercano a cero porque estoy realizando una recopilación de datos sincronizada con otro proceso que SÍ recolecta en el segundo cero, ¿existe alguna forma de definir el segundo de inicio de una regla de tarea programada de EventBridge (particularmente útil sería si hubiera una manera de hacerlo con el framework sin servidor)?

He intentado con una configuración de cron y tuve los mismos resultados básicos (segundos diferentes, por supuesto, pero aún así no es el segundo cero y el segundo en que se activó cambió en cada implementación de la regla).

A menos que pueda asegurarme de que mi implementación del framework sin servidor a escala empresarial se realice en el segundo cero cada vez (algo que no es razonable para un proyecto multi-miembro a gran escala), ¿cómo puedo configurar el tiempo de segundo de una tarea de regla basada en cron o tasa en EventBridge (anteriormente CloudWatch)?

Las preguntas anteriores (https://stackoverflow.com/questions/67849196/how-can-i-schedule-cloudwatch-rule-at-second-level) han implicado que lo predeterminado es que las cosas se activan en el segundo cero, pero eso no parece ser el caso.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible definir el segundo de inicio de una regla de tarea programada de EventBridge. Se puede hacer especificando la hora de inicio en formato UTC al crear la regla. Esto se puede hacer utilizando el parámetro --schedule-expression con la hora deseada en formato cron. Por ejemplo, para iniciar la regla exactamente en el segundo 0 del minuto, se puede establecer la expresión cron como 0/5 * * * ? *.

    Si está utilizando el Serverless Framework, puede establecer este valor en la sección schedule de la configuración de su función en el archivo serverless.yml. Por ejemplo:

    functions:
      myFunction:
        handler: handler.myFunction
        events:
          - schedule:
              rate: cron(0/5 * * * ? *)
              input:
                key1: value1
    

    Esto activará la función cada 5 minutos a partir del segundo 0 del minuto.

    Vale la pena señalar que aunque la hora de inicio predeterminada debería ser el segundo cero, esto no siempre es así debido a factores como el tiempo de implementación y la latencia. Por lo tanto, siempre es una buena idea establecer explícitamente la hora de inicio si la precisión es importante para su aplicación.

Comments are closed.