Terraform 用于表达式的嵌套地形

Terraform 用于表达式的嵌套地形,terraform,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_res

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

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"],
]
用于创建api网关使用计划的动态块的每个表达式中

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

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

有人知道如何做到这一点吗?

经过一番吹毛求疵之后,我决定简化我的问题,用我试图转换地图的格式定义我的
api
。这意味着我可以在
for_each
中迭代
api
变量,而无需对其进行任何转换


这不是一个确切问题的解决方案,而是一个解决办法。在经历了大量的愤怒和吹嘘之后,我决定以我试图转换地图的格式定义我的
api
,从而简化我的问题。这意味着我可以在
for_each
中迭代
api
变量,而无需对其进行任何转换


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

如果
id
在嵌套的
for
中不可用,那么这就是一个bug!我记得在0.12预发行版的过程中,类似的问题已经得到了修复,因此如果您不在rc1发行版上,可能值得先尝试升级,但是如果您仍然发现它在最新版本上无法工作,请打开一个GitHub问题!如果
id
在嵌套的
for
中不可用,那就是一个bug!我记得在0.12预发行版的过程中,类似的问题已经得到了修复,因此如果您不在rc1发行版上,可能值得先尝试升级,但是如果您仍然发现它在最新版本上无法工作,请打开一个GitHub问题!