Terraform 0.12 - 从嵌套 for 循环生成地图/对象

2023-12-27

作为后续Terraform 0.12 嵌套 for 循环 https://stackoverflow.com/questions/56047306/terraform-0-12-nested-for-loops/57280420#57280420。我试图从嵌套循环中生成一个对象,但惨败:(

您将如何制作:

  Outputs:

  association-list = {
    "policy1" = "user1"
    "policy2" = "user1"
    "policy2" = "user2"
  }

From:

iam-policy-users-map = {
  "policy1" = [ "user1" ]
  "policy2" = [ "user1", "user2" ]
}

我尝试过多种变体:

variable iam-policy-users-map {
  default = {
    "policy1" = [ "user1" ]
    "policy2" = [ "user1", "user2" ]
  }
}

locals {
  association-map = merge({
    for policy, users in var.iam-policy-users-map : {
      for user in users : {
        policy => user
      }
    }
  })

output association-map {
  value = local.association-map
}

到目前为止成功率为零。根据变化只能得到以下内容:

错误:“for”表达式无效。 “for”表达式末尾后的额外字符。

错误:缺少属性值。 需要一个属性值,由等号 (“=”) 引入。

错误:“for”表达式无效。 构建对象时需要键表达式。

错误:缺少键/值分隔符。需要等号(“=”) 标记属性值的开始。

作为参考,以下代码能够生成地图列表:

variable iam-policy-users-map {
  default = {
    "policy1" = [ "user1" ]
    "policy2" = [ "user1", "user2" ]
  }
}

locals {    
  association-list = flatten([
    for policy, users in var.iam-policy-users-map : [
      for user in users : {
        user   = user
        policy = policy
      }
    ]
  ])
}

output association-list {
  value = local.association-list
}

Outputs:

关联列表 = [ { “政策”=“政策1” “用户”=“用户1”},{ “政策”=“政策2” “用户”=“用户1”},{ “政策”=“政策2” “用户” = “用户2” }, ]


部分答案可以在以下位置找到:https://github.com/hashicorp/terraform/issues/22263 https://github.com/hashicorp/terraform/issues/22263。 长话短说:这从一开始就是一个愚蠢的尝试,地图不能包含重复的键。

然而,我仍然有兴趣了解如何从嵌套的 for 循环生成地图。请参阅上面的第二个代码示例,生成地图列表。

编辑:上面链接的 github 问题给出了完整的答案。

“这(显然)是一个无用的结构,但我想说明它是可能的:

locals {
  association-list = {
    for policy, users in var.iam-policy-users-map:
      policy => {      // can't have the nested for expression before the key!
        for u in users:
           policy => u...
      }
  }
}

Outputs:

association-list = {
  "policy1" = {
    "policy1" = [
      "user1",
    ]
  }
  "policy2" = {
    "policy2" = [
      "user1",
      "user2",
    ]
  }
}

"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Terraform 0.12 - 从嵌套 for 循环生成地图/对象 的相关文章

随机推荐

  • 如何使用 npm httpsnippet 将代码转换为 javascript fetch?

    我正在使用 npm httpsnippet 生成客户端代码 工作正常 但后来我看到在将代码转换为 javascript 时 它正在转换为 XHR 但我需要将其转换为 javascript fetch fetch 在 HTTPSnippet
  • 从数据框中删除特定行

    我有一个数据框 例如 sub day 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 3 1 3 2 3 3 3 4 我想删除可以通过 sub 和 day 组合识别的特定行 例如 假设我想删除 sub 1 和 day 2 以
  • IE11有支持BigInt的吗?

    我试图在 stackoverflow 和 google 中寻找答案 以了解在 IE 11 中支持 BigInt 的任何方式 有没有人成功为 IE 和旧版本的 Safari 添加 BigInt 支持 目前我正在开发一个使用 BigInt 的插
  • Facebook C# SDK - .NET 3.5 和动态对象

    我已经下载了 facebook 的 Graph C SDK 这些示例非常有用且易于理解 但是当我尝试使用动态对象类型作为 FacebookApp Get me 调用的返回对象时 我遇到了困难 我以前从未使用过动力学 所以我做了一些研究 它们
  • 包含 TypeScript 编译器的 src 之外的文件夹

    我需要添加一个生成的文件夹 它既不是全局环境的一部分 也不在src 为源文件提供模块作为有效的命名空间 如下所示 root src component test model ts import IBuilding from api inte
  • C++11:具有对数求值深度的编译时数组

    实现 C 11 数组的一种方法是使用模板 部分特化和constexpr 如下 include
  • 使用泛型重载方法[重复]

    这个问题在这里已经有答案了 当我尝试创建两个静态重载方法时 出现编译错误 谁能解释一下吗 public class A public static void a Set
  • Angular 5 仅对模糊进行验证?

    我想知道是否可以在模糊时以反应形式进行验证 此时你可以设置updateOn blur 但输入字段的值不会在输入时更新 就我而言 我需要在每次击键时更新值 因为我用它进行计算并向用户显示结果 验证应该只在模糊时进行 thx EDIT 我使用
  • 如何使用 JPA 搜索字段上的子字符串?

    我的应用程序使用 JPA 访问后端数据库 我有一个映射到表的 Java 类 该类有一个字符串字段 称为状态 由一系列 0 和 1 组成 我需要根据字段的第二个字符选择一些记录 以下是我在不使用 JPA 的情况下可以执行的操作 我正在使用 M
  • 未调用搜索控制器的更新搜索结果

    有谁知道为什么这里不叫它 谢谢 我认为我正确地设置了代表 class LocationSearchController UIViewController UISearchResultsUpdating UINavigationBarDele
  • ArrayAdapter 的 getViewTypeCount 和 getItemViewType 方法

    有人可以用简单的话解释我的用法吗getViewTypeCount and getItemViewType 的方法ArrayAdapter 这些处理您想要不同的情况types不同行的视图 例如 在联系人应用程序中 您可能希望偶数行在左侧显示图
  • 关闭呈现视图控制器

    我有以下情况 视图控制器 A gt 以模态方式呈现 gt 视图控制器 B 视图控制器 B gt 以模态方式呈现 gt 视图控制器 C 我想关闭视图控制器 C 并直接转到 A 而不是显示 B 因为当时显示 B 没有意义 我怎样才能做到这一点
  • 程序集在大数字之前打印字符

    这个程序可以很好地打印小数字 但不能打印大数字 我不知道为什么 例如print 1346269将打印为 c1346269 和print 40000将打印为 40000 就像它应该的那样 这是宏 macro print 1 mov rax 1
  • MAX 与 Top 1 - 哪个更好?

    我必须审查一些代码 并遇到了有人做过的事情 并且想不出为什么我的方法更好但可能不是的原因 那么 哪个更好 更安全 更高效 SELECT MAX a date FROM a table WHERE a primary key 5 GROUP
  • TinyMCE 4 - 将自定义样式/类/属性添加到任何 HTML 标签

    是否有任何插件 可能性允许通过 TinyMCE 4 WYSIWYG 将自定义属性添加到 HTML 标签 例如 我通过编辑器添加了此代码 而不是通过源代码 div a href uploads myfile pdf My file img s
  • 使用 JavaScript 以复利计算未来价值

    我正在尝试编写一个脚本 其中用户插入每月收入并获得 30 年后复利的未来价值 现在 我已经分配了一些值用于测试目的 Future Value var investment 800 var annualRate 2 var monthlyRa
  • 为多个 JavaScript 文件启用严格模式

    要为所有 JavaScript 启用严格模式 use strict 设置需要位于每个导入的 JavaScript 文件的顶部 第一个文件的顶部还是任何文件的顶部 似乎没有这方面的文档 Thanks 它需要位于您想要的每个脚本的顶部stric
  • 将列表转换为 R 中的数据框并添加带有子列表名称的列

    List l有三个字符串 分别命名为一 二和三 我想转换l到数据框 我需要一个附加列 其名称为n l lt list c a b c c d e c e n lt c one two three 我可以使用循环来完成此操作 但我确信有更有效
  • 三路异或类函数

    我正在尝试解决以下难题 Given a stream of numbers only 1 iteration over them is allowed in which all numbers appear 3 times but 1 nu
  • Terraform 0.12 - 从嵌套 for 循环生成地图/对象

    作为后续Terraform 0 12 嵌套 for 循环 https stackoverflow com questions 56047306 terraform 0 12 nested for loops 57280420 5728042