参数 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 创建输入布局
无效参数不满足:messageSenderId != nil
SubDagOperator 无效参数为:**kwargs: 'executor': LocalExecutor(parallelism=32)