Terraform - 如何按键对地图列表进行排序

Mig*_*rez 1 terraform

如何在 Terraform 中按特定键对地图/对象列表进行排序?

例子:

[
  {"name":"b", "value":"some value"},
  {"name":"c", "value":"some value"},
  {"name":"a", "value":"some value"},
  {"name":"d", "value":"some value"}
]
Run Code Online (Sandbox Code Playgroud)

所需输出

[
  {"name":"a", "value":"some value"},
  {"name":"b", "value":"some value"},
  {"name":"c", "value":"some value"},
  {"name":"d", "value":"some value"}
]
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 5

如果你只是想排序name,马特的评论是最好的。但如果您想要其他东西,例如value按可能的重复项进行排序,您可以按如下方式进行:

locals {

   in_list = [
    {"name":"b", "value":"some value3"},
    {"name":"c", "value":"some value1"},
    {"name":"a", "value":"some value5"},
    {"name":"d", "value":"some value5"}
  ]
  
  #get sorted values (not names) with possible duplicates
  sorted_values = distinct(sort(local.in_list[*].value))

  sorted_list = flatten(
        [for value in local.sorted_values:
            [ for elem in local.in_list: 
                 elem if value == elem.value
            ]     
        ]) 
}
Run Code Online (Sandbox Code Playgroud)