Quiero programar un evento de CloudWatch para que se ejecute cada dos lunes y comencé con este comando:
0 14 ? * 2 *
Actualmente, con el comando anterior, obtengo un programa semanal de ejecuciones de lunes:
Mon, 27 Jul 2020 14:00:00 GMT Mon, 03 Aug 2020 14:00:00 GMT Mon, 10 Aug 2020 14:00:00 GMT Mon, 17 Aug 2020 14:00:00 GMT Mon, 24 Aug 2020 14:00:00 GMT Mon, 31 Aug 2020 14:00:00 GMT Mon, 07 Sep 2020 14:00:00 GMT Mon, 14 Sep 2020 14:00:00 GMT Mon, 21 Sep 2020 14:00:00 GMT Mon, 28 Sep 2020 14:00:00 GMTSin embargo, me gustaría que el horario se establezca cada dos lunes, por ejemplo
Mon, 27 Jul 2020 14:00:00 GMT Mon, 10 Aug 2020 14:00:00 GMT Mon, 24 Aug 2020 14:00:00 GMT Mon, 07 Sep 2020 14:00:00 GMT Mon, 21 Sep 2020 14:00:00 GMT He visto ejemplos en los que se utilizan exp y # , pero no creo que los eventos de AWS CloudWatch acepten este tipo de parámetros.
No podrá ejecutar ninguno de los comandos más sofisticados (especialmente aquellos que usan variables desde la línea de comandos).
Podría hacer esto de manera muy básica, pero requeriría 2 eventos separados para llevarlo a cabo:
0 14 ? * 2#1 * - Se ejecuta el primer lunes del mes.0 14 ? * 2#3 * - Se ejecuta el tercer lunes del mes.Desafortunadamente, no existe una sintaxis compatible para las expresiones programadas que permitan el concepto de cada dos semanas, por lo que los comandos anteriores ocasionalmente podrían generar un intervalo de 3 semanas.
Si no le importa el lunes, puede usar 0 14 1,15 * * para ejecutar el 1 y el 15 de cada mes (aproximadamente cada 2 semanas).
La opción final sería ejecutar todos los lunes, pero hacer que el script salga si no es cada dos semanas, la expresión sería simplemente 0 14 ? * 2 * .
Hay más información disponible sobre la sintaxis en la sección Expresiones cron de la página Eventos programados.
La respuesta de Chris es correcta. Actualmente, no se me ocurre ninguna forma de expresar esto como parte de los eventos programados de CloudWatch.
Sin embargo, una solución alternativa podría ser establecerlo todos los lunes ( 0 14 ? * 2 * ) y activar una función Lambda que verifique si está dentro o fuera de la semana antes de activar el objetivo real.
Aunque esto agrega cierta complejidad, sería una solución viable.