You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ECS服务注册为非默认端口的Network Load Balancer目标

问题根因

你直接将Ec2Service实例传入目标组的targets配置时,CDK默认会读取任务定义中首个容器的默认端口作为注册端口,不会采用你在addTargets中填写的port参数,因此两个目标组最终都指向了容器的80端口。

解决方案

调用ECS服务的loadBalancerTarget方法显式指定要绑定的容器名称和容器端口,就能实现不同目标组绑定不同容器端口的需求。

代码修改示例

首先确保你的代理任务定义中已经为容器声明了80和443两个端口映射,之后调整负载均衡监听器的配置即可:

// HTTP监听器配置保持逻辑,显式指定绑定容器80端口
loadbalancer.addListener('HTTPListener', {
  port: 80
})
  .addTargets('HTTPTarget', {
    port: 80,
    targets: [
      proxyService.loadBalancerTarget({
        containerName: 'proxy', // 替换为你任务定义中代理容器的实际名称
        containerPort: 80
      })
    ]
  })

// HTTPS监听器显式指定绑定容器443端口
loadbalancer.addListener('HTTPSListener', {
  port: 443,
})
  .addTargets('HTTPSTarget', {
    port: 443,
    targets: [
      proxyService.loadBalancerTarget({
        containerName: 'proxy', // 替换为你任务定义中代理容器的实际名称
        containerPort: 443
      })
    ]
  })

配置验证

修改后重新部署,CDK生成的CloudFormation模板中两个目标组会分别带上对应的Port配置,ECS服务会自动将任务的对应端口注册到对应目标组,无需手动修改控制台配置。


内容的提问来源于stack exchange,提问作者m90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 11:54:03