【问题标题】:Limit number the number of concurrent Fargate tasks for a given task definition限制给定任务定义的并发 Fargate 任务数
【发布时间】:2019-05-14 18:54:59
【问题描述】:

我有一个给定的 AWS fargate 任务定义。 do_something 调用不支持超过 4 个并发消费者的下游服务。因此,我必须找到一种方法来限制同时运行的并发 do_something fargate 任务的数量。

有没有内置的方法来做到这一点?我无法在文档中找到它。

【问题讨论】:

    标签: aws-fargate


    【解决方案1】:

    在扩展策略中,您将最大任务数设置为 4。

    在这里您可以看到设置的图片。

    【讨论】:

    • 如果我理解您的回答正确,当您从任务定义中定义“服务”时,此选项可用。如stackoverflow.com/a/42961623/2679757 所述,“服务”是始终在运行的东西。就我而言,我想运行一个按需运行的“任务”,但这会限制任务的并发执行次数。例如,如果我想限制同时运行 2 个任务并启动 4 个任务,我希望 2 个任务立即启动,另外 2 个任务由 AWS 排队并在之前的任务完成时启动。任务是否可行?
    • 如果您在没有服务的情况下使用“运行任务”,您需要跟踪自己生成了多少任务。对于您的用例,我使用 AWS SQS 作为任务队列,然后生成 lambda 来处理任务并将它们从队列中删除。 Lambda 具有您正在寻找的功能:管理并发。您可以限制 lambdas 的并发执行
    • 但是你的 lambda 必须运行与你的 fargate 任务相同的持续时间才能工作。我考虑 fargate 的原因正是为了克服 lambda 的 15 分钟限制。我想,我需要使用 Step 函数 :(
    • 是的 15 分钟对于 lambda 来说非常长。你能把工作分成更小的部分吗?步进函数听起来也不错
    • 我的任务是一种“for”循环,每次迭代都需要几分钟。用 JSON(步进函数定义语言)编写“for”循环远不如用“常规”代码编写直观。感谢您的所有建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2021-05-18
    • 2011-02-23
    • 1970-01-01
    • 2019-07-26
    • 2022-10-15
    • 2021-06-16
    相关资源
    最近更新 更多