ECS服务部署控制器能否从ECS改为CODE_DEPLOY?含容量提供商策略场景
AWS ECS部署控制器修改的限制说明
这确实是AWS ECS的设计限制——你没法在已经使用CapacityProviderStrategy的ECS服务上修改部署控制器类型为CODE_DEPLOY,创建这类服务时也没法选CODE_DEPLOY控制器,只能通过重建服务来实现。
具体细节:
- 创建服务阶段,一旦选了CapacityProviderStrategy,控制台会直接禁用CODE_DEPLOY部署控制器选项。这是因为ECS的CapacityProviderStrategy和CODE_DEPLOY部署控制器的底层架构存在兼容性约束,二者不能在同一个服务实例中共存。
- 控制台修改服务时看不到对应选项、CLI命令报错,都是这个限制的体现。顺带提一句,你用的CLI参数格式其实不对,正确格式应该是
aws ecs update-service --cluster=my-cluster --service=my-service --region=us-east-2 --deployment-controller type=CODE_DEPLOY(注意参数是--deployment-controller而非下划线,且直接跟键值对),但就算格式对了,因为设计限制,这个操作还是会失败。
解决办法:
要用上CODE_DEPLOY部署控制器,只能重新建服务:
- 先把原服务的任务定义、容量策略等配置信息备份好
- 新建服务时,先选CODE_DEPLOY作为部署控制器类型,再根据需求配置CapacityProviderStrategy(注意:Fargate容量提供商在部分区域支持和CODE_DEPLOY搭配,但EC2类型的CapacityProviderStrategy和CODE_DEPLOY的组合要确认当前区域是否支持)
- 新服务部署完成后,逐步把流量迁过去,再删掉原服务
内容的提问来源于stack exchange,提问作者starbirdtech383
相关产品推荐
相关产品推荐

