能否通过AWS CodeDeploy为ECS Fargate实现共享ALB下的蓝绿部署?
基于共享ALB和主机头规则实现ECS Fargate蓝绿部署的方案
核心结论
可以仅借助这台共享ALB实现ECS Fargate的蓝绿部署,但无需在CodeDeploy中直接配置主机头条件——主机头规则属于ALB的前置配置,CodeDeploy负责的是目标组的切换与流量转移。
具体实现逻辑
- 前置配置:在共享ALB上为你的Fargate服务创建专属的主机头转发规则,绑定当前运行版本的蓝色目标组。
- CodeDeploy部署组配置:指定该服务对应的蓝色目标组,以及用于部署新版本的绿色目标组(可预先创建,或由CodeDeploy自动生成)。
- 部署流程:
- CodeDeploy将新版本Fargate任务注册到绿色目标组。
- 完成健康检查后,CodeDeploy会自动更新ALB的主机头规则,将流量从蓝色目标组切换到绿色目标组(支持按权重分流或全量切换)。
- 若需回滚,只需将ALB规则切回蓝色目标组即可。
关键注意事项
- 权限配置:确保CodeDeploy服务角色拥有
elasticloadbalancing:ModifyListener和elasticloadbalancing:DescribeListeners权限,用于修改ALB的转发规则。 - 规则优先级:共享ALB上的各服务主机头规则需设置合理优先级,避免流量路由冲突。
- 目标组独立性:每个服务的蓝/绿目标组需独立,不要与其他服务的目标组混淆。
POC验证步骤
- 手动创建绿色目标组,注册新版本Fargate任务并确认健康状态。
- 手动修改共享ALB的主机头规则,将流量指向绿色目标组,验证业务正常。
- 配置CodeDeploy部署组,关联蓝/绿目标组和共享ALB,执行自动化部署,确认流程是否自动完成规则切换。
内容的提问来源于stack exchange,提问作者Seno Shue
相关产品推荐
相关产品推荐

