【问题标题】:Cron formula for every Sunday 00:01:00 and Saturday 23:59:00每周日 00:01:00 和周六 23:59:00 的 Cron 公式
【发布时间】:2020-04-20 09:27:04
【问题描述】:

我们需要为 AWS Lambda 设置 2 个公式:

1) 每周六 23:59:00

schedule: cron(0 59 23 ? * SAT *)

2) 每个月的每周日上午 00:01:00

schedule: cron(0 1 0 ? * SUN *)

我们将两者都放在 YAML 文件中,但它们没有触发(而是手动工作)。

如何验证它们的正确性?

【问题讨论】:

  • “我们将两者都放在 YAML 文件中”是什么意思?您指的是 CloudFormation 吗?你能在你的问题中展示它吗?您想在这些时间使用哪个时区?
  • 使用此工具验证 cron 表达式 cronmaker.com

标签: amazon-web-services aws-lambda yaml


【解决方案1】:

如果不查看您的 Cloudformation 模板,很难说出问题所在,但您的 yml 文件应类似于以下内容:

functions:   test:
    handler: lambda_function.lambda_handler
    description: "test serverless Lambda"
    memorySize: 128
    timeout: 300
    events:
      - schedule:
        rate: cron(59 23 ? * SAT *)
        enabled: true
        input:
          key: value
      - schedule:
        rate: cron(00 01 ? * Sun *)
        input: '{"key": "value"}'
        enabled: true

【讨论】:

  • 至于“验证它们的正确性”,我假设你的意思是你想测试 cron 事件实际上触发了 lambda。您应该只编辑 cron 值以每分钟触发一次,或者设置一个测试 lambda 函数以在推送堆栈之前验证它是否有效。请注意,cron 时间是 UTC。
  • 谢谢,但是我可以在控制台的哪个位置更改时区?
  • 因此 Cloudwatch cron 事件目前不支持 UTC 以外的时区,您需要通过时差来抵消您的 cron 表达式,或者如果您使用的是无服务器框架,则有一个插件。 ..github.com/UnitedIncome/serverless-local-schedule
  • input: '{"key": "value"}' 是什么?我真的需要它吗?
  • 不,这只是为了展示如何为 lambda 函数触发器提供输入事件。不需要。
【解决方案2】:

它应该是cron(59 23 ? * SAT *) 并且记住 cron 使用的时区是 GMT。您必须设置与您的时区匹配的 GMT 时间。

星期天应该是cron(00 01 ? * Sun *)

lambda 的 cron 事件基本上是一个 cloudwatch 事件。您可以在 cloudwatch 事件本身中查看您的 cron 的正确性。当你修改它时,它会显示接下来 10 次出现的 cron。

希望这会有所帮助。祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 2021-07-05
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多