Ошибка: недопустимый индекс. Данный ключ не идентифицирует элемент в этом значении коллекции. Маршруты транзитного шлюза.

Я пытаюсь создать маршруты в таблице маршрутов транзитного шлюза. Ниже представлен блок кода.

      locals {
  vpc_attachments_with_routes = chunklist(flatten([
    for k, v in var.vpc_attachments : setproduct([{ key = k }], v["tgw_route"]) if length(lookup(v, "tgw_route", {})) > 0
  ]), 2)
  }

resource "aws_ec2_transit_gateway_route_table" "route" {
  count = var.create_tgw ? 1 : 0
  transit_gateway_id = aws_ec2_transit_gateway.this[0].id
}

resource "aws_ec2_transit_gateway_route" "this" {
  count = length(local.vpc_attachments_with_routes)

  destination_cidr_block = local.vpc_attachments_with_routes[count.index][1]["destination_cidr_block"]
  blackhole              = lookup(local.vpc_attachments_with_routes[count.index][1], "blackhole", null)

  transit_gateway_route_table_id = aws_ec2_transit_gateway_route_table.route[count.index].id
  transit_gateway_attachment_id  = tobool(lookup(local.vpc_attachments_with_routes[count.index][1], "blackhole", false)) == false ? aws_ec2_transit_gateway_vpc_attachment.this[local.vpc_attachments_with_routes[count.index][0]["key"]].id : null
   depends_on = [
    aws_ec2_transit_gateway_route_table.route,
  ]
}

Ошибка:

Ошибка: неверный индекс \ n \ n в ../modules/tgw/main.tf строке 85, в ресурсе "aws_ec2_transit_gateway_route" "this": \ n 85: transit_gateway_route_table_id = aws_ec2_transit_gateway_route_table.route[count.index]. ---------------- \ n | aws_ec2_transit_gateway_route_table.route - это кортеж с 1 элементом \ n | count.index равен 1 \ n \ nДанный ключ не идентифицирует элемент в этом значении коллекции. \ n \ n ",

1 ответ

У вас будет только 0 или 1 aws_ec2_transit_gateway_route_table.route, в зависимости от значения create_tgw. Так и должно быть:

      resource "aws_ec2_transit_gateway_route" "this" {
  count = length(local.vpc_attachments_with_routes)

  destination_cidr_block = local.vpc_attachments_with_routes[count.index][1]["destination_cidr_block"]
  blackhole              = lookup(local.vpc_attachments_with_routes[count.index][1], "blackhole", null)

  transit_gateway_route_table_id = var.create_tgw ? aws_ec2_transit_gateway_route_table.route[0].id : null 

  transit_gateway_attachment_id  = tobool(lookup(local.vpc_attachments_with_routes[count.index][1], "blackhole", false)) == false ? aws_ec2_transit_gateway_vpc_attachment.this[local.vpc_attachments_with_routes[count.index][0]["key"]].id : null
}
Другие вопросы по тегам