限制给定任务定义的并发 Fargate 任务数

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

如果我理解您的回答正确,当您从任务定义中定义“服务”时,此选项可用。如***.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”循环远不如用“常规”代码编写直观。感谢您的所有建议。

以上是关于限制给定任务定义的并发 Fargate 任务数的主要内容,如果未能解决你的问题,请参考以下文章

python多线程限制并发数示例

Terraform Fargate 任务定义请求执行角色

如何在 ECS Fargate 任务定义中配置主机名

Amazon ECS:任务定义不支持 launch_type FARGATE

AWS ECS Fargate - 任务未运行

如何为 Fargate 任务提供上传到 S3 的正确权限