【问题标题】:Why does this cron expression is incorrect on AWS?为什么这个 cron 表达式在 AWS 上不正确?
【发布时间】:2019-07-23 10:40:36
【问题描述】:

我们正在尝试在 AWS 上创建一个 lambda,它计划在每周一上午 9:45 运行。

我们的 cron 表达式是这样的:

cron(45 9 ? * MON *)

AWS 文档明确指出,crons 有六个必填字段(您可以忽略秒数)- 请参阅此处的文档:https://docs.aws.amazon.com/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html

但是,部署 lambda 会导致错误:

An error occurred: ConsumerEventsRuleSchedule13 - Parameter ScheduleExpression is not valid. 
(Service: AmazonCloudWatchEvents; Status Code: 400; Error Code: ValidationException)

我已经设法通过在表达式中添加秒来修复它:

cron(0 45 9 ? * MON *)

但是,我仍然很困惑为什么原来的表达是无效的? AWS 文档(上面链接)甚至为每个工作日(周一至周五)运行的任务提供了一个工作表达式: cron(0 18 ? * MON-FRI *) 这看起来就像我们最初尝试使用的一样,减去工作日范围(因为我们想要一个特定的工作日)。

有什么线索吗?

【问题讨论】:

  • 这很奇怪。你的cron看起来不错。我什至通过创建 CloudWatch 规则测试了原始规则,它运行良好。也许这是一个错误。我会与 AWS 取得联系,看看他们是否对此有所了解。
  • 你是如何创建这个的?使用 aws-cli?

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


【解决方案1】:

您在部署之前尝试过sam package 吗?您可能会使用 cron 错误的旧代码...试试 sam package --s3-bucket your-bucket-name --output-template-file packaged.yaml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多