Collegare Firebase App Hosting a una rete VPC
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Il backend Firebase App Hosting può connettersi a una rete Virtual Private Cloud (VPC). In questo modo, il backend Firebase App Hosting può accedere ai servizi di backend non accessibili tramite indirizzi IP pubblici, come Cloud SQL, Spanner, Cloud Memorystore, Compute Engine o i microservizi interni di Kubernetes.
L'accesso VPC è disponibile solo in fase di runtime (dal container Cloud Run), non in fase di build (Cloud Build).
Scegliere come connettersi a una rete VPC
- VPC diretto
in uscita:
più semplice, veloce ed economico. Utilizza un indirizzo IP per container.
Consigliato per la maggior parte dei casi d'uso.
- Connettori
serverless:
raggruppano gli indirizzi IP per applicazioni più grandi. Richiede il pagamento della VM sottostante. Per i dettagli sui prezzi, consulta la sezione "Accesso VPC serverless" nella pagina dei prezzi di VPC.
Utilizza la mappatura vpcAccess
nel file apphosting.yaml
per configurare l'accesso.
Utilizza un nome di rete/connettore completo o un ID. L'utilizzo degli ID consente
la portabilità tra gli ambienti di gestione temporanea e di produzione con connettori/reti diversi.
Configurazione dell'uscita VPC diretta (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
Configurazione del connettore serverless (apphosting.yaml
):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Esempio: connettersi a Memorystore for Redis da un'app Next.js
I sistemi di memorizzazione nella cache come Redis o Memcached vengono comunemente utilizzati per creare un livello di memorizzazione nella cache rapido per un'app. Questo esempio mostra come configurare Memorystore for Redis nello stesso progetto Google Cloud del backend Firebase App Hosting e connettersi utilizzando l'uscita VPC diretta.
Passaggio 0: crea un'istanza Memorystore for Redis
- Vai alla
pagina Memorystore for Redis
nella console Google Cloud.
- Assicurati che sia selezionato lo stesso progetto che utilizzi per Firebase App Hosting.
- Se non riesci ad accedere a questa pagina, assicurati che la fatturazione sia abilitata per il tuo progetto e di aver abilitato l'API Memorystore.
- Seleziona Crea istanza.
- Configura la nuova istanza con le impostazioni che preferisci. Ecco alcuni valori di esempio che puoi utilizzare:
- Inserisci
my-redis-cache
in ID istanza.
- Inserisci
Redis cache
in Nome visualizzato.
- Scegli Base nel selettore del livello. Il livello Basic indica un
nodo Redis autonomo, a differenza del livello Standard, che utilizza un
nodo di replica per eseguire il backup dei dati.
- Scegli la regione del backend App Hosting dal selettore Regione.
Assicurati di impostare questo valore in modo che corrisponda alla regione del backend.
- Scegli qualsiasi opzione dal selettore di zona.
- Inserisci
5
in Capacità. In questo modo, la capacità dell'istanza viene impostata su 5 GB.
- Seleziona
5.0
in Versione (opzione consigliata).
- Scegli predefinita dal selettore Rete autorizzata.
Passaggio 1: aggiorna apphosting.yaml
con l'ID rete VPC
- Visita la
pagina Reti VPC
nella console Google Cloud.
- Trova l'ID rete VPC per l'istanza Memorystore for Redis (spesso è
default
).
Imposta la configurazione di VPC diretto in uscita in apphosting.yaml
utilizzando l'ID rete VPC:
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
- network: my-network-id
Passaggio 2: aggiungi variabili di ambiente che indirizzano l'app a Redis
- Trova le informazioni di connessione (host e porta) nella scheda "Connessioni" dell'istanza Memorystore for Redis nella console Google Cloud.
Connettiti a Redis con le variabili di ambiente REDISPORT
e REDISHOST
. Imposta
questi valori in apphosting.yaml
utilizzando i valori di host e porta della
console Google Cloud:
env:
# Sample only. Use actual values provided by Memorystore
- variable: REDISPORT
value: 6379
- variable: REDISHOST
value: 10.127.16.3
Passaggio 3: utilizza Redis dalla tua app
Installa il pacchetto npm redis:
npm install redis@latest
Accedi alla cache Redis dal tuo codice. Utilizza le variabili di ambiente
configurate nel passaggio precedente. Ad esempio, ecco come potresti leggere da una cache in un gestore di route 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 });
}
(Facoltativo) Passaggio 4: configura l'app per lo sviluppo locale
L'emulatore Firebase App Hosting può sostituire i valori utilizzando
apphosting.emulator.yaml
. Qui puoi modificare il valore di REDISHOST
in modo che punti a localhost, in modo da poter sviluppare localmente utilizzando un'installazione locale di Redis.
- Installa Redis sulla tua macchina locale
Crea o modifica apphosting.emulators.yaml
per fare riferimento all'istanza locale:
env:
- variable: REDISHOST
value: 127.0.0.1
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-08-08 UTC.
[null,null,["Ultimo aggiornamento 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"]]