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

Terraform报错:azuredevops_group含for_each需访问特定实例

解决Terraform中for_each资源的输出报错问题

报错原因

你遇到的错误是因为azuredevops_group.group启用了for_each,此时该资源不再是单个对象,而是一个键值对映射(键为var.object_ids中的每个元素)。直接通过azuredevops_group.group.origin_id访问属性会失败,因为Terraform无法确定你要访问哪个实例的属性。

修正模块内的输出定义

针对for_each创建的资源,需要用for表达式遍历所有实例,将属性整理为映射或列表输出。修改模块内的输出代码如下:

output "group_origin_ids" {
  value = {
    for origin_id, group in azuredevops_group.group : origin_id => group.origin_id
  }
}

output "group_ids" {
  value = {
    for origin_id, group in azuredevops_group.group : origin_id => group.id
  }
}

这里输出的是键值对映射,键对应传入的object_ids元素,值对应资源的origin_id或id属性,结构清晰且符合for_each的资源特性。

调整调用模块后的本地变量

由于你的module "groups"也使用了for_each(基于local.all_groups循环),调用时需要遍历所有模块实例并合并输出结果。修改本地变量定义:

locals {
  group_ids = merge([
    for group_name, group_mod in module.groups : group_mod.group_origin_ids
  ]...)

  group_ids_x = merge([
    for group_name, group_mod in module.groups : group_mod.group_ids
  ]...)
}

merge函数会把所有模块实例输出的映射合并为一个大的映射,方便后续使用。

补充说明

你之前尝试的origin_id[*]是针对count参数创建的资源(列表类型)的写法,而for_each创建的是映射类型,必须用for表达式来遍历处理,这是两种循环方式的核心区别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:50:04