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问题!