Terraform получает IP-адреса подсетей конечных точек vp c - PullRequest
2 голосов
/ 20 января 2020

Я пытаюсь настроить AWS Передача SFTP в режиме конечной точки vp c, но есть одна мысль, с которой я не могу справиться. У меня есть проблема, как получить целевые IP-адреса для целевой группы NLB. Единственный вывод, который я нашел:

output "vpc_endpoint_transferserver_network_interface_ids" {
  description = "One or more network interfaces for the VPC Endpoint for transferserver"
  value       = flatten(aws_vpc_endpoint.transfer_server.*.network_interface_ids)
}

дает идентификаторы сетевого интерфейса, которые нельзя использовать в качестве целей:

Outputs:

api_url = https://12345.execute-api.eu-west-1.amazonaws.com/prod
vpc_endpoint_transferserver_network_interface_ids = [
  "eni-12345",
  "eni-67890",
  "eni-abcde",
]

Я прошел:

terraform get su bnet ips интеграции с vp c вкладка подсетей конечных точек и Terraform, как получить IP-адрес aws_lb

, но, похоже, ни один из них не работает. Последний говорит:

  on modules/sftp/main.tf line 134, in data "aws_network_interface" "ifs":
 134:   count = "${length(local.nlb_interface_ids)}"

The "count" value depends on resource attributes that cannot be determined
until apply, so Terraform cannot predict how many instances will be created.
To work around this, use the -target argument to first apply only the
resources that the count depends on.

1 Ответ

2 голосов
/ 20 января 2020

Вы можете создать Elasti c IP

resource "aws_eip" "lb" {
  instance = "${aws_instance.web.id}"
  vpc      = true
}

Затем укажите IP-адреса Elasti c при создании сети LB

resource "aws_lb" "example" {
  name               = "example"
  load_balancer_type = "network"

  subnet_mapping {
    subnet_id     = "${aws_subnet.example1.id}"
    allocation_id = "${aws_eip.example1.id}"
  }

  subnet_mapping {
    subnet_id     = "${aws_subnet.example2.id}"
    allocation_id = "${aws_eip.example2.id}"
  }
}
...