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

如何在Terraform中引用for_each模块的输出至另一模块?

Terraform跨模块for_each资源关联:Target Group与Listener Rule自动绑定

要实现for_each创建的Target Group和Listener Rule模块1:1自动关联,核心是利用两个模块for_each的键名对应关系,直接从Target Group模块的输出中按键取值,替代手动输入ARN。具体步骤如下:

1. 确保Target Group模块输出ARN

首先在你的aws_lb_target_group模块代码中,添加ARN的输出(如果还没加的话):

output "target_group_arn" {
  description = "目标组的ARN"
  value       = aws_lb_target_group.this.arn
}

注:这里假设模块内的Target Group资源名为aws_lb_target_group.this,如果你的模块里资源名不同,替换成实际名称即可。

2. 修改Listener Rule模块的引用逻辑

调整Listener Rule模块中listener_rule_target_group的取值方式,通过each.key关联到对应的Target Group实例:

module "aws_alb_listener_rule_ui" {
  source        = "../../terraform/modules/aws_lb_listener_rule_https"
  listener_rule = module.aws_alb_listener_ui_https.ui_lb_listener
  for_each      = var.ui_https_listener_rules

  listener_rule_host_header  = each.value["values"]
  # 关键:通过each.key匹配对应的Target Group实例,自动获取ARN
  listener_rule_target_group = module.aws_lb_target_group_ui[each.key].target_group_arn
  listener_rule_action_type  = var.ui_https_listener_rule_action_type
}

另外可以去掉depends_on,Terraform会自动通过资源引用关系推断依赖顺序,手动指定反而可能隐藏潜在问题。

3. 简化tfvars配置

既然不需要手动输入ARN,直接删掉ui_https_listener_rules里的target_group字段:

ui_https_listener_rule_action_type = "forward"
ui_https_listener_rules = {
  Application1 = {
    values = ["Host_Header_1"]
  },
  Application2 = {
    values = ["Host_Header_2"]
  },
}

补充说明

如果你的Target Group和Listener Rule的for_each键名不一致,可以在ui_https_listener_rules里新增一个字段(比如target_group_key)来指定对应Target Group的键,示例如下:

调整后的tfvars

ui_https_listener_rules = {
  Rule1 = {
    values = ["Host_Header_1"]
    target_group_key = "Application1"
  },
  Rule2 = {
    values = ["Host_Header_2"]
    target_group_key = "Application2"
  },
}

对应的Listener Rule模块引用

listener_rule_target_group = module.aws_lb_target_group_ui[each.value.target_group_key].target_group_arn

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:35:21