【问题标题】:Terraform: Convert list of object to list of single element from objectTerraform:将对象列表转换为对象中的单个元素列表
【发布时间】:2020-07-14 20:29:06
【问题描述】:

我有一个来自 terraform 变量的对象列表

variable "persons" {
  type = list(object({
    name = string,
    phonenumber = string,
    tshirtSize = string
  }))
    description = "List of person"
}

现在我想要一个人名列表,以便我可以使用它来定义 AWS 资源

如何将此对象列表转换为名称列表 ["bob", "amy", "jane"]

我使用的是 terraform 0.12.24,不过如果需要可以升级

【问题讨论】:

    标签: terraform


    【解决方案1】:

    更新答案
    使用 splat 表达式

    var.persons[*].name
    

    https://www.terraform.io/docs/configuration/expressions.html#splat-expressions

    原答案:
    我可以在本地文件中做到这一点

    locals {
      names = [
        for person in var.persons:
        person.name
      ]
    }
    

    补充阅读 见:https://www.hashicorp.com/blog/hashicorp-terraform-0-12-preview-for-and-for-each/

    【讨论】:

    • 这是一个很好的答案!您可能还对splat expression 速记:var.persons[*].name 感兴趣。该表达式页面是 Terraform 语言的最佳参考; 0.12 公告博客文章已过时且未更新。
    • 谢谢,我会试试的,如果你想让它成为答案,我会接受。 :)
    猜你喜欢
    • 2013-08-14
    • 2020-11-21
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2015-09-03
    • 1970-01-01
    相关资源
    最近更新 更多