🎯 Goal: Connect two VPCs privately (no internet gateway!) — across regions, with Terraform.

✅ You’ll build:


🧠 Why VPC Peering? (And Why Not Internet Gateway)

Approach Security Cost Latency Use Case
❌ Public IPs + IGW ❌ Exposed to internet High (data transfer) High (public path) ❌ Never for internal traffic
VPC Peering ✅ Private, encrypted Low (regional) ⚡ Low (direct) ✅ App ↔ DB, Shared services

⚠️ Critical Rules:


📦 Architecture Diagram

flowchart LR
  subgraph us-east-1 [VPC A: 10.0.0.0/16]
    A_EC2[EC2: 10.0.1.10]
    A_RT[Route Table]
    A_IGW[Internet Gateway] -. optional .-> A_EC2
    A_RT -->|10.1.0.0/16 via pcx-123| Peering
  end

  subgraph us-west-2 [VPC B: 10.1.0.0/16]
    B_EC2[EC2: 10.1.1.10]
    B_RT[Route Table]
    B_RT -->|10.0.0.0/16 via pcx-456| Peering
  end

  Peering[VPC Peering Connection\\\\npcx-123 (A→B)\\\\npcx-456 (B→A)] <--> A_RT & B_RT

Key Flow:

  1. A_EC210.1.1.10 (B’s private IP)
  2. Route table in VPC A matches 10.1.0.0/16 → sends to pcx-123
  3. Peering connection routes to VPC B’s 10.1.1.10
  4. 🔐 All traffic stays on AWS backbone — never hits public internet

✏️ Hands-On: Terraform Implementation

🔹 File Structure (/day15/)

day15/
├── provider.tf       # Multi-region providers (alias = primary/secondary)
├── variables.tf      # CIDRs, regions, instance types
├── data.tf           # AZs, AMIs (region-specific)
├── vpc-a.tf          # VPC A (us-east-1)
├── vpc-b.tf          # VPC B (us-west-2)
├── peering.tf        # Peering + route tables
├── instances.tf      # EC2 + security groups
└── TASK.md           # 📝 Your challenge (transitive fix, security hardening)


1️⃣ provider.tf — Multi-Region Setup