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

Terraform模块返回值异常:预期列表映射却得单元素元组

Terraform返回列表映射失败,得到单元素元组的解决方法

你的问题出在多套了一层列表语法。var.assignment_policies[*].requestor_settings.requestor本身通过splat表达式,已经返回了一个列表的列表(因为每个assignment_policy里的requestor都是列表),你再用[]把它包起来,就变成了一个只包含这个列表的元组(或列表),所以才会显示local.requestors is list of tuple with 1 element。

针对你的场景,分两种情况解决:

情况1:合并所有policy的requestor为一个列表映射

如果assignment_policies以后可能有多个元素,想把所有policy里的requestor合并成一个大的列表映射,用flatten函数:

locals {
  requestors = flatten(var.assignment_policies[*].requestor_settings.requestor)
}

这样处理后,local.requestors就是包含两个映射的列表,符合你的预期。

情况2:仅取第一个policy的requestor

如果确定assignment_policies永远只有一个元素,直接索引访问第一个元素的requestor即可:

locals {
  requestors = var.assignment_policies[0].requestor_settings.requestor
}

这样得到的就是你想要的包含两个映射的列表。

验证一下,用你提供的assignment_policies值,两种方法都会返回:

[
  {
    object_id    = "test-grp-3"
    subject_type = "groupMembers"
  },
  {
    object_id    = "example@example.com"
    subject_type = "singleUser"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:45:54