O back-end do Firebase App Hosting pode se conectar a uma rede de nuvem privada virtual (VPC). Isso permite que o back-end do Firebase App Hosting acesse serviços de back-end que não podem ser acessados usando endereços IP públicos, como o Cloud SQL, o Spanner, o Cloud Memorystore, o Compute Engine ou os microsserviços internos do Kubernetes.
O acesso à VPC só está disponível no momento da execução (do contêiner Cloud Run), não no momento do build (Cloud Build).
Configurar em apphosting.yaml
Use o mapeamento vpcAccess
no arquivo apphosting.yaml
para configurar o acesso.
Use um nome de rede totalmente qualificado ou um ID. O uso de IDs permite
a portabilidade entre ambientes de preparo e de produção com diferentes
conectores/redes.
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
Exemplo: conectar-se ao Memorystore para Redis em um app Next.js
Sistemas de armazenamento em cache, como Redis ou Memcached, são comumente usados para criar uma camada de armazenamento em cache de dados rápida para um app. Este exemplo mostra como configurar o Memorystore para Redis no mesmo projeto Google Cloud do back-end Firebase App Hosting e se conectar a ele usando a saída direta da VPC.
Etapa 0: criar uma instância do Memorystore para Redis
- Acesse a página Memorystore para Redis no console Google Cloud.
- Verifique se o mesmo projeto que você está usando para Firebase App Hosting está selecionado.
- Se você não conseguir acessar essa página, verifique se o faturamento está ativado para seu projeto e se você ativou a API Memorystore.
- Selecione Criar instância.
- Configure a nova instância com suas configurações preferidas. Confira alguns
exemplos de valores que podem ser usados:
- Insira
my-redis-cache
em ID da instância. - Digite
Redis cache
em Nome de exibição. - Escolha Básico no seletor de nível. O nível básico designa um nó Redis autônomo, em vez do nível padrão, que usa um nó de réplica para fazer backup dos dados.
- Escolha a região do back-end do App Hosting no seletor Região. Defina esse valor para corresponder à região do seu back-end.
- Escolha qualquer no seletor de zonas.
- Digite
5
em Capacidade. Isso define a capacidade da instância para 5 GB. - Selecione
5.0
em Versão (recomendado). - Escolha padrão no seletor Rede autorizada.
- Insira
Etapa 1: atualizar apphosting.yaml
com o ID da rede VPC
- Acesse a página Redes VPC no console Google Cloud.
- Encontre o ID da rede VPC da sua instância do Memorystore para Redis (geralmente
default
). Defina a configuração de saída da VPC direta em
apphosting.yaml
usando o ID da rede VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Etapa 2: adicionar variáveis de ambiente que direcionam o app ao Redis
- Encontre as informações de conexão (host e porta) na guia "Conexões" da sua instância do Memorystore para Redis no console do Google Cloud.
Conecte-se ao Redis com as variáveis de ambiente
REDISPORT
eREDISHOST
. Defina essas informações emapphosting.yaml
usando os valores de host e porta do console Google Cloud:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Etapa 3: usar o Redis no seu app
Instale o pacote npm redis:
npm install redis@latest
Acesse o cache do Redis no seu código. Use as variáveis de ambiente configuradas na etapa anterior. Por exemplo, confira como ler de um cache em um gerenciador de rota do Next.js:
src/lib/redis.js
import { 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.js
import { 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 }); }
Etapa 4 (opcional): configurar o app para desenvolvimento local
O emulador Firebase App Hosting pode substituir valores usando
apphosting.emulator.yaml
. Aqui, você pode mudar o valor de REDISHOST
para
apontar para o localhost para que possa desenvolver localmente usando uma instalação
local do Redis.
- Instalar o Redis na sua máquina local
Crie ou edite
apphosting.emulators.yaml
para fazer referência à sua instância local:env: - variable: REDISHOST value: 127.0.0.1