【问题标题】:Parameterise AWS EventBridge cron rules with ECS task使用 ECS 任务参数化 AWS EventBridge cron 规则
【发布时间】:2021-12-26 22:59:07
【问题描述】:

我有一个带有 cron 模式 cron(0/15 * ? * * *) 的 EventBridge 规则,它每 15 分钟触发一次 ECS 任务。

是否可以将触发时间作为参数传递给ECS任务定义?例如,如果事件在 2021-12-23T22:15:00Z 上触发。

[
  {
    ...
    "entryPoint": ["some_command", "--cron-time", "2021-12-23T22:15:00Z"],
    ...
  }
]

我想到的一个解决方案是我可以创建 672 个(每小时 4 个 * 24 小时 * 7 天)的 EventBridge 规则/ECS 任务定义对,但这似乎不太理想。

另一种解决方案可能是触发 Lambda 作为中间函数来构造参数的单个规则。不过,我更喜欢无代码解决方案。

非常感谢您的关注。

【问题讨论】:

  • 为什么不在 ECS 任务启动时检查当前时间?如果您绝对需要 EventBridge 来执行此操作,那么您可以尝试使用转换规则:docs.aws.amazon.com/eventbridge/latest/userguide/… 如果由于某种原因这对您不起作用,那么使用 Lambda 似乎是最好的选择。
  • @MarkB 需要一定的准确性。 ECS 任务启动可能需要一些时间,并且不保证任务会在预定的时间触发(例如,由于服务限制,个人经验)。对于我的用例,ECS 任务可以异步运行,前提是保留实际的 cron 时间并将其用作应用程序查询的一部分。我同意你的看法。 Lambda 似乎是最好的选择。

标签: amazon-web-services amazon-ecs aws-event-bridge


【解决方案1】:

我的解决方案是使用 Step Functions(或 Lambda)将时间作为参数存储在 Systems Manager Parameter Store 中并运行任务。参数可以作为环境变量(valueFrom)包含在任务定义中,容器可以从中读取时间值。

【讨论】:

    猜你喜欢
    • 2022-01-27
    • 2021-07-12
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多