我正在尝试设置 Cloudwatch 计划事件,我的 cron 表达式似乎无效,但我不知道为什么。
我的 cron 表达式是:
cron(5,15,25,35,45,55 * * * *)
我希望它在每天每小时的第 5、15、25、35、45 和 55 分钟运行。这似乎与此处的 AWS Scheduled Events 文档一致 http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html.
上述文档允许用 0 到 59 之间的逗号分隔值表示分钟,并使用 * 通配符反映小时、月份(或星期几)、月份和年份以反映全部。
我尝试在 Lambda 控制台(创建函数并选择 Cloudwatch Schedule Event 时)和 Cloudwatch 控制台(以及选择触发器的目标)中设置 cron 表达式。两者都不适用于我的自定义 cron 表达式。
我尝试过以下方法:
5,15,25,35,45,55 * * * *
5,15,25,35,45,55 * ? * *
cron(5,15,25,35,45,55 * * * *)
cron(5,15,25,35,45,55 * ? * *)
每次我收到一条错误消息,提示 ScheduleExpression 无效。不过,我可以使用预制的 rates() 表达式之一。
如何使用自己的自定义 cron 表达式?
谢谢。
你可以尝试吗:
cron(5,15,25,35,45,55 * * * ? *)
Cron 表达式有 six 必填字段。
AWS 文档
编辑:另外,不要错过这个重要的通配符注释...
您不能在“月份”和“星期”字段中同时使用 *。如果您在其中使用它,则必须使用 ?在另一个。
我认为这也适合您的用例,并且提供更好的易读性:
rate(5 minutes)
或者将其放入 CloudFormation 代码中:
Resources:
ChangeDetectFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: example/
Handler: app.lambda_handler
Runtime: python3.8
Events:
ScheduledEvent:
Name: Every5min
Type: Schedule
Properties:
Schedule: rate(5 minutes)