首页 > 解决方案 > Terraform - 从模块创建输出,但 splat 运算符不起作用

问题描述

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

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

解决方案


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

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

values将从您的module.stamp.


推荐阅读