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 Cloud SQL, Spanner, Cloud Memorystore, Compute Engine ou microsserviços internos do Kubernetes.
O acesso à VPC só está disponível no ambiente de execução (no contêiner Cloud Run), não no momento do build (Cloud Build).
Escolher como se conectar a uma rede VPC
- Saída de VPC direta: mais simples, rápida e barata. Usa um endereço IP por contêiner. Recomendado para a maioria dos casos de uso.
- Conectores sem servidor: reúne endereços IP para aplicativos maiores. Requer pagamento pela VM subjacente. Consulte "Acesso VPC sem servidor" na página de preços da VPC para ver os detalhes de preços.
Configurar em apphosting.yaml
Use o mapeamento vpcAccess no arquivo apphosting.yaml para configurar o acesso.
Use um nome de rede/conector totalmente qualificado ou um ID. O uso de IDs permite
a portabilidade entre ambientes de preparo e de produção com diferentes
conectores/redes.
Configuração de saída de VPC direta (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
Configuração do conector sem servidor (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Exemplo: conectar-se ao Memorystore para Redis em um app Next.js
Sistemas de armazenamento em cache, como Redis ou Memcached, são usados para criar uma camada rápida de armazenamento em cache de dados para um app. Este exemplo mostra como configurar o Memorystore para Redis no mesmo projeto do Google Cloud que o back-end do Firebase App Hosting e se conectar a ele usando a saída de VPC direta.
Etapa 0: criar uma instância do Memorystore para Redis
- Acesse a
página do Memorystore para Redis
no console do Google Cloud.
- Verifique se o mesmo projeto que você está usando para o Firebase App Hosting está selecionado.
- Se não for possível acessar essa página, verifique se o faturamento está ativado para o projeto e se você ativou a API Memorystore.
- Selecione Criar instância.
- Configure a nova instância com as configurações que preferir. Confira alguns exemplos de valores que você pode usar:
- Insira
my-redis-cacheem ID da instância. - Digite
Redis cacheem Nome de exibição. - Escolha Básico no seletor de nível. O nível básico designa um nó independente do Redis, ao contrário 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 zona.
- Digite
5em Capacidade. Isso define a capacidade da instância para 5 GB. - Selecione
7.0(ou a versão padrão recomendada) em Versão. - Escolha padrão no seletor Rede autorizada.
- Insira
Etapa 1: atualizar apphosting.yaml com o ID da rede VPC
- Acesse a página de redes VPC no console do Google Cloud.
- Encontre o ID da rede VPC da instância do Memorystore for Redis (geralmente,
é
default). Defina a configuração de saída de VPC direta em
apphosting.yamlusando 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 instância do Memorystore para Redis no console do Google Cloud.
Conecte-se ao Redis com as variáveis de ambiente
REDISPORTeREDISHOST. Defina-os emapphosting.yamlusando os valores de host e porta do console do 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 app
Instale o pacote npm redis:
npm install redis@latestAcesse o cache do Redis no seu código. Use as variáveis de ambiente configuradas na etapa anterior. Por exemplo, veja como ler de um cache em um gerenciador de rotas do 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({ socket: { host: REDISHOST, port: Number(REDISPORT), }, }) .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 }); }
Etapa 4 (opcional): configurar o app para desenvolvimento local
O emulador Firebase App Hosting pode substituir valores usando
apphosting.emulator.yaml. Aqui, é possível mudar o valor de REDISHOST para
apontar para o host local, de modo que você possa desenvolver localmente usando uma instalação
local do Redis.
- Instale o Redis na máquina local
Crie ou edite
apphosting.emulator.yamlpara referenciar sua instância local:env: - variable: REDISHOST value: 127.0.0.1