触发 AWS Lambda 的 Cron Job 未按预期工作
Cron Job to trigger AWS Lambda not working as expected
我想在每个月的 15 日触发我的 AWS lambda 函数,但我的函数每 30 分钟触发一次。我在 Serverless.yml 中的函数是
monthlyTbAlert:
warmup: true
handler: handlers/monthly-tbalert/index.monthlyTbAlert
timeout: 60
events:
- schedule: cron(0 0 10 15 1/1 ? *)
enabled: true
根据aws docs,格式为cron(Minutes Hours Day-of-month Month Day-of-week Year)
所以你应该使用这个:
0
- 小时的第 0 分钟
10
- 一天中的几个小时。所以,10:00
15
- 每月第 15 天
*
- 每月执行一次
?
- 无论星期几
*
- 每年
因此,您的 cron 表达式应该是 0 10 15 * ? *
要在每个月的第 15 天 10:00AM
执行您的 cron
如果您想在部署之前调试您的 cron 表达式,您可以转到 CloudWatch -> 规则并在那里测试它们。如果您不确定可能发生的事情,这是一个非常有用的游乐场。
如果我们获取@Stargazer 的回答中提供的表达式(顺便说一下,它非常准确)并将其粘贴到 CloudWatch Rules 中,我们可以看到下一个触发器何时发生:
但是,通过使用您的,我们可以看到没有显示任何事件。如果您说它是每 30 分钟 运行,那么 CloudWatch 规则中可能存在每 30 分钟触发一次无效表达式的错误:
我想在每个月的 15 日触发我的 AWS lambda 函数,但我的函数每 30 分钟触发一次。我在 Serverless.yml 中的函数是
monthlyTbAlert:
warmup: true
handler: handlers/monthly-tbalert/index.monthlyTbAlert
timeout: 60
events:
- schedule: cron(0 0 10 15 1/1 ? *)
enabled: true
根据aws docs,格式为cron(Minutes Hours Day-of-month Month Day-of-week Year)
所以你应该使用这个:
0
- 小时的第 0 分钟
10
- 一天中的几个小时。所以,10:00
15
- 每月第 15 天
*
- 每月执行一次
?
- 无论星期几
*
- 每年
因此,您的 cron 表达式应该是 0 10 15 * ? *
要在每个月的第 15 天 10:00AM
如果您想在部署之前调试您的 cron 表达式,您可以转到 CloudWatch -> 规则并在那里测试它们。如果您不确定可能发生的事情,这是一个非常有用的游乐场。
如果我们获取@Stargazer 的回答中提供的表达式(顺便说一下,它非常准确)并将其粘贴到 CloudWatch Rules 中,我们可以看到下一个触发器何时发生:
但是,通过使用您的,我们可以看到没有显示任何事件。如果您说它是每 30 分钟 运行,那么 CloudWatch 规则中可能存在每 30 分钟触发一次无效表达式的错误: