Sintaxe cron da AWS
Uma expressão do EventBridge tem a forma cron(0 12 * * ? *) e seis campos: minutos, horas, dia do mês, mês, dia da semana e ano. Não há campo de segundos, então a resolução mínima é de um minuto. Os dias da semana vão de 1 (domingo) a 7 (sábado), e nomes como MON-FRI também funcionam.
Regras obrigatórias
Um dos dois campos de dia precisa ser “?”: use cron(0 8 ? * MON-FRI *) para as manhãs de dias úteis e cron(0 8 1 * ? *) para o dia 1 de cada mês. O campo de ano é obrigatório; use * para todos os anos. L, W e # são aceitos nos campos de dia, por exemplo cron(0 18 L * ? *) para o último dia de cada mês.
Fusos horários
As regras agendadas do EventBridge rodam sempre em UTC, por isso a ferramenta avalia expressões da AWS em UTC por padrão e mostra seu horário local ao lado de cada execução. O EventBridge Scheduler permite associar um fuso horário a um agendamento; nesse caso, escolha o mesmo fuso no seletor para visualizar corretamente.
Cron ou rate?
Para intervalos fixos como a cada 15 minutos, uma expressão rate é mais simples: rate(15 minutes) começa a contar quando a regra é criada. Use cron quando a tarefa precisa rodar em horários de calendário — 08:00 nos dias úteis, no último dia do mês ou só em determinado ano. O EventBridge Scheduler também oferece agendamentos únicos at(...) e janelas de tempo flexíveis que distribuem as invocações.
Perguntas frequentes
- Por que a AWS rejeita minha expressão cron?
- As causas mais comuns são usar cinco campos em vez de seis, esquecer o campo de ano ou não colocar “?” no dia do mês ou no dia da semana. A mensagem de erro indica o campo com problema.
- Como rodar uma Lambda a cada 5 minutos com cron?
- Use cron(0/5 * * * ? *). Para intervalos simples, o EventBridge também aceita rate(5 minutes).
- O cron da AWS é em UTC?
- Sim, nas regras do EventBridge. O EventBridge Scheduler permite definir um fuso horário por agendamento.
- Qual é o intervalo mínimo?
- Um minuto, porque o cron da AWS não tem campo de segundos.