data"aws_network_interface""node1"{
id="eni-0dfe5asdf7ajk5"
}
上述数据源的输出是一个Private_ips列表,其长度为4
[10.198.10.1,10.198.10.2,10.198.10.3,10.198.10.4]
在这里,我正在尝试通过IP用目标创建NLB。
我也对element()
函数中的索引的工作方式感到困惑-我的要求是,如果我的var.lbcount=1
和我的{{ 1}}我需要从上面的列表中选择第4个元素,即10.198.10.4。
var.lbcount=2
正如我所说
resource"aws_lb_target_group_attachment""tga"
{
target_group_arn="${aws_lb_target_group.tg.arn}"
target_id="${element(data.aws_network_interface.node1.private_ips,4}"
}
我将 target_id作为列表中的第一个元素显示为[10.198.10.1],这是错误的,如果索引超出列表的长度范围,则如何引发错误或异常
如何确保只允许将1,2,3作为element()函数中的索引,并且如果我们传递4,,它比要抛出的地形值列表还要多错误?
答案 0 :(得分:0)
通常,如果list[0]
和当前的length(LIST) = 3
,Terraform将再次使用count.index = 4
。
但是,您可以为用例(伪代码)使用一个简单的条件:
count = "${var.MAX_INDEX > length(LIST) ? length(LIST) : var.MAX_INDEX"
如果您的count
大于列表的长度,这会将MAX_INDEX
设置为列表的长度。否则,它将计数设置为您的MAX_INDEX
。