触发 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 分钟触发一次无效表达式的错误: