参数 ScheduleExpression 无效

Posted

技术标签:

【中文标题】参数 ScheduleExpression 无效【英文标题】:Parameter ScheduleExpression is not valid 【发布时间】:2017-01-21 18:43:29 【问题描述】:

我正在尝试设置 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 计划事件文档一致。

上述文档允许使用 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 无效。但是,我可以使用预制的 rate() 表达式之一。

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

谢谢。

【问题讨论】:

另一条评论:您可以通过说:cron(5/10 * * * ? *) 来避免列出所有分钟间隔 【参考方案1】:

你可以试试吗:cron(5,15,25,35,45,55 * * * ? *)

Cron 表达式在此处有 六个 必填字段。

AWSdocumentation


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

您不能在“日期”和“星期几”字段中都使用 *。如果你在一个中使用它,你必须使用 ?在另一个。

【讨论】:

究竟是什么最终的工作。从来没有使用过 cron,我被 AWS 文档误导了。这帮助了我:2ndwatch.com/blog/… 要明确的是,让我丧命的是你需要使用吗?对于月份或星期几,而不是 *.... 这很疯狂,因为 AutoScalingGroups 已经安排了采用 CRON 表达式的操作,并且可以使用 *. @BrettGreen “?”我也被绊倒了——我正在向 Fargate 添加计划任务。如果在线编辑器将此作为验证步骤,那就太好了。 "Cron 表达式在这里有六个必填字段" - 不仅如此,如果您在一周中的某一天(第五天)使用 *,它们会吓坏 ) 范围。你必须在那里使用? 不知道它是否已更新,但我也收到错误消息,因为现在您不需要“cron()”【参考方案2】:

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

【讨论】:

以上是关于参数 ScheduleExpression 无效的主要内容,如果未能解决你的问题,请参考以下文章

E_INVALIDARG 一个或多个参数无效。 dx11 创建输入布局

sklearn 管道的参数无效

无效参数不满足:messageSenderId != nil

SubDagOperator 无效参数为:**kwargs: 'executor': LocalExecutor(parallelism=32)

C++ std::stoi 异常:无效参数

SqlExceptionHelper 142: ORA-00909: 参数个数无效