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

使用CDK配置NLB+Fargate服务UDP端口映射时构建报错,是否支持该配置?

问题:为带NLB的ECS Fargate服务配置UDP端口映射时CDK构建失败

尝试为搭载Network Load Balancer(NLB)的ECS Fargate服务添加UDP端口映射,执行CDK构建时失败,报错信息如下:

Error: Container '**-ECS-Task-Container' has no mapping for port undefined and protocol tcp. Did you call "container.addPortMappings()"?
at FargateTaskDefinition._validateTarget (/../node_modules/aws-cdk-lib/aws-ecs/lib/base/task-definition.js:1:7371)
at FargateService.loadBalancerTarget (/../node_modules/aws-cdk-lib/aws-ecs/lib/base/base-service.js:1:9940)
at FargateService.get defaultLoadBalancerTarget [as defaultLoadBalancerTarget]

相关代码示例:

const container = taskDefinition.addContainer(props.stackName + '-ECS-Task-Container', {
    containerName: props.stackName + '-ECS-Container',
    image: serviceImage,
    memoryLimitMiB: 512,
    cpu: 256,
    portMappings: [
        {
            containerPort: 7950,
            hostPort: 7950,
            protocol: EcsProtocol.UDP
        },
    ]
});

或者:

container.addPortMappings({
        containerPort: 7950,
        hostPort: 7950,
        protocol: EcsProtocol.UDP
    }
);

请问是否可以通过CDK为带NLB的Fargate服务配置UDP端口?


解答

  • 可以通过CDK配置,但报错的核心原因是:CDK默认的defaultLoadBalancerTarget逻辑会自动查找容器的TCP端口映射进行校验,而你的容器仅配置了UDP端口,导致校验失败。
  • 解决方法是绕过默认的负载均衡绑定逻辑,手动创建UDP目标组、NLB监听器,并将Fargate服务注册到目标组:

关键代码示例

// 1. 创建UDP协议的目标组
const udpTargetGroup = new elbv2.NetworkTargetGroup(this, 'UdpTargetGroup', {
    port: 7950,
    protocol: elbv2.Protocol.UDP,
    targetType: elbv2.TargetType.IP,
    vpc: props.vpc,
});

// 2. 为NLB添加UDP监听器并关联目标组
nlb.addListener('UdpListener', {
    port: 7950,
    protocol: elbv2.Protocol.UDP,
    defaultTargetGroups: [udpTargetGroup],
});

// 3. 创建Fargate服务后,手动注册到UDP目标组
const fargateService = new ecs.FargateService(this, 'FargateService', {
    cluster: cluster,
    taskDefinition: taskDefinition,
    // 不要使用默认的loadBalancers配置项
});
udpTargetGroup.addTarget(fargateService);
  • 额外注意:任务定义中需保留你原本的UDP端口映射配置,确保容器端口与协议匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:10:23