В вашем VP C DNS-сервер будет основой диапазона сети VP C плюс два. Например, если ваш блок VP C CIDR равен 10.0.0.0/24, то Amazon зарезервирует 10.0.0.2 для DNS-сервера. Это задокументировано здесь .
Вы также можете просто разрешить исходящие соединения с вашим блоком CIDR VP C вместо того, чтобы открывать 0.0.0.0/0. Хотя вы должны заметить, что лямбда-функция внутри VP C не имеет общедоступного c IP-адреса, поэтому она не может получить доступ к чему-либо вне VP C без прохождения через NAT-шлюз.
Чтобы рассчитать это в Terraform, давайте предположим, что у вас есть ссылка на VP C как-то так:
data "aws_vpc" "my_vpc" {
id = "${var.vpc_id}"
}
Затем вы можете использовать функцию cidrhost()
Terraform, чтобы найти IP-адрес, например:
locals {
dns_server = cidrhost(data.aws_vpc.my_vpc.cidr_block, 2)
}
resource "aws_security_group_rule" "allow_dns" {
type = "outbound"
from_port = 53
to_port = 53
protocol = "udp"
cidr_blocks = "${local.dns_server}/32"
security_group_id = "sg-123456"
}