diff --git a/vpc-transit-gateway-association/README.md b/vpc-transit-gateway-association/README.md
index bcf2684..322eae6 100644
--- a/vpc-transit-gateway-association/README.md
+++ b/vpc-transit-gateway-association/README.md
@@ -42,8 +42,12 @@ No modules.
| [aws_arn.network_account](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/arn) | data source |
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_caller_identity.network_account](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
-| [aws_ec2_transit_gateway.tgw_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source |
-| [aws_ec2_transit_gateway.tgw_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source |
+| [aws_ec2_transit_gateway.gateway_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source |
+| [aws_ec2_transit_gateway.gateway_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source |
+| [aws_ec2_transit_gateway_route_table.route_tables_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_table) | data source |
+| [aws_ec2_transit_gateway_route_table.route_tables_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_table) | data source |
+| [aws_ec2_transit_gateway_route_tables.route_tables_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_tables) | data source |
+| [aws_ec2_transit_gateway_route_tables.route_tables_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_tables) | data source |
| [aws_iam_account_alias.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_account_alias) | data source |
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |
@@ -67,5 +71,9 @@ No modules.
| Name | Description |
|------|-------------|
-| [tgw\_peer](#output\_tgw\_peer) | Transit Gateway peer (other region) |
-| [tgw\_self](#output\_tgw\_self) | Transit Gateway self (this region) |
+| [gateway\_peer](#output\_gateway\_peer) | Transit Gateway peer (other region) |
+| [gateway\_self](#output\_gateway\_self) | Transit Gateway self (this region) |
+| [map\_route\_tables\_peer](#output\_map\_route\_tables\_peer) | Transit Gateway route tables map (VRF:id) peer (other region) |
+| [map\_route\_tables\_self](#output\_map\_route\_tables\_self) | Transit Gateway route tables map (VRF:id) self (this region) |
+| [route\_tables\_peer](#output\_route\_tables\_peer) | Transit Gateway route tables peer (other region) |
+| [route\_tables\_self](#output\_route\_tables\_self) | Transit Gateway route tables self (this region) |
diff --git a/vpc-transit-gateway-association/data.transit-gateway.tf b/vpc-transit-gateway-association/data.transit-gateway.tf
index f00470c..1ecaf82 100644
--- a/vpc-transit-gateway-association/data.transit-gateway.tf
+++ b/vpc-transit-gateway-association/data.transit-gateway.tf
@@ -1,4 +1,7 @@
-data "aws_ec2_transit_gateway" "tgw_self" {
+#---
+# transit gateways
+
+data "aws_ec2_transit_gateway" "gateway_self" {
provider = aws.self
filter {
name = "owner-id"
@@ -6,10 +9,52 @@ data "aws_ec2_transit_gateway" "tgw_self" {
}
}
-data "aws_ec2_transit_gateway" "tgw_peer" {
+data "aws_ec2_transit_gateway" "gateway_peer" {
provider = aws.peer
filter {
name = "owner-id"
values = [data.aws_arn.network_account.account]
}
}
+
+#---
+# tgw route tables self
+#---
+data "aws_ec2_transit_gateway_route_tables" "route_tables_self" {
+ provider = aws.self
+ filter {
+ name = "transit-gateway-id"
+ values = [data.aws_ec2_transit_gateway.gateway_self.id]
+ }
+}
+
+data "aws_ec2_transit_gateway_route_table" "route_tables_self" {
+ provider = aws.self
+ for_each = toset(data.aws_ec2_transit_gateway_route_tables.route_tables_self.ids)
+ id = each.key
+}
+
+locals {
+ transit_gateway_route_table_ids_self = { for k, v in data.aws_ec2_transit_gateway_route_table.route_tables_self : v.tags["boc:network_vrf"] => k }
+}
+
+#---
+# route tables west
+#---
+data "aws_ec2_transit_gateway_route_tables" "route_tables_peer" {
+ provider = aws.peer
+ filter {
+ name = "transit-gateway-id"
+ values = [data.aws_ec2_transit_gateway.gateway_peer.id]
+ }
+}
+
+data "aws_ec2_transit_gateway_route_table" "route_tables_peer" {
+ provider = aws.peer
+ for_each = toset(data.aws_ec2_transit_gateway_route_tables.route_tables_peer.ids)
+ id = each.key
+}
+
+locals {
+ transit_gateway_route_table_ids_peer = { for k, v in data.aws_ec2_transit_gateway_route_table.route_tables_peer : v.tags["boc:network_vrf"] => k }
+}
diff --git a/vpc-transit-gateway-association/outputs.tf b/vpc-transit-gateway-association/outputs.tf
index f4812f3..3857b31 100644
--- a/vpc-transit-gateway-association/outputs.tf
+++ b/vpc-transit-gateway-association/outputs.tf
@@ -1,9 +1,29 @@
-output "tgw_self" {
+output "gateway_self" {
description = "Transit Gateway self (this region)"
- value = data.aws_ec2_transit_gateway.tgw_self.id
+ value = data.aws_ec2_transit_gateway.gateway_self.id
}
-output "tgw_peer" {
+output "gateway_peer" {
description = "Transit Gateway peer (other region)"
- value = data.aws_ec2_transit_gateway.tgw_peer.id
+ value = data.aws_ec2_transit_gateway.gateway_peer.id
+}
+
+output "route_tables_self" {
+ description = "Transit Gateway route tables self (this region)"
+ value = data.aws_ec2_transit_gateway_route_table.route_tables_self
+}
+
+output "route_tables_peer" {
+ description = "Transit Gateway route tables peer (other region)"
+ value = data.aws_ec2_transit_gateway_route_table.route_tables_peer
+}
+
+output "map_route_tables_self" {
+ description = "Transit Gateway route tables map (VRF:id) self (this region)"
+ value = local.transit_gateway_route_table_ids_self
+}
+
+output "map_route_tables_peer" {
+ description = "Transit Gateway route tables map (VRF:id) peer (other region)"
+ value = local.transit_gateway_route_table_ids_peer
}