模块输出用作其他模块的输入,特别是 for_each

问题描述 投票:0回答:1

我需要有关以下用例的一些指导。我有一个堆栈需要创建 30 个 aws 目标组。因此,我使用带有 for_each 和 diff 参数的模块并创建 30 个目标组。现在稍后我需要创建 30 个侦听器转发规则,其中我必须传递上述目标组的 arn 的输出。我收到需要字符串的错误。我确信输出是一个字符串,当我多次调用模块而不使用 for_each 时它会起作用。

    module "listener_rule_Models" {
  source = "git::https://mycompany/_git/terraform-aws-alb-listener-rule"
    for_each = {
      "models" = {
        tg_arn = module.tgLOGIN["MODELS"].tg_arn
        forwarding_path = ["/my_service.application_path*"]
      },
      "indexEngine" = {
        tg_arn = module.tgLOGIN["MODELS"].tg_arn
        forwarding_path = ["/my_service2.application_path*"]
      }
    }
  listener_arn = module.lis-Consolidated81.listener_arn
  tg_arn       = each.value
  forwarding_path = [each.value]
}

错误:模块参数的值无效

在 main.tf 第 181 行,模块“listener_rule_Models”中: 181: tg_arn = 每个.值

给定值不适合定义在的子模块变量“tg_arn” .terraform\modules\listener_rule_Models ariables.tf:6,1-18:需要字符串。

错误:模块参数的值无效

在 main.tf 第 181 行,模块“listener_rule_Models”中: 181: tg_arn = 每个.值

给定值不适合定义在的子模块变量“tg_arn” .terraform\modules\listener_rule_Models ariables.tf:6,1-18:需要字符串。

错误:模块参数的值无效

在 main.tf 第 182 行,模块“listener_rule_Models”中: 182: 转发路径 = [each.value]

给定值不适合子模块变量“forwarding_path” 定义于 .terraform\modules\listener_rule_Models ariables.tf:17,1-27: 元素 0:需要字符串。

错误:模块参数的值无效

在 main.tf 第 182 行,模块“listener_rule_Models”中: 182: 转发路径 = [each.value]

for-loop terraform each terraform-provider-aws
1个回答
0
投票

您错过了引用映射中的各个键,而是为 tg_arn 和forwarding_path 一起引用了映射。

module "listener_rule_Models" {
  source = "git::https://mycompany/_git/terraform-aws-alb-listener-rule"
  for_each = {
    "models" = {
      tg_arn          = module.tgLOGIN["MODELS"].tg_arn
      forwarding_path = ["/my_service.application_path*"]
    },
    "indexEngine" = {
      tg_arn          = module.tgLOGIN["MODELS"].tg_arn
      forwarding_path = ["/my_service2.application_path*"]
    }
  }
  listener_arn    = module.lis-Consolidated81.listener_arn
  tg_arn          = each.value.tg_arn
  forwarding_path = [each.value.forwarding_path]
}
© www.soinside.com 2019 - 2024. All rights reserved.