доступна ли обработка исключений для функции element (), когда index> список значений? - PullRequest
0 голосов
/ 20 июня 2019
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]

Здесь я пытаюсь создать NLB с целью по IP.

Я также запутался в том, как работает индекс в element(). Функция -мое требование состоит в том, чтобы выбрать третий элемент как [10.198.0.3] из приведенного выше списка, если мой var.lbcount=1 и когда мой var.lbcount=2Мне нужно выбрать 4-й элемент из приведенного выше списка как 10.198.10.4.


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

Как я уже говорил

index=4

Я получаю target_id как 1-й элемент в списке как [10.198.10.1], что неправильно, каквыдает ошибку или исключение, если индекс выходит за пределы длины списка.

Как можно Я уверен, что мы должны разрешить использовать только 1,2,3 в качестве индекса в функции element () иесли мы передадим 4, , что больше, чем список значений терраформ, чтобы выдать ошибку?

1 Ответ

0 голосов
/ 20 июня 2019

Как правило, Terraform будет использовать list[0] снова, если length(LIST) = 3 и текущий count.index = 4.

Однако вы можете использовать простое условное выражение для вашего варианта использования (псевдокод):

count = "${var.MAX_INDEX > length(LIST) ? length(LIST) : var.MAX_INDEX"

Это установит count в длину списка , если ваш MAX_INDEX больше, чем длина вашего списка. В противном случае он установил бы счет на MAX_INDEX.

...