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

如何将Terraform的Map类型输出作为字符串输入传入其他模块?

Terraform:将模块输出的Map类型值作为其他模块的String输入

单个VMSS模块的正确引用方式

你当前代码中访问Map输出值时存在语法错误:引用字符串类型的Map键必须用双引号包裹。修改vmss_test1模块的health_probe_id参数即可:

module "vmss_test1" {
  # 其他参数保持原有配置不变
  health_probe_id = module.test1-lb.healthprobe_id["test1"] 
}

如果要为test2创建对应的VMSS模块,只需将键替换为"test2":

module "vmss_test2" {
  # 对应test2的VMSS配置参数
  health_probe_id = module.test1-lb.healthprobe_id["test2"] 
}

批量创建对应所有探针的VMSS模块

若你的探针与VMSS是一一对应的关系,可通过for_each批量创建VMSS模块,避免重复编写代码:

module "vmss" {
  source                          = ""
  for_each                        = module.test1-lb.healthprobe_id
  
  vmscaleset_name                 = "vmss-${each.key}"
  resource_group_name             = ""
  resource_group_name_platform    = ""
  disable_password_authentication = ""
  subnet_name                     = ""
  availability_zones              = []
  instances_count                 = ""
  virtual_machine_size            = ""
  image_name                      = ""
  loadbalancer_name               = module.test1-lb.lb_name    
  loadbalancer_backendpool_name   = each.key
  location                        = var.region
  public_key_name                 = ""
  virtual_network_name            = ""
  default_cap                     = ""
  max_cap                         = ""
  min_cap                         = ""
  zone_balance                    = true
  tags                            = ""
  health_probe_id                 = each.value
  upgrade_mode                    = ""
}

这里通过for_each遍历LB模块输出的healthprobe_id Map:

  • each.key对应探针名称(test1、test2)
  • each.value直接取对应探针的ID字符串,完美匹配VMSS模块要求的string类型输入

关键注意事项

  • Map键语法要求:Terraform中访问字符串类型的Map键必须使用["key_name"]格式,不能省略双引号,否则会被识别为未定义变量。
  • 自动依赖管理:Terraform会通过模块输出的引用自动推断依赖关系,无需手动添加depends_on = [module.test1-lb]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:46:05