嵌套表达的地形

时间:2019-05-17 13:11:01

标签: terraform

我有一个定义如下的模块变量:

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

有人知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

经过反复的喘气之后,我决定通过尝试将地图转换为apis的格式来简化我的问题。这意味着我可以遍历apis中的for_each变量,而无需进行任何转换。

不是确切问题的解决方案,而是一种解决方法