索引>值列表时,element()函数是否可以使用异常处理?

时间:2019-06-20 03:48:30

标签: terraform-provider-aws

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,,它比要抛出的地形值列表还要多错误?

1 个答案:

答案 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