使用CODE_DEPLOY部署控制器的ECS Fargate服务无法强制新部署,求解决办法
解决ECS CODE_DEPLOY部署控制器下无法使用
--force-new-deployment的问题 问题原因
当ECS服务的deploymentController设置为CODE_DEPLOY时,ECS原生的--force-new-deployment参数会被限制使用——这是AWS的设计逻辑:此时服务的部署流程完全由CodeDeploy接管,ECS不再直接处理部署触发请求,必须通过CodeDeploy的相关命令来发起新部署。
解决办法
直接使用AWS CodeDeploy CLI命令触发新部署,具体分两种场景:
1. 触发基于当前任务定义的部署
如果你的ECS任务定义已经是最新版本,直接执行以下命令即可触发重新部署:
aws deploy create-deployment \ --application-name <你的CodeDeploy应用名称> \ --deployment-group-name <你的CodeDeploy部署组名称>
2. 指定特定版本的任务定义部署
如果需要部署某个特定版本的任务定义,可以通过--revision参数指定:
aws deploy create-deployment \ --application-name <你的CodeDeploy应用名称> \ --deployment-group-name <你的CodeDeploy部署组名称> \ --revision revisionType=ECS,ecsService=cluster=<你的ECS集群名>,serviceName=<你的ECS服务名>,taskDefinition=<任务定义ARN>:<版本号>
额外说明
在CODE_DEPLOY部署模式下,所有部署相关的操作(包括强制重新部署)都需要通过CodeDeploy来完成,ECS的update-service命令仅能处理部分非部署类的服务配置变更(如调整任务数量),无法触发部署流程。
内容的提问来源于stack exchange,提问作者power-cut
相关产品推荐
相关产品推荐

