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

AWS CloudFormation创建ECS栈时NLB监听器规则不支持错误求助

问题原因

你收到的报错是因为网络负载均衡(NLB)的TCP/TLS监听器不支持ListenerRule规则配置。ListenerRule是七层应用负载均衡(ALB)特有的功能,用于基于域名、请求路径、源IP等七层属性做流量分发,NLB工作在传输层,没有七层报文解析能力,原生不支持规则配置。

适配你当前场景的修改方案

你当前的模板只需要将单端口流量转发到单个ECS服务对应的目标组,不需要额外的路由规则,直接按以下步骤修改模板即可:

  • 直接删除整个ListenerRule资源定义块,你已经在LoadBalancerListener中配置了默认转发到目标组的动作,完全满足需求
  • 修改ECSService的DependsOn配置,移除对已删除的ListenerRule的依赖,改为依赖负载均衡监听器即可

修改后的相关代码片段

# 负载均衡部分保留以下即可,删除原有的ListenerRule块
  LoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Name: !Ref Name
      Subnets: !Ref Subnets
      Type: network
      Scheme: internal
      Tags:
        - Key: Name
          Value: !Ref Name

  LoadBalancerListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      LoadBalancerArn: !Ref LoadBalancer
      Port: 80
      Protocol: TCP
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref TargetGroup

  TargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      Name: !Sub ${Name}-tg
      VpcId: !Ref VPC
      Port: 80
      Protocol: TCP
      TargetType: ip

# ECS服务部分修改DependsOn配置
  ECSService:
    Type: AWS::ECS::Service
    DependsOn: LoadBalancerListener
    Properties:
      Cluster: !Ref ECSCluster
      Role: !Ref ECSIAM
      DesiredCount: !Ref DesiredCount
      TaskDefinition: !Ref ECSTaskDefinition
      LoadBalancers:
        - ContainerName: "website-service"
          ContainerPort: 80
          TargetGroupArn: !Ref TargetGroup
特殊场景适配说明

如果你后续需要基于域名、路径等做多服务流量分发,需要将负载均衡的Type从network改为application,切换为ALB后才可以正常使用ListenerRule配置路由规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:36:00