Terraform 地形hcl对象变换

Terraform 地形hcl对象变换,terraform,hcl,Terraform,Hcl,有一个像 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)

有一个像

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']
}

有没有办法达到这个目标?谢谢

您可以这样做(不要忘记):


根据您的示例,您似乎正在描述以下功能:


似乎是相同的,-用户作为密钥。但我需要一个角色作为关键。我改了一点,但运气不好
user\u role={user\u a:[“role\u a”,“role\u b”,“role\u c”]user\u b:[“role\u c”]}role\u user=merge([对于用户,本地用户中的角色:{对于角色中的角色:role=>user…])
---------地形控制台>本地用户{“role\u a”=[“user\u b”],[对于用户,角色:{,]“role_c”=[“user_c”,]}对不起,这么乱,我不明白为什么要换行字符ignored@JohnnieWalker对不起,我不明白你在问什么。你已经接受了其他答案。也许可以问一下?
role-user = merge([
           for user, roles in var.user_role:
            {
              for role in roles: user => role...
            }
           ]...)
locals {
  role_user = transpose(var.user_role)
}