Referencia: expresiones cron y rate para Systems Manager - AWS Systems Manager

Referencia: expresiones cron y rate para Systems Manager

Cuando crea una asociación de State Manager o un período de mantenimiento en AWS Systems Manager, debe especificar una programación de cuándo debe llevarse a cabo el período o la asociación. Puede especificar una programación como una entrada basada en el tiempo, lo que se conoce como expresión cron, o una entrada basada en la frecuencia, lo que se conoce como expresión rate.

Información general sobre las expresiones cron y rate

La siguiente información se aplica a las expresiones cron y rate para los periodos de mantenimiento y las asociaciones.

Programaciones de una sola ejecución

Cuando crea una asociación o un periodo de mantenimiento, puede especificar una marca temporal en formato de Hora Universal Coordinada (UTC) para que se ejecute una vez a la hora especificada. Por ejemplo: "at(2020-07-07T15:55:00)"

Desplazamientos de la programación

Las asociaciones o los periodos de mantenimiento admiten desplazamientos de la programación solo para expresiones cron. Un desplazamiento de la programación es el número de días que se debe esperar después de la fecha y hora especificadas por una expresión cron antes de ejecutar la asociación o el periodo de mantenimiento.

Maintenance window example

En el ejemplo anterior, la expresión cron programa una ventana de mantenimiento para que se ejecute el tercer martes de cada mes a las 11:30 p.m. Sin embargo, ya que el desplazamiento de la programación es 2, la ventana de mantenimiento no se ejecutará hasta las 11:30 p.m. dos días después.

aws ssm create-maintenance-window \ --name "My-Cron-Offset-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "cron(30 23 ? * TUE#3 *)" \ --duration 4 \ --cutoff 1 \ --schedule-offset 2
Association example

En el siguiente comando, la expresión cron programa una asociación para que se ejecute el segundo jueves de cada mes. Sin embargo, dado que la diferencia de horario es 3, la asociación no funcionará hasta el domingo siguiente, tres días después.

aws ssm create-association \ --name "AWS-UpdateSSMAgent" \ --targets "Key=instanceids,Values=i-0cb2b964d3e14fd9f" \ --schedule-expression "cron(0 0 ? * THU#2 *)" \ --schedule-offset 3 --apply-only-at-cron-interval
nota

Para usar una compensación con una asociación, debe especificar la opción --apply-only-at-cron-interval. Esta opción indica al sistema que no ejecute ninguna asociación inmediatamente después de que la cree.

Si crea una asociación o un periodo de mantenimiento con una expresión cron dirigida a un día que ya ha pasado en el plazo actual, pero agrega una fecha de desplazamiento de programación que cae en el futuro, la asociación o el periodo de mantenimiento no se ejecutará en ese plazo. Entrará en vigor en el siguiente plazo. Por ejemplo, si especifica una expresión cron que habría ejecutado un periodo de mantenimiento ayer y agrega un desplazamiento de programación de dos días, el periodo de mantenimiento no se ejecutará mañana.

Campos obligatorios

Las expresiones cron para periodos de mantenimiento tienen seis campos obligatorios. Las expresiones cron para las asociaciones tienen cinco. (Actualmente, State Manager no admite la especificación de meses en expresiones cron para asociaciones). Un campo adicional, el campo Seconds (el primero en una expresión cron) es opcional. Los campos están separados por un espacio.

Ejemplos de expresiones cron
Minutos Horas Día del mes Mes Día de la semana Año Significado
0 10 * * ? * Ejecutar a las 10:00 h (UTC) todos los días
15 12 * * ? * Ejecutar a las 12:15 (UTC) todos los días
0 18 ? * MON-FRI * Ejecutar a las 18:00 (UTC) de lunes a viernes
0 8 1 * ? * Ejecutar a las 8:00 (UTC) cada primer día del mes
Valores admitidos

En la siguiente tabla se desglosan los valores compatibles para las entradas cron necesarias.

Valores admitidos para expresiones cron
Campo Valores Caracteres comodín
Minutos 0-59 , - * /
Horas 0-23 , - * /
Día del mes 1-31 , - * ? / L W
Mes (solo períodos de mantenimiento) 1-12 o bien JAN-DEC , - * /
Día de la semana 1-7 o bien SUN-SAT , - * ? / L #
Año 1970-2199 , - * /
nota

No se puede especificar un valor en los campos day-of-month y day-of-week en la misma expresión cron. Si especifica un valor en uno de los campos, utilice un ? (signo de interrogación) en el otro campo.

Comodines admitidos para expresiones cron

En la tabla siguiente se muestran los valores de comodín que admiten las expresiones cron.

nota

No se admiten expresiones cron que produzcan frecuencias superiores a cinco (5) minutos. La compatibilidad para especificar un valor de día de la semana y uno de día del mes no es completa. Utilice el signo de interrogación (?) en uno de estos campos.

Comodines admitidos para expresiones cron
Comodín Descripción
, El comodín , (coma) incluye los valores adicionales. En el campo Month, JAN, FEB, MAR incluiría enero, febrero y marzo.
- El comodín - (guion) especifica intervalos. En el campo Day, 1-15 incluiría los días del 1 al 15 del mes especificado.
* El comodín * (asterisco) incluye todos los valores del campo. En el campo Hours, * incluiría cada hora.
/ El comodín / (barra inclinada) especifica incrementos. En el campo Minutes, puede escribir 1/10 para especificar cada décimo minuto, empezando desde el primer minuto de la hora. Por lo tanto, 1/10 especifica los minutos 1, 11, 21 y 31, y así sucesivamente.
? El comodín ? (signo de interrogación) especifica uno u otro. En el campo Day-of-month puede escribir 7 y si no se preocupó de qué día de la semana era el 7º, podría escribir ? en el campo Day-of-week.
L El comodín L en los campos Day-of-month o Day-of-week especifica el último día del mes o de la semana.
W El comodín W en el campo Día del mes especifica un día de la semana. En el campo Day-of-month, 3W especifica el día más cercano al tercer día de la semana del mes.
# El comodín # del campo día de la semana seguido de un número comprendido entre uno y cinco especifica un día determinado del mes. 5#3 especifica el tercer jueves del mes.
Expresiones rate

Las expresiones rate tienen los siguientes dos campos obligatorios. Los campos están separados por espacios.

Campos obligatorios para expresiones rate
Campo Valores

Valor

número positivo, como 1 o 15

Unidad

minute

minutes

hour

hours

day

days

Si el valor es igual a 1, entonces la unidad debe ser singular. Del mismo modo, para valores mayores que 1, la unidad debe ser plural. Por ejemplo, rate(1 hours) y rate(5 hour) no son válidos, pero rate(1 hour) y rate(5 hours) son válidos.

Expresiones cron y rate para asociaciones

En esta sección se incluyen ejemplos de expresiones cron y rate para asociaciones de State Manager. Para crear una de estas expresiones, tenga en cuenta la siguiente información:

  • Las asociaciones son compatibles con las siguientes expresiones cron: cada media, 1, 2, 4, 8 o 12 horas; cada día, cada semana, o cada día y hora concretos de la semana; un día concreto de una semana concreta del mes, o el último día x del mes a una hora concreta.

  • Las asociaciones admiten las siguientes expresiones rate: intervalos de 30 minutos o más y menos de 31 días.

  • Si especifica el campo opcional Seconds, su valor puede ser 0 (cero). Por ejemplo: cron(0 */30 * * * ? *)

  • Para una asociación que recopila metadatos para Inventory, una capacidad de AWS Systems Manager, se recomienda utilizar una expresión rate.

  • State Manager actualmente no admite especificar meses en expresiones cron para asociaciones.

Las asociaciones admiten expresiones cron que incluyen un día de la semana y el signo de número (#) para designar el día x de un mes para ejecutar una asociación. A continuación, se incluye un ejemplo en el que se ejecuta una programación cron el tercer martes de cada mes a las 23.30 h (UTC):

cron(30 23 ? * TUE#3 *)

A continuación, se incluye un ejemplo que se ejecuta el segundo jueves de cada mes a medianoche (UTC):

cron(0 0 ? * THU#2 *)

Las asociaciones también admiten el signo (L) para indicar el último día X del mes. A continuación, se incluye un ejemplo en el que se ejecuta una programación cron el último martes de cada mes a medianoche (UTC):

cron(0 0 ? * 3L *)

Para tener un mayor control sobre el momento en el que se ejecuta una asociación, por ejemplo, si desea ejecutar una asociación dos días después de la revisión del martes, puede especificar un desplazamiento. Un desplazamiento define los días que hay que esperar después del día programado para ejecutar una asociación. Por ejemplo, si especificó una programación cron de cron(0 0 ? * THU#2 *), puede especificar el número 3 en el campo Desplazamiento de programación para ejecutar la asociación cada domingo después del segundo jueves del mes.

Para utilizar los desplazamientos, debe elegir la opción Apply association only at the next specified Cron interval en la consola o debe especificar el uso del parámetro --apply-only-at-cron-interval desde la línea de comandos. Esta opción indica a State Manager que no ejecute ninguna asociación inmediatamente después de crearla.

En la siguiente tabla se presentan ejemplos de expresiones cron para asociaciones.

Ejemplos de cron para asociaciones
Ejemplo Detalles

cron(0/30 * * * ? *)

Cada 30 minutos

cron(0 0/1 * * ? *)

Cada hora

cron(0 0/2 * * ? *)

Cada 2 horas

cron(0 0/4 * * ? *)

Cada 4 horas

cron(0 0/8 * * ? *)

Cada 8 horas

cron(0 0/12 * * ? *)

Cada 12 horas

cron(15 13 ? * * *)

Cada día a las 13:15

cron(15 13 ? * MON *)

Cada lunes a las 13:15

cron(30 23 ? * TUE#3 *)

El tercer martes de cada mes a las 23.30 h

A continuación mostramos algunos ejemplos de rate para asociaciones.

Ejemplos de rate para asociaciones
Ejemplo Detalles

rate(30 minutes)

Cada 30 minutos

rate(1 hour)

Cada hora

rate(5 hours)

Cada 5 horas

rate(15 days)

Cada 15 días

Ejemplos de AWS CLI para asociaciones

Para crear asociaciones de un State Manager con el AWS CLI, incluya el parámetro --schedule-expression con una expresión cron o rate. En los ejemplos siguientes se utiliza la AWS CLI en un equipo Linux local.

nota

De forma predeterminada, cuando crea una nueva asociación, el sistema la ejecuta inmediatamente después de crearla y, a continuación, de acuerdo con la programación especificada. Especifique --apply-only-at-cron-interval para que no se ejecute la asociación inmediatamente después de crearla. Las expresiones rate no admiten este parámetro.

aws ssm create-association \ --association-name "My-Cron-Association" \ --schedule-expression "cron(0 2 ? * SUN *)" \ --targets Key=tag:ServerRole,Values=WebServer \ --name AWS-UpdateSSMAgent
aws ssm create-association \ --association-name "My-Rate-Association" \ --schedule-expression "rate(7 days)" \ --targets Key=tag:ServerRole,Values=WebServer \ --name AWS-UpdateSSMAgent
aws ssm create-association \ --association-name "My-Rate-Association" \ --schedule-expression "at(2020-07-07T15:55:00)" \ --targets Key=tag:ServerRole,Values=WebServer \ --name AWS-UpdateSSMAgent \ --apply-only-at-cron-interval

Expresiones cron y rate para los períodos de mantenimiento

En esta sección se incluyen ejemplos de expresiones cron y rate para períodos de mantenimiento.

A diferencia de las asociaciones de State Manager, los periodos de mantenimiento admiten todas las expresiones cron y rate. Esto incluye compatibilidad con los valores del campo de segundos.

Por ejemplo, la siguiente expresión cron de 6 campos ejecuta un periodo de mantenimiento a las 9:30 cada día.

cron(30 09 ? * * *)

Al agregar un valor al campo Seconds, la siguiente expresión cron de 7 campos ejecuta un periodo de mantenimiento a las 9:30:24 cada día.

cron(24 30 09 ? * * *)

En la siguiente tabla se proporcionan ejemplos de cron de 6 campos adicionales para períodos de mantenimiento.

Ejemplos de cron para los períodos de mantenimiento
Ejemplo Detalles

cron(0 2 ? * THU#3 *)

2:00 el tercer jueves de cada mes

cron(15 10 ? * * *)

10:15 todos los días

cron(15 10 ? * MON-FRI *)

10:15 cada lunes, martes, miércoles, jueves y viernes

cron(0 2 L * ? *)

2:00 el último día de cada mes

cron(15 10 ? * 6L *)

10:15 el último viernes de cada mes

En la siguiente tabla se proporcionan ejemplos rate para los períodos de mantenimiento.

Ejemplos rate para los períodos de mantenimiento
Ejemplo Detalles

rate(30 minutes)

Cada 30 minutos

rate(1 hour)

Cada hora

rate(5 hours)

Cada 5 horas

rate(25 days)

Cada 25 días

Ejemplos de AWS CLI para períodos de mantenimiento

Para crear un periodo de mantenimiento con la AWS CLI, incluya el parámetro --schedule con una expresión cron o rate o una marca temporal. En los ejemplos siguientes se utiliza la AWS CLI en un equipo Linux local.

aws ssm create-maintenance-window \ --name "My-Cron-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "cron(0 16 ? * TUE *)" \ --schedule-timezone "America/Los_Angeles" \ --start-date 2021-01-01T00:00:00-08:00 \ --end-date 2021-06-30T00:00:00-08:00 \ --duration 4 \ --cutoff 1
aws ssm create-maintenance-window \ --name "My-Rate-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "rate(7 days)" \ --duration 4 \ --schedule-timezone "America/Los_Angeles" \ --cutoff 1
aws ssm create-maintenance-window \ --name "My-TimeStamp-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "at(2021-07-07T13:15:30)" \ --duration 4 \ --schedule-timezone "America/Los_Angeles" \ --cutoff 1
Más información

Expresiones cron en el sitio web de Wikipedia