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

如何通过Terraform关联AWS网络负载均衡与目标组?

问题:Terraform关联Network Load Balancer与Target Group报错

我已在AWS控制台创建了target group(目标组)和network load balancer(网络负载均衡),希望通过Terraform将二者关联,尝试了以下代码:

resource "aws_lb_target_group_attachment" "test" {
    target_group_arn = "arn:aws:elasticloadbalancing:us-east-1:12345:targetgroup/test-tg/c3a301edff7c8274"
    target_id = "arn:aws:elasticloadbalancing:us-east-1:12345:loadbalancer/net/test-nlb/05019d0fbcc689ad"
}

但出现如下错误:

Error: registering targets with target group: ValidationError: 'arn:aws:elasticloadbalancing:us-east-1:12345:loadbalancer/net/test-nlb/05019d0fbcc689ad' is not a valid Application Load Balancer ARN

AWS Provider配置确认无误:

provider "aws" {
    region = "us-east-1"
}

请问完成该关联操作还缺失了什么?


问题原因与解决方法

  • 错误核心原因:aws_lb_target_group_attachment资源的作用是给目标组注册EC2实例、IP地址、Lambda函数这类后端目标,而非关联负载均衡器和目标组。将NLB的ARN填入target_id字段,不符合该字段的参数要求,因此触发报错。

  • 正确关联方式:负载均衡器与目标组的关联,需通过给NLB创建监听器并配置转发规则实现,Terraform中的具体实现方式如下:

    resource "aws_lb_listener" "test_nlb_listener" {
      load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-1:12345:loadbalancer/net/test-nlb/05019d0fbcc689ad"
      port              = "80" # 根据业务需求调整端口
      protocol          = "TCP" # NLB默认使用TCP协议,可按需修改为UDP/TCP_UDP等
    
      default_action {
        type             = "forward"
        target_group_arn = "arn:aws:elasticloadbalancing:us-east-1:12345:targetgroup/test-tg/c3a301edff7c8274"
      }
    }
    

    若需配置多路径/多域名的复杂转发规则,可在上述监听器基础上,额外创建aws_lb_listener_rule资源补充规则。

  • 兼容性检查:确认目标组类型与NLB兼容——Network Load Balancer仅支持instance或ip类型的目标组,不支持lambda类型目标组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:42:12