Я пытаюсь перебрать карту портов и диапазонов портов, чтобы создать группу безопасности AWS в Terraform. Для входных портов они предоставляют поле from_port
и поле to_port
. Это должно определять диапазон портов для определенного правила c в группе безопасности. Я могу нормально выполнить сопоставление, если правилом является один порт, поскольку оба порта - это одно и то же. Но когда правило требует диапазона портов, я не могу понять, как это сделать. Вот код, с которым я тестировал. Я думаю, что у меня правильное представление о том, как это сделать, но я сталкиваюсь с ошибками типа.
По сути, я пытаюсь использовать значение индекса from_port, чтобы найти, какой порт должен отображаться на to_port
.
provider "aws" {
region = "us-east-2"
profile = "default"
}
locals {
start = [22, 33, 44] # from_ports
end = [25, 35, 45] # to_ports
vpcid = "vpc-xxxxxxxxxxxx"
}
resource "aws_security_group" "traffic_secgrp" {
name = "traffic_sec_grp"
description = "Allows traffic"
vpc_id = local.vpcid
dynamic "ingress" {
for_each = local.start
content {
from_port = ingress.value
to_port = element(local.end, [index(local.start, ingress.value)])
protocol = "UDP"
cidr_blocks = ["10.2.0.0/20"]
}
}
}
Вот ошибка, которую я получаю из строки to_port
:
Error: Invalid function argument
on main.tf line 21, in resource "aws_security_group" "traffic_secgrp":
21: to_port = element(local.end, [index(local.start, ingress.value)])
|----------------
| ingress.value is 44
| local.start is tuple with 3 elements
Invalid value for "index" parameter: number required.