Connecter Firebase App Hosting à un réseau VPC
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Votre backend Firebase App Hosting peut se connecter à un réseau de cloud privé virtuel (VPC). Cela permet à votre backend Firebase App Hosting d'accéder aux services de backend qui ne sont pas accessibles à l'aide d'adresses IP publiques, tels que Cloud SQL, Spanner, Cloud Memorystore, Compute Engine ou les microservices internes Kubernetes.
L'accès au VPC n'est disponible qu'au moment de l'exécution (à partir de votre conteneur Cloud Run), et non au moment de la compilation (Cloud Build).
Choisir comment se connecter à un réseau VPC
- Sortie VPC directe : plus simple, plus rapide et moins coûteuse. Utilise une adresse IP par conteneur.
Recommandé pour la plupart des cas d'utilisation.
- Connecteurs sans serveur : met en pool les adresses IP pour les applications plus volumineuses. Nécessite le paiement de la VM sous-jacente. Pour en savoir plus sur les tarifs, consultez la section "Accès au VPC sans serveur" sur la page des tarifs de VPC.
Utilisez le mappage vpcAccess
dans votre fichier apphosting.yaml
pour configurer l'accès.
Utilisez un nom de réseau/connecteur complet ou un ID. L'utilisation d'ID permet la portabilité entre les environnements de préproduction et de production avec différents connecteurs/réseaux.
Configuration de la sortie VPC directe (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
Configuration du connecteur sans serveur (apphosting.yaml
) :
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Exemple : se connecter à Memorystore pour Redis depuis une application Next.js
Les systèmes de mise en cache comme Redis ou Memcached sont couramment utilisés pour créer une couche de mise en cache de données rapide pour une application. Cet exemple vous montre comment configurer Memorystore pour Redis dans le même projet Google Cloud que votre backend Firebase App Hosting et comment vous y connecter à l'aide de la sortie VPC directe.
Étape 0 : Créez une instance Memorystore pour Redis
- Accédez à la page Memorystore pour Redis dans la console Google Cloud.
- Assurez-vous que le même projet que celui que vous utilisez pour Firebase App Hosting est sélectionné.
- Si vous ne parvenez pas à accéder à cette page, assurez-vous que la facturation est activée pour votre projet et que vous avez activé l'API Memorystore.
- Sélectionnez Créer une instance.
- Configurez la nouvelle instance avec les paramètres de votre choix. Voici quelques exemples de valeurs que vous pouvez utiliser :
- Saisissez
my-redis-cache
sous ID de l'instance.
- Saisissez
Redis cache
sous Nom à afficher.
- Sélectionnez De base sous le sélecteur de niveau. Le niveau de base désigne un nœud Redis autonome, contrairement au niveau standard qui utilise un nœud dupliqué pour sauvegarder vos données.
- Choisissez la région de votre backend App Hosting dans le sélecteur Région.
Veillez à définir cette valeur pour qu'elle corresponde à la région de votre backend.
- Sélectionnez N'importe quelle dans le sélecteur de zone.
- Saisissez
5
sous Capacité. La capacité de votre instance est alors définie sur 5 Go.
- Sélectionnez
5.0
sous Version (recommandé).
- Sélectionnez Par défaut dans le sélecteur Réseau autorisé.
Étape 1 : Remplacez apphosting.yaml
par l'ID de votre réseau VPC
- Accédez à la page Réseaux VPC dans la console Google Cloud.
- Recherchez l'ID du réseau VPC de votre instance Memorystore pour Redis (il s'agit souvent de
default
).
Définissez la configuration de sortie VPC directe dans apphosting.yaml
à l'aide de l'ID du réseau VPC :
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
- network: my-network-id
Étape 2 : Ajoutez des variables d'environnement qui redirigent votre application vers Redis
- Recherchez les informations de connexion (hôte et port) dans l'onglet "Connexions" de votre instance Memorystore pour Redis dans la console Google Cloud.
Connectez-vous à Redis avec les variables d'environnement REDISPORT
et REDISHOST
. Définissez-les dans apphosting.yaml
en utilisant les valeurs d'hôte et de port de la console Google Cloud :
env:
# Sample only. Use actual values provided by Memorystore
- variable: REDISPORT
value: 6379
- variable: REDISHOST
value: 10.127.16.3
Étape 3 : Utilisez Redis depuis votre application
Installez le package npm redis :
npm install redis@latest
Accédez à votre cache Redis depuis votre code. Utilisez les variables d'environnement configurées à l'étape précédente. Par exemple, voici comment lire à partir d'un cache dans un gestionnaire de 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 });
}
Étape 4 (facultatif) : Configurez votre application pour le développement local
L'émulateur Firebase App Hosting peut remplacer les valeurs à l'aide de apphosting.emulator.yaml
. Ici, vous pouvez modifier la valeur de REDISHOST
pour qu'elle pointe vers l'hôte local. Vous pourrez ainsi développer en local à l'aide d'une installation locale de Redis.
- Installer Redis sur votre machine locale
Créez ou modifiez apphosting.emulators.yaml
pour faire référence à votre instance locale :
env:
- variable: REDISHOST
value: 127.0.0.1
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/08 (UTC).
[null,null,["Dernière mise à jour le 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"]]