【发布时间】: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