如何重构Terraform含重复键的map列表,合并相同键下的键值对
你可以直接通过Terraform内置的group_by、merge函数完成结构转换,无需手动修改列表内容,示例代码如下:
locals { # 你原始的snap_id_list raw_snap_id_list = [ { "3" = { "/x01" = "snap-01397a07b574e781f" } }, { "2" = { "/x04" = "snap-035d6c4165d34041a" } }, { "1" = { "/x04" = "snap-07bc61be86cb0b3a2" } }, { "3" = { "/x04" = "snap-0aa3a4d1cbd87531b" } }, { "1" = { "/x01" = "snap-0e501f7d2798eeb70" } }, { "2" = { "/x01" = "snap-0fe2fe503e433fdbd" } }, ] # 按数字键分组,合并同组的挂载点-快照ID映射 grouped_snaps = group_by( entry => keys(entry)[0], local.raw_snap_id_list ) # 转换为你需要的列表结构 snap_id_list = [ for id, snaps in local.grouped_snaps : { (id) = merge(snaps...) } ] }
如果需要验证输出结果,可以添加如下output配置,执行terraform plan即可查看和你预期完全一致的结构:
output "snap_id_list" { value = local.snap_id_list }
内容的提问来源于stack exchange,提问作者SLS
相关产品推荐
相关产品推荐

