![如何更新 ECS 中正在运行的最小和最大任务数](https://linux22.com/image/727880/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%96%B0%20ECS%20%E4%B8%AD%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E5%92%8C%E6%9C%80%E5%A4%A7%E4%BB%BB%E5%8A%A1%E6%95%B0.png)
我想在 lambda 函数(带有 boto3 的 python)中更新 ECS 中服务的最小和最大任务数。看起来最接近的是所需的计数:desiredCount
,但我不认为这是我想要的,因为我的自动缩放策略无论如何都会改变这一点。
更多关于我的用例的信息。
我在 ECS 上有一些容器,它们会轮询队列中的作业,我希望其中的一些容器在工作时间内始终运行,但在工作时间之外不会运行。当系统加载时,我的自动扩展策略将扩展容器,但如果没有容器,用户将不得不等待更长时间才能实现这一点,因此我希望一些容器在工作时间内始终处于运行状态。
我也在使用 AWS Fargate。
答案1
我想你必须分两步完成,使用应用程序自动扩展boto3 客户端:
使用 创建您的 ECS 服务作为应用程序自动扩展目标,
register_scalable_target()
例如MinCapacity=3
和MaxCapacity=100
。此调用将返回可扩展目标 ARN。每天晚上
register_scalable_target()
都会再打电话MinCapacity=0
,每个工作日早上都会再打电话MinCapacity=3
。
查看register_scalable_target()
文档中明确指出:
注册可扩展目标后,您可以使用此操作来更新最小值和最大值其可扩展维度的值。
然后,您的自动扩展策略将DesiredCapacity
在最小/最大容量MinCapacity 将在工作时间内从 变为0
工作3
时间,并在0
工作时间后再变为 工作时间的边界。
希望有帮助:)