Tu backend de Firebase App Hosting puede conectarse a una red de nube privada virtual (VPC). Esto permite que tu Firebase App Hosting backend acceda a servicios de backend que no son accesibles con direcciones IP públicas, como Cloud SQL, Spanner, Cloud Memorystore, Compute Engine, o microservicios internos de Kubernetes.
El acceso a la VPC solo está disponible en el tiempo de ejecución (desde tu Cloud Run contenedor), no en el tiempo de compilación (Cloud Build).
Elige cómo conectarte a una red de VPC
- Salida de VPC directa: Es más simple, rápida y económica. Usa una dirección IP por contenedor. Se recomienda para la mayoría de los casos de uso.
- Conectores sin servidores: Agrupan direcciones IP para aplicaciones más grandes. Requiere el pago de la VM subyacente. Consulta "Acceso a VPC sin servidores" en la página de precios de VPC para obtener detalles sobre los precios.
Configura en apphosting.yaml
Usa la asignación vpcAccess en tu archivo apphosting.yaml para configurar el acceso.
Usa un nombre o un ID de red o conector completamente calificado. El uso de IDs permite
la portabilidad entre entornos de etapa de pruebas y producción con diferentes
conectores o redes.
Configuración de salida de VPC directa (apphosting.yaml):
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
Configuración del conector sin servidores (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Ejemplo: Conéctate a Memorystore para Redis desde una app de Next.js
Los sistemas de almacenamiento en caché, como Redis o Memcached, se usan comúnmente para compilar una capa de almacenamiento en caché de datos rápida para una app. En este ejemplo, se muestra cómo configurar Memorystore para Redis en el mismo Google Cloud proyecto que tu Firebase App Hosting backend y conectarte a él con la salida de VPC directa.
Paso 0: Crea una instancia de Memorystore para Redis
- Ve a la
página
en la consola Google Cloud.
- Asegúrate de que esté seleccionado el mismo proyecto que usas para Firebase App Hosting es.
- Si no puedes acceder a esta página, asegúrate de que la facturación esté habilitada para tu proyecto y de que hayas habilitado la API de Memorystore.
- Selecciona Crear instancia.
- Configura la nueva instancia con los parámetros de configuración que prefieras. Estos son algunos
valores de ejemplo que puedes usar:
- Ingresa
my-redis-cacheen ID de instancia. - Ingresa
Redis cacheen Nombre visible. - Elige Básico en el selector de nivel. En el nivel Básico, se designa un nodo independiente de Redis, en lugar del nivel Estándar, que usa un nodo de réplica para crear una copia de seguridad de tus datos.
- Elige la región de tu backend de App Hosting en el selector de Región. Asegúrate de establecer este valor para que coincida con la región de tu backend.
- Elige cualquiera en el selector de zona.
- Ingresa
5en Capacidad. Esto establece tu capacidad de instancia en 5 GB. - Selecciona
5.0en Versión (recomendado). - Elige predeterminado en el selector de Red autorizada.
- Ingresa
Paso 1: Actualiza apphosting.yaml con el ID de tu red de VPC
- Visita la página de redes de VPC en la Google Cloud consola.
- Busca el ID de red de VPC de tu instancia de Memorystore para Redis (a menudo será
default). Configura la salida de VPC directa en
apphosting.yamlcon el ID de red de VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Paso 2: Agrega variables de entorno que dirijan tu app a Redis
- Busca la información de conexión (host y puerto) en la pestaña "Conexiones" de tu instancia de Memorystore para Redis en la Google Cloud consola.
Conéctate a Redis con las variables de entorno
REDISPORTyREDISHOST. Configúralas enapphosting.yamlcon los valores de host y puerto de la Google Cloud consola:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Paso 3: Usa Redis desde tu app
Instala el paquete npm de Redis:
npm install redis@latestAccede a tu caché de Redis desde tu código. Usa las variables de entorno configuradas en el paso anterior. Por ejemplo, así puedes leer desde una caché en un controlador de ruta de Next.js:
src/lib/redis.jsimport { createClient } from "redis"; // Set these environment variables in apphosting.yaml const REDISHOST = process.env.REDISHOST; const REDISPORT = process.env.REDISPORT; let redisClient; export async function getClient(req, res) { // Only connect if a connection isn't already available if (!redisClient) { redisClient = await createClient(REDISPORT, REDISHOST) .on("error", (err) => console.error("Redis Client Error", err)) .connect(); } return redisClient; }src/app/counter/route.jsimport { getClient } from "@/lib/redis.js"; export async function GET(request) { const redisClient = await getClient(); const count = await redisClient.get("counter"); return Response.json({ count }); } export async function POST(request) { const redisClient = await getClient(); const count = await redisClient.incr("counter"); return Response.json({ count }); }
Paso 4 (opcional): Configura tu app para el desarrollo local
El emulador Firebase App Hosting puede anular valores con
apphosting.emulator.yaml. Aquí, puedes cambiar el valor de REDISHOST para que
apunte al host local y puedas desarrollar de forma local con una instalación local
de Redis.
- Instala Redis en tu máquina local.
Crea o edita
apphosting.emulators.yamlpara hacer referencia a tu instancia local:env: - variable: REDISHOST value: 127.0.0.1