Referência: Expressões cron e rate para o Systems Manager - AWS Systems Manager

Referência: Expressões cron e rate para o Systems Manager

Ao criar uma associação do State Manager ou uma janela de manutenção no AWS Systems Manager, você especifica uma programação para quando a janela ou a associação deve ser executada. É possível especificar um agendamento como uma entrada baseada em horário, chamada de expressão cron, ou como uma entrada baseada em frequência, chamada de expressão rate.

Informações gerais sobre as expressões cron e rate

As informações a seguir são aplicáveis a expressões cron e rate para janelas de manutenção e associações.

Programações com execução única

Ao criar uma associação ou uma janela de manutenção, é possível especificar um carimbo de data/hora no formato Tempo Universal Coordenado (UTC) para que ela seja executada uma vez no horário especificado. Por exemplo: "at(2020-07-07T15:55:00)"

Deslocamentos de programação

Associações e janelas de manutenção oferecem suporte a deslocamentos de programação apenas para expressões cron. Um deslocamento de programação é o número de dias de espera após a data e a hora especificadas por uma expressão do cron antes de executar a associação ou janela de manutenção.

Maintenance window example

No exemplo acima, a expressão CRON agenda a execução de uma janela de manutenção na terceira terça-feira de cada mês às 23h30. No entanto, como o deslocamento de programação é 2, a janela de manutenção só será executada dois dias depois às 23h30.

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

No comando a seguir, a expressão cron agenda uma associação para ser executada na segunda quinta-feira de cada mês. No entanto, como a diferença de cronograma é 3, a associação não funcionará até o próximo domingo, três dias depois.

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 um deslocamento com uma associação, você deve especificar a opção --apply-only-at-cron-interval. Essa opção diz ao sistema para não executar uma associação imediatamente após sua criação.

Se você criar uma associação ou janela de manutenção com uma expressão do cron que tenha como destino um dia que já passou em relação ao período atual, mas adicionar uma data futura de deslocamento de programação, a associação ou janela de manutenção não será executada no período. Ela entrará em vigor no período seguinte. Por exemplo, se você especificar uma expressão cron que teria executado uma janela de manutenção ontem e adicionar um deslocamento de programação de dois dias, a janela de manutenção não será executada amanhã.

Campos obrigatórios

Expressões cron para janelas de manutenção têm seis campos obrigatórios. Expressões cron para associações têm cinco. (no momento, o State Manager não oferece suporte à especificação de meses em expressões cron para associações.) Um campo adicional, o campo Seconds (o primeiro em uma expressão cron), é opcional. Os campos são separados por um espaço.

Exemplos de expressão cron
Minutos Horas Dia do mês Mês Dia da semana Ano Significado
0 10 * * ? * Executada às 10h (UTC) todos os dias
15 12 * * ? * Executada às 12h15 (UTC) todos os dias
0 18 ? * SEG-SEX * Executada às 18h (UTC) de segunda a sexta
0 8 1 * ? * Executada às 8h (UTC) todo o primeiro dia do mês
Valores com suporte

A tabela a seguir mostra os valores compatíveis com as entradas cron necessárias.

Valores compatíveis com expressões cron
Campo Valores Curingas
Minutos 0-59 , - * /
Horas 0-23 , - * /
Dia do mês 1-31 , - * ? / L W
Mês (somente para janelas de manutenção) 1-12 ou JAN-DEC , - * /
Dia da semana 1-7 ou SUN-SAT , - * ? / L #
Ano 1970-2199 , - * /
nota

Não é possível especificar os campos de dia do mês e dia da semana na mesma expressão cron. Se você especificar um valor em um dos campos, use um ? (ponto de interrogação) no outro.

Curingas para expressões cron

A tabela a seguir mostra os valores curinga compatíveis com expressões cron.

nota

As expressões Cron que levam a taxas mais rápidas do que 5 (cinco) minutos não têm suporte. O suporte para especificar um valor de dia da semana e dia do mês ao mesmo tempo não está completo. Use o ponto de interrogação (?) em um desses campos.

Curingas compatíveis com expressões cron
Curinga Descrição
, O curinga , (vírgula) inclui valores adicionais. No campo Mês, JAN, FEV, MAR incluiria janeiro, fevereiro e março.
- O curinga - (traço) especifica faixas. No campo Dia, 1-15 incluiria dias 1 a 15 do mês especificado.
* O curinga * (asterisco) inclui todos os valores no campo. No campo Horas, * incluiria cada hora.
/ O curinga / (barra) especifica incrementos. No campo Minutos, você pode inserir 1/10 para especificar cada décimo minuto a partir do primeiro minuto da hora. Portanto, 1/10 especifica o primeiro, 11º, 21º e 31º minuto, e assim por diante.
? O curinga ? (interrogação) especifica um ou outro. No campo Dia do mês, você pode inserir 7 e se não se importa com qual dia da semana era o 7º, pode inserir ? no campo Dia da semana.
L O curinga L nos campos Dia do mês ou Dia da semana especifica o último dia do mês ou da semana.
W O curinga W no campo Dia do mês especifica um dia da semana. No campo Dia do mês, 3W especifica o dia mais próximo do terceiro dia da semana do mês.
# O caractere curinga # no campo day-of-week (dia-da-semana) seguido de um número entre um e cinco especifica um determinado dia do mês. 5#3 especifica a terceira quinta-feira do mês.
Expressões rate

Expressões rate têm os seguintes dois campos obrigatórios. Os campos são separados por espaços.

Campos obrigatórios para expressões rate
Campo Valores

Valor

número positivo, como 1 ou 15

Unidade

minute

minutes

hour

hours

day

days

Se o valor for igual a 1, a unidade deverá ser singular. Da mesma forma, para valores maiores do que 1, a unidade deve ser plural. Por exemplo, rate(1 hours) e rate(5 hour) não são válidas, mas rate(1 hour) e rate(5 hours) são.

Expressões cron e rate para associações

Esta seção inclui exemplos de associações do State Manager com expressões cron e rate. Antes de criar uma dessas expressões, fique atento às informações a seguir:

  • As associações comportam as seguintes expressões cron: a cada 1/2, 1, 2, 4, 8 ou 12 horas; todo dia, toda semana ou cada dia e hora especificados da semana; um dia específico em uma semana específica do mês ou o último x dia do mês na hora específica.

  • As associações comportam apenas as seguintes expressões de taxas: intervalos de 30 minutos ou mais e menos de 31 dias.

  • Se você especificar o campo opcional Seconds, o valor poderá ser 0 (zero). Por exemplo: cron(0 */30 * * * ? *)

  • Para uma associação que coleta metadados para o inventário, um recurso do AWS Systems Manager, recomendamos o uso de uma expressão de taxa.

  • Atualmente, o State Manager não oferece suporte à especificação de meses em expressões cron para associações.

Associações comportam expressões do cron que incluem um dia da semana e o sinal numérico (#) para designar o nº dia de um mês para executar uma associação. Aqui está um exemplo que executa uma programação do cron na terceira terça-feira de cada mês às 23h30 UTC:

cron(30 23 ? * TUE#3 *)

Aqui está um exemplo que acontece na segunda quinta-feira de cada mês à meia-noite UTC:

cron(0 0 ? * THU#2 *)

Associações também aceitam o sinal (L) para indicar o último dia X do mês. Aqui está um exemplo que executa uma programação do cron na última terça-feira de cada mês à meia-noite UTC:

cron(0 0 ? * 3L *)

Para controlar ainda mais quando uma associação é executada, por exemplo, se você quiser executar uma associação dois dias após o patch de terça-feira, você pode especificar um deslocamento. Um deslocamento define quantos dias esperar após o dia programado para executar uma associação. Por exemplo, se você especificou uma programação do cron de cron(0 0 ? * THU#2 *), você pode especificar o número 3 no campo Schedule offset (Deslocamento da programação) para executar a associação todos os domingos após a segunda quinta-feira do mês.

Para usar deslocamentos, você deve escolher a opção Apply association only at the next specified Cron interval (Aplicar associação somente no próximo intervalo de Cron especificado) no console ou você deve especificar o parâmetro de uso --apply-only-at-cron-interval a partir da linha de comando. Essa opção diz ao State Manager para não executar uma associação imediatamente após sua criação.

A tabela a seguir apresenta exemplos cron para associações.

Exemplos de cron para associações
Exemplo Detalhes

cron(0/30 * * * ? *)

A cada 30 minutos

cron(0 0/1 * * ? *)

A cada hora

cron(0 0/2 * * ? *)

A cada 2 horas

cron(0 0/4 * * ? *)

A cada 4 horas

cron(0 0/8 * * ? *)

A cada 8 horas

cron(0 0/12 * * ? *)

A cada 12 horas

cron(15 13 ? * * *)

Todos os dia às 13h15

cron(15 13 ? * MON *)

Todas as segundas às 13h15

cron(30 23 ? * TUE#3 *)

A terceira terça-feira de cada mês às 23h30

Veja alguns exemplos de associações com rate.

Exemplos de rate para associações
Exemplo Detalhes

rate(30 minutes)

A cada 30 minutos

rate(1 hour)

A cada hora

rate(5 hours)

A cada 5 horas

rate(15 days)

A cada 15 dias

Exemplos da AWS CLI para associações

Para criar associações State Manager usando a AWS CLI, inclua o parâmetro --schedule-expression com uma expressão cron ou rate. Os exemplos a seguir usam a AWS CLI em uma máquina Linux local.

nota

Por padrão, quando você cria uma nova associação, o sistema a executa imediatamente após sua criação e de acordo com a programação especificada. Especifique --apply-only-at-cron-interval para que a associação não seja executada imediatamente após a criação. Esse parâmetro não é compatível com expressões rate.

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

Expressões cron e rate para janelas de manutenção

Esta seção inclui exemplos de expressões cron e rate para janelas de manutenção.

Ao contrário das associações do State Manager, as janelas de manutenção são compatíveis com todas as expressões cron e de taxa. Isso inclui suporte para valores no campo de segundos.

Por exemplo, a expressão cron de 6 campos a seguir executa uma janela de manutenção às 9:30 AM todos os dias.

cron(30 09 ? * * *)

Ao adicionar um valor ao campo Seconds, a expressão cron de 7 campos a seguir executa uma janela de manutenção às 9:30:24 hs todos os dias.

cron(24 30 09 ? * * *)

A tabela a seguir fornece exemplos adicionais de cron de 6 campos para janelas de manutenção.

Exemplos de cron para janelas de manutenção
Exemplo Detalhes

cron(0 2 ? * THU#3 *)

02:00, na terceira quinta-feira de cada mês

cron(15 10 ? * * *)

10:15, todos os dias

cron(15 10 ? * MON-FRI *)

10:15 todas as segundas, terças, quartas, quintas e sexta-feiras

cron(0 2 L * ? *)

02:00, no último dia de cada mês

cron(15 10 ? * 6L *)

10:15, na última sexta-feira de cada mês

A tabela a seguir fornece exemplos de rate para janelas de manutenção.

Exemplos de rate para janelas de manutenção
Exemplo Detalhes

rate(30 minutes)

A cada 30 minutos

rate(1 hour)

A cada hora

rate(5 hours)

A cada 5 horas

rate(25 days)

A cada 25 dias

Exemplos de AWS CLI para janelas de manutenção

Para criar janelas de manutenção usando a AWS CLI, inclua o parâmetro --schedule com uma expressão cron ou rate ou um carimbo de data/hora. Os exemplos a seguir usam a AWS CLI em uma máquina 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
Mais informações

Expressão CRON, no Site da Wikipedia