让 AWS EventBridge 调度每分钟运行
AWS EventBridge 中“每分钟”的表达式是 cron(* * * * ? *)。下面是可直接粘贴的配置、接下来的运行时间和需要注意的地方。 AWS EventBridge Scheduler 使用 cron(),六个字段从分钟到年,按你设置的时区运行(默认 UTC)。
cron(* * * * ? *)在工具中打开“每分钟”
EventBridge Scheduler
AWS CLI (EventBridge Scheduler)
aws scheduler create-schedule \
--name every-minute \
--schedule-expression "cron(* * * * ? *)" \
--schedule-expression-timezone "UTC" \
--flexible-time-window Mode=OFF \
--target '{"Arn":"arn:aws:lambda:REGION:ACCOUNT:function:my-job","RoleArn":"arn:aws:iam::ACCOUNT:role/scheduler-invoke"}'Terraform
resource "aws_scheduler_schedule" "every_minute" {
name = "every-minute"
schedule_expression = "cron(* * * * ? *)"
schedule_expression_timezone = "UTC"
flexible_time_window {
mode = "OFF"
}
target {
arn = aws_lambda_function.job.arn
role_arn = aws_iam_role.scheduler.arn
}
}AWS EventBridge 的坑
cron() 里是六个字段分、时、日、月、星期、年。没有秒字段。
一个日期字段必须是 ?设置了“日”,“星期”就写 ?,反之亦然。两个都设置会报错。
周日是 1星期是 1-7,从 SUN 开始,所以 2-6 是周一到周五。
星期字段不能用步长星期字段支持列表、范围、L 和一个 #,不支持 /。请直接列出日期。
常见问题
AWS EventBridge 中“每分钟”的 cron 表达式是什么?
cron(* * * * ? *)。含义:每分钟
AWS EventBridge 的定时任务按哪个时区运行?
EventBridge Scheduler 用 --schedule-expression-timezone 设置 IANA 时区,默认 UTC。旧的 EventBridge 规则只能用 UTC。
rate() 和 cron() 有什么区别?
rate(5 minutes) 从调度开始时起按固定间隔运行;cron() 按钟点运行。在意具体分钟就用 cron()。
用 EventBridge Scheduler 还是 EventBridge 规则?
AWS 推荐新调度使用 EventBridge Scheduler:支持时区和一次性调度。规则只能用 UTC。