Почему мой источник данных подсети возвращает VPC? - PullRequest
0 голосов
/ 26 июня 2019

Я использую модуль, который написал мой коллега, но по какой-то причине я получаю подсеть не найденной - и идентификатор начинается с vpc-.Почему это возвращает VPC, а не подсеть?

data "aws_subnet_ids" "app" {
  vpc_id = "${data.aws_vpc.default.id}"

  tags = {
    SubnetType = "app"
  }
}

, которая передается в модуль как

private_subnets = "${data.aws_subnet_ids.app.*.id}"

и используется здесь:

resource "aws_autoscaling_group" "default-alb" {
  name                 = "${chomp(data.template_file.standard_name.rendered)}"
  launch_configuration = tostring(element(aws_launch_configuration.default,count.index).name)
  min_size             = "${var.min_instances}"
  max_size             = "${var.min_instances}"

  target_group_arns = [
    tostring(element(aws_alb_target_group.default-http,count.index).arn),
  ]

  vpc_zone_identifier = var.private_subnets

  lifecycle {
    create_before_destroy = true
  }
}

Но я получаю ошибку:

Error: Error creating AutoScaling Group: ValidationError: The subnet ID 'vpc-004[redacted]' does not exist
    status code: 400, request id: 73e98545-975c-11e9-bd63-fd4915ceeabf

  on .terraform/modules/core-api/alb.tf line 1, in resource "aws_autoscaling_group" "default-alb":
   1: resource "aws_autoscaling_group" "default-alb" {

Разве идентификатор подсети не должен начинаться с subnet-?

1 Ответ

1 голос
/ 26 июня 2019

Источник данных aws_subnet_ids не имеет аргумента или атрибута id, поэтому Terraform должен выдать исключение, и я немного удивлен, что это не так.

Кроме того, вы, похоже, не используете счет для этого, поэтому вам не нужен оператор сплат, который у вас там есть.

Так что вместо:

private_subnets = "${data.aws_subnet_ids.app.*.id}"

Вы должны использовать атрибут ids, чтобы получить список всех идентификаторов подсети, которые соответствуют вашему фильтру:

private_subnets = "${data.aws_subnet_ids.app.ids}"
...