具有两个负载均衡器的 AWS CodeDeploy(Blue/Green) 部署组

AWS CodeDeploy(Blue/Green) Deployment Group with Two Load balancers

我的架构是这样的,

Internal ALB -> Target Group 1 
                               \ 
                                 -> Fargate Task (using ECS Service)
                               /
External ALB -> Target Group 2 

此 ECS 服务运行完全正常。对于内部和外部流量,我能够使用负载平衡器完成任务。

我想创建一个与 CodeDeploy 应用程序相对应的 Blue/Green CodeDeploy 部署组,它将在需要时成功部署该服务。所有这些我都在使用 CLI。

问题是因为我使用了两个负载均衡器,所以我无法将它们关联起来以创建 CodeDeploy 部署组。是否有关于如何创建此部署组的任何指示?

此外,我想使用这个部署组创建一个管道,以便每次更改代码时都可以部署应用程序。

总的来说,我想实现服务应该使用内部 ALB 在 VPC 内部访问,并且还应该使用其 public ALB 在外部访问。所以我创建了两个 ALB 并为这些 ALB 创建了侦听器,然后将这些目标组附加到 ECS 服务。

目前 CodeDeploy 不支持使用多个目标组,只有在使用滚动更新部署方式时才支持它们 1(非 blue-green 操作):

Multiple target groups are only supported when the service uses the rolling update (ECS) deployment controller type. If you are using the CodeDeploy or an external deployment controller, multiple target groups are not supported.

如果服务可行,建议的解决方法是使用滚动 ECS 更新而不是 Blue/Green CodeDeploy。如果这不可能,唯一的其他解决方法是将服务分成两部分(每个端口一个)或开发一个自定义 Lambda 函数,该函数将 运行 作为生命周期挂钩 2 的一部分, Lambda 函数必须负责设置额外的目标组。