terraform hcl 对象转换

terraform hcl object transformation

有一个像

的对象
variable "user_role" {
  type = map(list(string))
}

user_role = {
 user_a: ['role_a', 'role_b', 'role_c']
 user_b: ['role_a', 'role_c']
 user_c: ['role_c']
}

我目前拥有的只是简单的扁平化为:

role-user = flatten([
    for member in keys(var.user_role): [
      for value in var.user_role[member] : {
        role = value
        member = member
      }
    ]
  ])

需要对其进行改造使其具有密钥的作用。

role_user = {
  role_a: ['user_a', 'user_b']
  role_b: ['user_a']
  role_c: ['user_a', 'user_b', 'user_c']
}

关于如何实现这一点有什么想法吗?谢谢

您可以按如下方式进行(不要忘记 ...):

role-user = merge([
           for user, roles in var.user_role:
            {
              for role in roles: user => role...
            }
           ]...)

根据您的示例,您似乎在描述 the built-in transpose function:

的功能
locals {
  role_user = transpose(var.user_role)
}