带有 splat 运算符的模块输出不起作用

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

我定义了一个带有循环的模块:

module "stamp" {
  for_each = toset(var.stamps)
  source   = "./modules/stamp"
  ...
}

从此我尝试创建一个输出列表,基于这个示例

output "stamp_locations" {
  value = module.stamp.*.location
}

但是,这可以验证,但是在

terraform plan
上我收到错误:

│ Error: Unsupported attribute
│ 
│   on output.tf line 3, in output "stamp_locations":
│    3:   value = module.stamp.*.location
│ 
│ This object does not have an attribute named "location"

最后只有这个有效:

output "stamp_locations" {
  value = [for instance in module.stamp : instance.location]
}

所以我想知道:我是否犯了任何错误,或者模块和循环不支持 splat 语法?

terraform
1个回答
11
投票

module.stamp
是一张地图,而不是一个列表。以下内容应适用于您的地图:

value = values(module.stamp)[*].location 

values
将从您的
module.stamp
返回值列表。

© www.soinside.com 2019 - 2024. All rights reserved.