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

如何通过AWS CDK将ALB设置为NLB目标组的目标?

解决AWS CDK中将ALB配置为NLB目标组目标的类型错误问题

你遇到的错误是因为ApplicationLoadBalancer实例本身没有实现INetworkLoadBalancerTarget接口,无法直接作为NetworkTargetGroup的目标传入。需要用CDK提供的LoadBalancerTarget.fromApplicationLoadBalancer()方法将ALB包装成符合要求的目标类型。

修改后的代码片段

在你的NLB目标组部分,替换原有的注释代码,使用包装后的ALB作为目标:

import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2';

// 保留你原有的nlb和nlbListener代码...

const nlbTargetGroup = new elbv2.NetworkTargetGroup($this, `BackendNLBTargetGroup-${stage}`, {
    port: 80,
    vpc: vpc,
    targetType: elbv2.TargetType.ALB,
    // 使用包装方法将ALB转换为合法的网络负载均衡目标
    targets: [elbv2.LoadBalancerTarget.fromApplicationLoadBalancer(service.loadBalancer)]
});

nlbListener.addTargetGroups(`BackendNLBAddingTargetGroup-${stage}`, nlbTargetGroup);

另一种写法:先创建目标组再添加目标

如果你更倾向于分步操作,也可以先创建空的目标组,再通过addTarget方法添加包装后的ALB:

const nlbTargetGroup = new elbv2.NetworkTargetGroup($this, `BackendNLBTargetGroup-${stage}`, {
    port: 80,
    vpc: vpc,
    targetType: elbv2.TargetType.ALB
});

// 添加ALB目标
nlbTargetGroup.addTarget(elbv2.LoadBalancerTarget.fromApplicationLoadBalancer(service.loadBalancer));

nlbListener.addTargetGroups(`BackendNLBAddingTargetGroup-${stage}`, nlbTargetGroup);

关键说明

  • LoadBalancerTarget.fromApplicationLoadBalancer()方法会生成符合INetworkLoadBalancerTarget接口要求的对象,自动处理ALB的目标注册逻辑。
  • 确保你的ALB和NLB处于同一个VPC中,且目标组的端口与ALB的监听端口匹配(这里都是80,符合要求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:29:50