新部署前终止所有ECS任务:AWS是否有官方实现方案?
AWS ECS 全量替换部署(先排空再部署)的官方方案
针对你提到的不允许新旧版本容器共存的场景,AWS ECS 提供两种官方方案实现先完全排空旧任务,再部署新版本的部署策略,无需自行编写bash脚本:
1. 结合 CodeDeploy 蓝绿部署(推荐用于需精细化控制的场景)
将 ECS 服务的部署类型配置为 EXTERNAL,搭配 AWS CodeDeploy 的蓝绿部署能力:
- 在 CodeDeploy 部署组中选择「终止旧版任务」的策略,待新版本任务通过健康检查后,一次性停止所有旧任务;
- 该方案能严格避免新旧版本同时运行,还内置健康验证、自动回滚机制,降低部署风险。
2. 调整 ECS 服务部署参数(快捷直接方案)
通过修改服务的部署参数强制实现先排空再部署:
- 将服务的
minimumHealthyPercent设置为0,maximumPercent设置为100; - 触发部署时,ECS 会先逐步终止所有旧任务(因最小健康百分比允许0个在线任务),再启动新版本任务;
- 注意:此方式会导致短暂停机,需提前评估业务影响,同时确保任务定义配置了可靠的健康检查,防止新版本启动失败后服务不可用。
AWS CLI 命令示例
更新服务并触发全量替换部署:
aws ecs update-service --cluster <你的集群名称> --service <你的服务名称> --task-definition <新版任务定义ARN> --minimum-healthy-percent 0 --maximum-percent 100
方案对比
- 若需要灰度验证、一键回滚等精细化控制,优先选择 CodeDeploy 蓝绿部署;
- 若业务可接受短暂停机,且追求操作简便,调整服务参数的方式更高效。
内容的提问来源于stack exchange,提问作者Per
相关产品推荐
相关产品推荐

