参数 ScheduleExpression 无效

问题描述 投票:0回答:3

我正在尝试设置 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 aws-lambda amazon-cloudwatch
3个回答
167
投票

你可以尝试吗:

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

Cron 表达式有 six 必填字段。

AWS 文档


编辑:另外,不要错过这个重要的通配符注释...

您不能在“月份”和“星期”字段中同时使用 *。如果您在其中使用它,则必须使用 ?在另一个。


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)

-1
投票

这可能与不包含任何秒数的 AWS CRON 有关

© www.soinside.com 2019 - 2024. All rights reserved.