Terraform HCL - 将列表转换为对象地图?

Terraform HCL - Convert List to Map of Objects?

我有一个字符串列表,我需要将其转换为映射,这样当我稍后对其执行 jsonencode 时,它不会创建数组。这是因为在 json-schema 中 properties: { ... } 不是一个属性列表,而是一个映射。

所以我列表中的每个 属性 都应该作为键值映射出现。其中键是 属性 名称,值是另一个映射或对象 { "type" = "string" }.

additional-properties = [
  for prop in local.prop-list:
    { prop = { "type" = "string" }}
]

我的第一次尝试以地图对象列表结束,而不是属性地图。

有没有更好的方法来完成这个?

我的最终目标是能够在 json 架构中使用 json 对此编码 API 网关模型 -

"properties": {
  "prop1": {
    "type": "string"
  },
  "prop2": {
    "type": "string"
  }
}

当您将 additional-properties 的分配指定为:

[
  for prop in local.prop-list:
    { prop = { "type" = "string" }}
]

我们可以删除 lambda 和变量以查看构造函数的结果类型将是:

[{{}}]

这是一个嵌套在 List 中的 Map。

由于你想要一个具有{ prop { type = string } }结构的嵌套Map,我们需要相应地指定构造函数:

additional-properties = { # outside map with "prop" key and map value
  for prop in local.prop-list:
    prop => { "type" = "string" } # nested map with "type" key and "string" value
}

另请注意从 ==> 的更改,以实现正确的 lambda 迭代器映射键值对分配语法。