【问题标题】:Terraform nested for expression嵌套用于表达的 Terraform
【发布时间】:2019-05-17 23:12:01
【问题描述】:

我有一个这样定义的模块变量:

apis = {
  "${data.aws_api_gateway_rest_api.api1.id}" = ["blue", "green"],
  "${data.aws_api_gateway_rest_api.api2.id}" = ["blue"],
}

我需要将此结构转换为以下内容:

[
    [data.aws_api_gateway_rest_api.api1.id, "blue"],
    [data.aws_api_gateway_rest_api.api1.id, "green"],
    [data.aws_api_gateway_rest_api.api2.id, "blue"],
]

用于动态块的for_each 表达式中,用于创建 api 网关使用计划

我有以下内容,我认为这非常接近正确,但第一个 for 表达式中的 id 变量在第二个 for 表达式的主体中是不可访问的:

dynamic "api_stages" {
  for_each = flatten([
    for id, stages in var.apis: [
      for stage in stages: [id, stage]
    ]
  ])

  content {
    api_id = api_stages.value[0]
    stage  = api_stages.value[1]
  }
}

有谁知道如何做到这一点?

【问题讨论】:

  • 如果id 在嵌套的for 中不可用,那么这是一个错误!我记得在 0.12 预发布期间已经修复了类似的问题,所以如果您不在 rc1 版本上可能值得先尝试升级,但如果您仍然发现它在最新版本中无法正常工作,请打开 GitHub 问题关于它!

标签: terraform


【解决方案1】:

经过一番喘息之后,我决定通过以我试图将地图转换为的格式定义我的apis 来简化我的问题。这意味着我可以遍历for_each 中的apis 变量,而根本不需要对其进行转换。

不是针对具体问题的解决方案,而是一种解决方法

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 2021-01-27
    • 2010-09-25
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多