如何更新 ECS 中正在运行的最小和最大任务数

如何更新 ECS 中正在运行的最小和最大任务数

我想在 lambda 函数(带有 boto3 的 python)中更新 ECS 中服务的最小和最大任务数。看起来最接近的是所需的计数:desiredCount,但我不认为这是我想要的,因为我的自动缩放策略无论如何都会改变这一点。

更多关于我的用例的信息。

我在 ECS 上有一些容器,它们会轮询队列中的作业,我希望其中的一些容器在工作时间内始终运行,但在工作时间之外不会运行。当系统加载时,我的自动扩展策略将扩展容器,但如果没有容器,用户将不得不等待更长时间才能实现这一点,因此我希望一些容器在工作时间内始终处于运行状态。

我也在使用 AWS Fargate。

答案1

我想你必须分两步完成,使用应用程序自动扩展boto3 客户端

  1. 使用 创建您的 ECS 服务作为应用程序自动扩展目标,register_scalable_target()例如MinCapacity=3MaxCapacity=100。此调用将返回可扩展目标 ARN。

  2. 每天晚上register_scalable_target()都会再打电话MinCapacity=0,每个工作日早上都会再打电话MinCapacity=3

查看register_scalable_target()文档中明确指出:

注册可扩展目标后,您可以使用此操作来更新最小值和最大值其可扩展维度的值。

然后,您的自动扩展策略将DesiredCapacity最小/最大容量MinCapacity 将在工作时间内从 变为0工作3时间,并在0工作时间后再变为 工作时间的边界。

希望有帮助:)

相关内容