Conectar o Firebase App Hosting a uma rede VPC
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Seu back-end Firebase App Hosting pode se conectar a uma rede de nuvem privada virtual (VPC). Isso permite que seu
backend Firebase App Hosting acesse serviços de backend 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 está disponível apenas no tempo de execução (do contêiner Cloud Run), não no tempo de build (Cloud Build).
Escolher como se conectar a uma rede VPC
Use o mapeamento vpcAccess
no arquivo apphosting.yaml
para configurar o acesso.
Use um nome ou ID de rede/conector totalmente qualificado. O uso de IDs permite a portabilidade entre ambientes de preparo e produção com diferentes conectores/redes.
Configuração de saída direta da VPC (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 de 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 que o back-end Firebase App Hosting e se conectar a ele usando o egresso direto 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 as configurações de sua preferência. Confira alguns exemplos de valores que você pode usar:
- 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 App Hosting no seletor Região.
Defina esse valor para corresponder à região do seu back-end.
- Escolha qualquer no seletor de zona.
- 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.
Etapa 1: atualize apphosting.yaml
com o ID da sua 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
e REDISHOST
. Defina
esses valores em apphosting.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, veja como ler de
um cache em um gerenciador de rotas 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 host local e desenvolver localmente usando uma instalação
local do Redis.
- Instale o Redis na sua máquina local
Crie ou edite apphosting.emulators.yaml
para referenciar sua instância local:
env:
- variable: REDISHOST
value: 127.0.0.1
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-08-08 UTC.
[null,null,["Última atualização 2025-08-08 UTC."],[],[],null,["\u003cbr /\u003e\n\nYour Firebase App Hosting backend can connect to a [Virtual Private Cloud\n(VPC)](https://cloud.google.com/vpc/docs) network. This allows your\nFirebase App Hosting backend to access backend services not accessible using\npublic IP addresses, such as Cloud SQL, Spanner, Cloud Memorystore,\nCompute Engine, or Kubernetes internal microservices.\n\nVPC access is only available at runtime (from your Cloud Run\ncontainer), not at build time (Cloud Build).\n\nChoose how to connect to a VPC network\n\n- [Direct VPC\n Egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc): Simpler, faster, and less expensive. Uses one IP address per container. Recommended for most use cases.\n- [Serverless\n Connectors](https://cloud.google.com/vpc/docs/serverless-vpc-access): Pools IP addresses for larger applications. Requires payment for the underlying VM. See \"Serverless VPC Access\" in the [VPC pricing page](https://cloud.google.com/vpc/network-pricing) for pricing details.\n\nConfigure in `apphosting.yaml`\n\nUse the `vpcAccess` mapping in your `apphosting.yaml` file to configure access.\nUse either a fully qualified network/connector name or an ID. Using IDs allows\nfor portability between staging and production environments with different\nconnectors/networks.\n\nDirect VPC Egress Configuration (`apphosting.yaml`): \n\n runConfig:\n vpcAccess:\n egress: PRIVATE_RANGES_ONLY # Default value\n networkInterfaces:\n # Specify at least one of network and/or subnetwork\n - network: my-network-id\n subnetwork: my-subnetwork-id\n\nServerless Connector Configuration (`apphosting.yaml`): \n\n runConfig:\n vpcAccess:\n egress: ALL_TRAFFIC\n connector: connector-id\n\nExample: connect to Memorystore for Redis from a Next.js app\n\nCaching systems like Redis or Memcached are commonly used to build a fast data\ncaching layer for an app. This example shows you how to set up\n[Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview)\nin the same Google Cloud project as your Firebase App Hosting backend and\nconnect to it using\n[Direct VPC egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc).\n\nStep 0: Create a Memorystore for Redis instance **Note:** you may also be prompted to create a [service connection policy](https://cloud.google.com/vpc/docs/about-service-connection-policies) as part of this setup.\n\n1. Go to the [*Memorystore for Redis* page](https://console.cloud.google.com/memorystore/redis/instances) in the Google Cloud console.\n - Make sure the same project you're using for Firebase App Hosting is selected.\n - If you can't access this page, make sure billing is enabled for your project and that you've enabled the [Memorystore API](https://console.cloud.google.com/apis/dashboard).\n2. Select **Create Instance**.\n3. Configure the new instance with your preferred settings. Here are some example values you can use:\n - Enter `my-redis-cache` under **Instance ID**.\n - Enter `Redis cache` under **Display name**.\n - Choose **Basic** under the tier selector. Basic tier designates a standalone Redis node, as opposed to standard tier, which uses a replica node to backup your data.\n - Choose your App Hosting backend's region from the **Region** selector. **Be sure to set this value to match the region of your backend.**\n - Choose **any** from the zone selector.\n - Enter `5` under **Capacity**. This sets your instance capacity to 5 GB.\n - Select `5.0` under **Version** (recommended).\n - Choose **default** from the **Authorized network** selector.\n\nStep 1: Update `apphosting.yaml` with your VPC network ID\n\n1. Visit the [VPC networks page](/docs/app-hosting/console.cloud.google.com/networking/networks/list) in the Google Cloud console.\n2. Find the VPC network ID for your Memorystore for Redis instance (it will often be `default`).\n3. Set direct VPC egress configuration in `apphosting.yaml` using the VPC\n network ID:\n\n runConfig:\n vpcAccess:\n egress: PRIVATE_RANGES_ONLY # Default value\n networkInterfaces:\n - network: my-network-id\n\nStep 2: Add environment variables that direct your app to Redis\n\n1. Find connection information (host and port) in the \"Connections\" tab of your Memorystore for Redis instance in the Google Cloud console.\n2. Connect to Redis with `REDISPORT` and `REDISHOST` environment variables. Set\n these in `apphosting.yaml` using the host and port values from the\n Google Cloud console:\n\n env:\n # Sample only. Use actual values provided by Memorystore\n - variable: REDISPORT\n value: 6379\n - variable: REDISHOST\n value: 10.127.16.3\n\nStep 3: Use redis from your app\n\n1. Install the [redis](https://www.npmjs.com/package/redis) npm package:\n\n `npm install redis@latest`\n2. Access your redis cache from your code. Use the environment variables\n configured in the previous step. For example, here's how you might read from\n a cache in a Next.js route handler:\n\n - `src/lib/redis.js`\n\n import { createClient } from \"redis\";\n\n // Set these environment variables in apphosting.yaml\n const REDISHOST = process.env.REDISHOST;\n const REDISPORT = process.env.REDISPORT;\n\n let redisClient;\n\n export async function getClient(req, res) {\n // Only connect if a connection isn't already available\n if (!redisClient) {\n redisClient = await createClient(REDISPORT, REDISHOST)\n .on(\"error\", (err) =\u003e console.error(\"Redis Client Error\", err))\n .connect();\n }\n\n return redisClient;\n }\n\n - `src/app/counter/route.js`\n\n import { getClient } from \"@/lib/redis.js\";\n\n export async function GET(request) {\n const redisClient = await getClient();\n const count = await redisClient.get(\"counter\");\n\n return Response.json({ count });\n }\n\n export async function POST(request) {\n const redisClient = await getClient();\n const count = await redisClient.incr(\"counter\");\n\n return Response.json({ count });\n }\n\nStep 4 (optional): Configure your app for local development\n\nThe Firebase App Hosting emulator can override values using\n`apphosting.emulator.yaml`. Here, you can change the value of `REDISHOST` to\npoint to the localhost so that you can develop locally using a local\ninstallation of Redis.\n\n1. [Install Redis on your local machine](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)\n2. Create or edit `apphosting.emulators.yaml` to reference your local instance:\n\n env:\n - variable: REDISHOST\n value: 127.0.0.1"]]