You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS Fargate部署时如何匹配实际运行任务数而非desired count?

解决方案

核心问题根因

你遇到的部署时容量直接回落至2的问题,本质和minimum healthy percent/maximum percent参数无关,是CloudFormation默认会用模板中写死的DesiredCount值覆盖ECS服务当前的实际期望任务数导致的:自动扩缩容把DesiredCount调整为6后,只要CloudFormation模板里DesiredCount固定为2,每次部署都会把这个值重置回2,自然会触发缩容。

可落地的方案按优先级排序:

  • 直接移除CloudFormation模板中ECS服务的DesiredCount显式配置
    这是官方推荐的最优方案:当CloudFormation模板的ECS服务定义中不写DesiredCount字段时,更新栈时不会修改服务当前的DesiredCount值,自动扩缩容调整后的数值会被完整保留。此时部署时的minimum healthy percent、maximum percent就会以当前实际的期望任务数(也就是你场景中的6)为基准计算,不会出现容量跳水。
  • 在CodePipeline中增加动态获取当前任务数的前置步骤
    如果你的流程必须保留模板中的DesiredCount参数配置,可在触发CloudFormation部署的阶段前,加一个自定义执行步骤:
    1. 调用aws ecs describe-services命令获取当前服务的实际期望任务数
    2. 将该数值作为动态参数传入CloudFormation更新栈的请求中,替换模板默认的2
      这样部署时的DesiredCount就是当前实际运行的数值,部署阶段的容量基准就不会出错。
  • 额外适配自定义比例的部署需求
    如果你需要部署时按当前实际任务数的特定比例启动新任务,可在上述第二步的自定义步骤中增加计算逻辑:拿到当前任务数后,按你需要的比例(比如120%)计算出目标值,再传入CloudFormation即可。

配套参数建议

部署时如果要保证全程容量不低于当前负载要求,可将ECS服务的minimum healthy percent设为100%,maximum percent设为200%,这样部署流程会先启动和当前任务数等量的新任务,健康检查通过后再下线旧任务,全程不会出现容量不足的情况。


内容的提问来源于stack exchange,提问作者gaxunil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:06:04