# VPC peering connections ==================================================== resource "aws_vpc_peering_connection" "this" { for_each = var.peering_connections vpc_id = each.value.requester_vpc_id peer_vpc_id = each.value.peer_vpc_id peer_owner_id = each.value.peer_account_id peer_region = each.value.peer_region auto_accept = each.value.auto_accept requester { allow_remote_vpc_dns_resolution = each.value.allow_remote_vpc_dns } tags = merge(local.tags, { Name = each.key }) } # Peering accepter (same-account, no cross-region provider alias) ------------ resource "aws_vpc_peering_connection_accepter" "this" { for_each = { for k, v in var.peering_connections : k => v if !v.auto_accept && v.peer_account_id == null } vpc_peering_connection_id = aws_vpc_peering_connection.this[each.key].id auto_accept = true accepter { allow_remote_vpc_dns_resolution = each.value.allow_remote_vpc_dns } tags = merge(local.tags, { Name = "${each.key}-accepter" }) } # Requester-side routes ------------------------------------------------------ resource "aws_route" "requester" { for_each = local.requester_route_map route_table_id = each.value.rt destination_cidr_block = each.value.cidr vpc_peering_connection_id = aws_vpc_peering_connection.this[each.value.pk].id depends_on = [aws_vpc_peering_connection_accepter.this] } # Accepter-side routes ------------------------------------------------------- resource "aws_route" "accepter" { for_each = local.accepter_route_map route_table_id = each.value.rt destination_cidr_block = each.value.cidr vpc_peering_connection_id = aws_vpc_peering_connection.this[each.value.pk].id depends_on = [aws_vpc_peering_connection_accepter.this] }