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

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

      locals {
  vpc_attachments_without_default_route_table_association = {
    for k, v in var.vpc_attachments : k => v if lookup(v, "transit_gateway_default_route_table_association", true) != true
  }
  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" "this" {
  count = var.create_tgw ? 1 : 0

  transit_gateway_id = aws_ec2_transit_gateway.this[0].id

  tags = merge(
    {
      "Name" = format("%s", var.name)
    },
    var.tags,
    var.tgw_route_table_tags,
  )
}


resource "aws_ec2_transit_gateway_route_table_association" "this" {
  for_each = local.vpc_attachments_without_default_route_table_association

  transit_gateway_attachment_id  = aws_ec2_transit_gateway_vpc_attachment.this[each.key].id
  transit_gateway_route_table_id = aws_ec2_transit_gateway_route_table.this[0].id
}

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

2 ответа

Решение

Ресурс aws_ec2_transit_gateway_route_table_association зависит от aws_ec2_transit_gateway_route_table в вашем случае. Можете ли вы попробовать следующий код.

      resource "aws_ec2_transit_gateway_route_table_association" "this" {
  for_each = var.create_tgw ? local.vpc_attachments_without_default_route_table_association : {}

  transit_gateway_attachment_id  = aws_ec2_transit_gateway_vpc_attachment.this[each.key].id
  transit_gateway_route_table_id = aws_ec2_transit_gateway_route_table.this[0].id
}

Это давало пустой кортеж, поскольку он работал для 2 модулей и не смог найти таблицу маршрутов. Я создал маршруты и ассоциации отдельно, что устранило проблему.

Другие вопросы по тегам