Cómo configurar VPC Peering entre AWS y MongoDB Atlas
Conectá tu VPC de AWS a MongoDB Atlas mediante VPC Peering para acceso privado y de baja latencia a la base de datos — y aprendé cuándo usar peering y cuándo optar por alternativas.
Prerrequisitos
- Una cuenta de MongoDB Atlas con un cluster de tier **M10 o superior**
- Una cuenta de AWS con una VPC donde corren tus workloads
- Rol de **Project Owner** en MongoDB Atlas
- DNS hostnames y DNS resolution habilitados en tu VPC de AWS
Empecemos
Cuándo usar VPC Peering
El VPC Peering es la opción correcta cuando:
- Tus workloads corren dentro de una VPC de AWS en la **misma región** que tu cluster de Atlas
- Necesitás **conectividad privada** — el tráfico nunca sale del backbone de AWS
- Usás clusters de Atlas en tier **M10 o superior**
- Tus recursos corren en EKS, EC2, u otro servicio dentro de la VPC
El VPC Peering **no está disponible** en estos casos:
- Tiers de cluster **M0, M2, M5 o Serverless** — no soportan peering
- **Peering multi-cloud** — Atlas no soporta peering entre distintos proveedores (ej: GCP y AWS)
- **CIDRs solapados** — si el CIDR de tu VPC de AWS se solapa con el de Atlas, el peering no puede establecerse
Si alguno de los casos anteriores aplica, pasá directamente a Alternativa: Whitelist de la IP del NAT Gateway.
Alternativa: Whitelist de la IP del NAT Gateway
Si el peering no es una opción, podés permitir conexiones a Atlas desde tu VPC registrando la IP pública de tu **NAT Gateway**:
- En la consola de AWS, navegá a **VPC → NAT Gateways** y copiá la **Elastic IP** asociada a tu NAT Gateway.
- En MongoDB Atlas, navegá a **Network Access → IP Access List → Add IP Address**.
- Ingresá la Elastic IP con una descripción como `NAT Gateway - produccion`.
Tus workloads se conectarán a Atlas a través de internet vía el NAT, sin necesidad de peering.
Esta opción tiene mayor latencia que el peering, pero funciona con cualquier tier de cluster y no requiere planificación de CIDRs.
Paso 1 — Recopilar información de AWS
Antes de configurar el peering en Atlas, necesitás los siguientes valores de tu cuenta de AWS.
**Obtener el Account ID**
Hacé clic en tu nombre de usuario en la esquina superior derecha de la consola de AWS. Tu **Account ID** de 12 dígitos aparece en el menú desplegable.
**Obtener el VPC ID y CIDR**
En la consola de AWS, buscá **VPC** y abrí **Your VPCs**. Seleccioná la VPC donde corren tus workloads y anotá el **VPC ID** (comienza con `vpc-`) y el **IPv4 CIDR** (ej: `10.0.0.0/16`).
| **Campo** | **Dónde encontrarlo** |
|---|---|
| **Account ID** | Menú desplegable en la esquina superior derecha de AWS |
| **VPC ID** | VPC → Your VPCs (comienza con `vpc-`) |
| **VPC CIDR** | VPC → Your VPCs → columna IPv4 CIDR |
| **Application VPC Region** | La región de AWS donde vive tu VPC |
Paso 2 — Crear la conexión de Peering en Atlas
-
En MongoDB Atlas, navegá a **Network Access** en el menú lateral izquierdo.
-
Hacé clic en la pestaña **Peering** y luego en **Add Peering Connection**.
-
Seleccioná **AWS** como proveedor cloud y completá el formulario con los valores del Paso 1:
- **Account ID** — tu número de cuenta de AWS de 12 dígitos
- **VPC ID** — el ID de VPC que comienza con `vpc-`
- **VPC CIDR** — el rango de IPs de tu VPC
- **Application VPC Region** — la región de AWS
- **Atlas VPC CIDR** — Atlas sugerirá un rango (ej: `192.168.240.0/21`); conservalo salvo que entre en conflicto con tu red
-
Hacé clic en **Initiate Peering**.
Atlas mostrará la conexión con estado **"Waiting for Approval"**. La solicitud debe aceptarse ahora desde la consola de AWS.
Paso 3 — Aceptar la solicitud de Peering en AWS
-
En la consola de AWS, navegá a **VPC → Peering connections**.
-
Verás una conexión con estado **"Pending acceptance"**.
-
Seleccioná la conexión, hacé clic en **Actions → Accept request**.
-
Revisá los detalles en el modal (VPCs, CIDRs, regiones) y confirmá.
Una vez aceptada, el estado cambia a **"Active"** en AWS y **"Available"** en Atlas.
Paso 4 — Configurar las Route Tables
Para que el tráfico fluya a través de la conexión de peering, debés agregar una ruta en la Route Table de las subnets donde corren tus workloads.
- En la consola de AWS, navegá a **VPC → Route Tables**.
- Seleccioná la Route Table asociada a las subnets de tus workloads.
- Abrí la pestaña **Routes** y hacé clic en **Edit routes → Add route**:
- **Destination**: el CIDR de la VPC de Atlas (ej: `192.168.240.0/21`)
- **Target**: seleccioná **Peering Connection** y elegí la conexión que acabás de crear
- Hacé clic en **Save changes**.
Paso 5 — Configurar un Security Group
Creá un Security Group que permita tráfico de salida hacia los puertos de MongoDB Atlas:
- En la consola de AWS, navegá a **EC2 → Security Groups → Create security group**.
- Agregá una regla de **salida (outbound)**:
| **Tipo** | **Protocolo** | **Rango de puertos** | **Destino** |
|---|---|---|---|
| Custom TCP | TCP | 27015 – 27017 | CIDR de la VPC de Atlas (ej: `192.168.240.0/21`) |
- Asociá este Security Group a las instancias EC2, node groups de EKS u otros recursos que necesiten conectarse a Atlas.
Si usás **EKS con Karpenter**, agregá el siguiente tag al Security Group para que Karpenter lo detecte y aplique automáticamente:
| **Key** | **Value** |
|---|---|
| `karpenter.sh/discovery` | `YOUR_CLUSTER_NAME` |
Paso 6 — Agregar el CIDR de tu VPC a la IP Access List
Crear la conexión de peering no es suficiente — también debés habilitar el acceso a nivel de red.
En MongoDB Atlas, navegá a **Network Access → IP Access List → Add IP Address** e ingresá el **CIDR de tu VPC de AWS** (ej: `10.0.0.0/16`).
Paso 7 (Opcional) — Conectarse a través de una VPN
Si tu equipo accede a MongoDB Atlas mediante una VPN como Pritunl, la resolución DNS estándar no funcionará sobre el peering por defecto. Seguí estos pasos para habilitarla:
**Habilitar Custom DNS en Atlas**
En Atlas, navegá a **Project → Settings** y habilitá **"Using Custom DNS on AWS with VPC peering"**.
**Usar el connection string de Peering privado**
Al conectarte al cluster, seleccioná **"Private IP for Peering"** en el modal de conexión. Esto provee un hostname que resuelve a la IP privada del cluster.
**Agregar la ruta del CIDR de Atlas en Pritunl**
En la configuración del servidor de Pritunl, agregá el CIDR de la VPC de Atlas como ruta adicional para que los clientes VPN puedan alcanzarlo.
Conectate a la VPN y probá la conexión usando la nueva dirección privada.
Verificación
**Desde una instancia EC2 privada:**
```bash dnf install -qy mongodb-mongosh-shared-openssl3 mongosh "mongodb+srv://YOUR_CLUSTER_URL" --apiVersion 1 --username YOUR_USERNAME ```
**Desde un Pod en EKS:**
```yaml apiVersion: v1 kind: Pod metadata: name: mongodb-client spec: containers:
- name: mongodb-client image: mongo:latest command: ["/bin/sh", "-c", "sleep 3600"] ```
```bash
kubectl exec -it mongodb-client --
mongosh "mongodb+srv://YOUR_CLUSTER_URL" --apiVersion 1 --username YOUR_USERNAME
```
Una conexión exitosa confirma que el peering está funcionando correctamente.