Subchapter 88.6
references/peering-transit-gateways-across-regions.mdMarkdown15 KBView on GitHub
Domain expertise for connecting two transit gateways, one per Region, so VPCs in different Regions communicate over the AWS network instead of the public internet. Covers the accept step that creation alone does not complete, the static-routes-only nature of peering, the overlapping-CIDR check, the region-pair-dependent bandwidth, and the routing asymmetry that appears when peering and a Site-to-Site VPN reach the same Regions.
Does not cover creating the hub, attaching VPCs, segmentation, egress, hybrid connectivity, or multicast. Those are separate references.
Execute commands using the AWS MCP server when connected (sandboxed execution, audit logging, observability). Fall back to the AWS CLI otherwise. Peering spans two Regions; run requester-side commands in the requester Region and accepter-side commands in the accepter Region.
To peer transit gateways across Regions end to end, follow the procedure exactly. See the Procedure section below. It covers creating the peering attachment from the requester transit gateway, accepting it on the accepter side, adding static routes in each transit gateway route table, and surfacing the console link to verify.
A peering attachment stays pending until the owner of the accepter transit gateway accepts it. Creating the attachment does not establish the peer; it is not usable until it reaches the available state.
Constraints:
availablePeering does not support dynamic routing, so routes do not propagate across the peer the way they do for VPC attachments. Each transit gateway route table needs a static route pointing at the peering attachment.
Constraints:
Inter-Region transit gateway peering traffic travels over the AWS backbone and is automatically encrypted by AWS; the customer does not configure or manage this encryption.
Constraints:
A transit gateway cannot route between overlapping ranges, so peering Regions whose VPC CIDR blocks overlap does not work. Overlap is harder to fix after workloads are deployed.
Constraints:
Peering bandwidth depends on the Region pair and is not guaranteed to match VPC attachment bandwidth. Customers who design for sustained inter-Region throughput assuming symmetric, VPC-equivalent bandwidth hit throttling.
Constraints:
A customer who runs both inter-Region peering and a Site-to-Site VPN into the same Regions can get an asymmetric path, where traffic leaves over peering and returns over the VPN (or the reverse), unless route preferences are explicit. Because peering uses static routes, the customer also has to keep those static routes in sync by hand with the remote Region’s CIDRs as VPCs are added there.
Constraints:
Inter-Region peering joins two Regional hubs into one routing fabric, so a static route into the wrong table or an asymmetric path with a parallel VPN exposes or splits traffic across Regions. The controls are embedded in the procedure; this section consolidates them.
Constraints:
aws:SourceArn, aws:SourceAccount, kms:ViaService) so only the specific
log group, bucket, or trail in the expected account and service can use the keyThe accepter has not accepted it. Accept it on the accepter side; wait for available.
Static routes pointing at the peering attachment are missing. Add them in each route table.
The VPC CIDRs overlap. Check both Regions; re-address.
Peering bandwidth is region-pair-dependent. Plan capacity for the per-pair limit.
The path is asymmetric. Make route preference explicit and keep peering static routes in sync.
This procedure creates the peering attachment, accepts it, adds the static routes in each route table on both sides for bidirectional traffic flow, and surfaces the console link to verify.
Constraints for parameter acquisition:
Constraints:
aws sts get-caller-identity, and you MUST use short-lived,
ephemeral credentials scoped to least privilege for transit gateway administration, never
long-lived access keys or broad service wildcard or FullAccess policiesaws:SourceArn,
aws:SourceAccount, and kms:ViaService) so only the specific log group, bucket, or trail in the
expected account and service can use the key, preventing cross-account or cross-service misuseConstraints:
You MUST create the peering attachment from the requester transit gateway:
aws ec2 create-transit-gateway-peering-attachment \
--transit-gateway-id {requester_tgw_id} \
--peer-transit-gateway-id {accepter_tgw_id} \
--peer-account-id {accepter_account_id} \
--peer-region {accepter_region} --region {requester_region}You MUST capture the TransitGatewayAttachmentId as {peering_attachment_id}
You MUST poll until the attachment reaches pendingAcceptance:
aws ec2 describe-transit-gateway-peering-attachments \
--transit-gateway-attachment-ids {peering_attachment_id} --region {requester_region}Constraints:
You MUST accept it on the accepter side:
aws ec2 accept-transit-gateway-peering-attachment \
--transit-gateway-attachment-id {peering_attachment_id} --region {accepter_region}You MUST poll until the attachment reaches available:
aws ec2 describe-transit-gateway-peering-attachments \
--transit-gateway-attachment-ids {peering_attachment_id} --region {requester_region}Constraints:
You MUST discover the requester-side route table from the peering attachment’s existing association, which is unambiguous even when the requester transit gateway has multiple route tables in a segmented design. Do not take the first route table blindly:
aws ec2 describe-transit-gateway-attachments \
--transit-gateway-attachment-ids {peering_attachment_id} \
--query 'TransitGatewayAttachments[0].Association.TransitGatewayRouteTableId' \
--output text --region {requester_region}You MUST add a static route in the requester transit gateway route table pointing at the peering attachment for the accepter Region’s ranges:
aws ec2 create-transit-gateway-route \
--transit-gateway-route-table-id {requester_route_table_id} \
--destination-cidr-block {accepter_cidr} \
--transit-gateway-attachment-id {peering_attachment_id} --region {requester_region}Constraints:
You MUST discover the accepter-side route table from the peering attachment’s existing association, which is unambiguous even when the accepter transit gateway has multiple route tables in a segmented design. Do not take the first route table blindly:
aws ec2 describe-transit-gateway-attachments \
--transit-gateway-attachment-ids {peering_attachment_id} \
--query 'TransitGatewayAttachments[0].Association.TransitGatewayRouteTableId' \
--output text --region {accepter_region}You MUST add a static route in the accepter transit gateway route table pointing at the peering attachment for the requester Region’s ranges:
aws ec2 create-transit-gateway-route \
--transit-gateway-route-table-id {accepter_route_table_id} \
--destination-cidr-block {requester_cidr} \
--transit-gateway-attachment-id {peering_attachment_id} --region {accepter_region}You MUST add routes on both sides for bidirectional traffic flow.
Constraints:
You MUST confirm the peering attachment is available:
aws ec2 describe-transit-gateway-peering-attachments \
--transit-gateway-attachment-ids {peering_attachment_id} --region {requester_region}You MUST present the transit gateway console link for each Region, filling {requester_tgw_id}/{accepter_tgw_id}
and {requester_region}/{accepter_region}, and tell the customer to open it and confirm the peering attachment and routes:
https://{requester_region}.console.aws.amazon.com/vpc/home?region={requester_region}#TransitGatewayAttachments:
https://{accepter_region}.console.aws.amazon.com/vpc/home?region={accepter_region}#TransitGatewayAttachments:{
"requester_region": "us-east-1",
"requester_tgw_id": "tgw-east",
"accepter_region": "eu-west-1",
"accepter_tgw_id": "tgw-eu",
"accepter_account_id": "111122223333"
}Checked CIDRs across us-east-1 and eu-west-1: no overlap.
Created the peering attachment from tgw-east; waited for pendingAcceptance.
Accepted it on tgw-eu; polled until available.
Added static routes on both sides: requester route table points accepter CIDRs at the peering
attachment; accepter route table points requester CIDRs at the peering attachment. Bidirectional
traffic flow confirmed.
Flagged: peering bandwidth is region-pair-dependent; if a VPN also reaches these Regions, set path
preference explicitly and keep the static routes in sync.
Open the transit gateway attachments in each Region and confirm:
https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#TransitGatewayAttachments:
https://eu-west-1.console.aws.amazon.com/vpc/home?region=eu-west-1#TransitGatewayAttachments:Not accepted. Accept on the accepter side (Step 3).
Static routes missing. Add them in each route table on both sides (Steps 4 and 5).
CIDRs overlap. Re-check and re-address (Step 1).