参数ScheduleExpression无效

Bro*_*oks 24 cron amazon-cloudwatch aws-lambda

我正在尝试设置Cloudwatch预定事件,但我的cron表达似乎无效,但我无法弄清楚原因.

我的cron表达式是:

cron(5,15,25,35,45,55****)

我希望它能在每天每小时的第5天,第15天,第25天,第35天,第45天和第55分钟运行.这似乎与http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html中的AWS Scheduled Events文档一致.

上述文档允许用0到59之间的逗号分隔值表示分钟,以及用*通配符反映ALL的小时,日期(或星期几),月份和年份.

我尝试在Lambda控制台上设置cron表达式(创建函数并选择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 * ? * *)
Run Code Online (Sandbox Code Playgroud)

每次我收到错误说ScheduleExpression无效.但是,我可以使用premade rate()表达式之一.

我如何使用自己的自定义cron表达式?

谢谢.

Man*_*shi 34

你能尝试一下: cron(5,15,25,35,45,55 * * * ? *)

Cron表达式在这里有六个必填字段.

AWS 文档

  • 需要明确的是,让我丧命的是你需要使用?对于每月的某一天或每周的某一天,而不是 *.... 这很疯狂,因为 AutoScalingGroups 已经安排了采用 CRON 表达式的操作,并且可以使用 *. (15认同)
  • “这里的 Cron 表达式有六个必填字段” - 不仅如此,如果您使用“*”作为星期几(第五个)参数,它们还会_吓坏_。你必须在那里使用“?”。 (8认同)
  • 谢谢,看来“星期几”一定是“?” (6认同)
  • @BrettGreen 的“?” 我也被绊倒了——我正在向 Fargate 添加一个计划任务。如果在线编辑将其作为验证步骤,那就太好了。 (3认同)
  • 到底是什么工作了。从未与cron合作过,我被AWS文档误导了。这帮助了我:http://2ndwatch.com/blog/aws-lambda-scheduled-event-function-deep-dive-part-1/ (2认同)
  • 不知道它是否已更新,但我也收到错误,因为现在您不需要“cron()” (2认同)

Her*_*man 5

我认为这也适合您的用例,并且提供更好的易读性: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)
Run Code Online (Sandbox Code Playgroud)