Firebase App Hosting mit einem VPC-Netzwerk verbinden
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Ihr Firebase App Hosting-Backend kann eine Verbindung zu einem VPC-Netzwerk (Virtual Private Cloud) herstellen. Dadurch kann Ihr Firebase App Hosting-Backend auf Backend-Dienste zugreifen, die nicht über öffentliche IP-Adressen zugänglich sind, z. B. Cloud SQL, Spanner, Cloud Memorystore, Compute Engine oder interne Kubernetes-Microservices.
Der VPC-Zugriff ist nur zur Laufzeit (über Ihren Cloud Run-Container) und nicht zur Build-Zeit (Cloud Build) verfügbar.
Verbindung zu einem VPC-Netzwerk herstellen
Ausgehender Direct VPC-Traffic: einfacher, schneller und kostengünstiger. Es wird eine IP-Adresse pro Container verwendet.
Für die meisten Anwendungsfälle empfohlen.
Serverless Connectors: IP-Adressen für größere Anwendungen poolen. Erfordert die Zahlung für die zugrunde liegende VM. Informationen zu den Preisen finden Sie auf der Seite „VPC-Preise“ unter „Serverloser VPC-Zugriff“.
In apphosting.yaml konfigurieren
Verwenden Sie die vpcAccess-Zuweisung in Ihrer apphosting.yaml-Datei, um den Zugriff zu konfigurieren.
Verwenden Sie entweder einen vollqualifizierten Netzwerk-/Connector-Namen oder eine ID. Durch die Verwendung von IDs ist die Übertragbarkeit zwischen Staging- und Produktionsumgebungen mit unterschiedlichen Connectors/Netzwerken möglich.
Konfiguration für ausgehenden Direct VPC-Traffic (apphosting.yaml):
runConfig:vpcAccess:egress:PRIVATE_RANGES_ONLY# Default valuenetworkInterfaces:# Specify at least one of network and/or subnetwork-network:my-network-idsubnetwork:my-subnetwork-id
Konfiguration des serverlosen Connectors (apphosting.yaml):
Beispiel: Verbindung zu Memorystore for Redis über eine Next.js-App herstellen
Caching-Systeme wie Redis oder Memcached werden häufig verwendet, um eine schnelle Datenschicht für eine App zu erstellen. In diesem Beispiel wird gezeigt, wie Sie Memorystore for Redis im selben Google Cloud-Projekt wie Ihr Firebase App Hosting-Backend einrichten und über Direct VPC egress eine Verbindung dazu herstellen.
Schritt 0: Memorystore for Redis-Instanz erstellen
Achten Sie darauf, dass dasselbe Projekt ausgewählt ist, das Sie für Firebase App Hosting verwenden.
Wenn Sie nicht auf diese Seite zugreifen können, prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist und ob Sie die Memorystore API aktiviert haben.
Wählen Sie Instanz erstellen aus.
Konfigurieren Sie die neue Instanz mit den gewünschten Einstellungen. Hier sind einige Beispielwerte, die Sie verwenden können:
Geben Sie unter Instanz-IDmy-redis-cache ein.
Geben Sie unter AnzeigenameRedis cache ein.
Wählen Sie unter der Stufenauswahl die Option Basic aus. Die Basis-Stufe bezeichnet einen eigenständigen Redis-Knoten, im Gegensatz zur Standardstufe, die zur Sicherung Ihrer Daten einen Replikatknoten verwendet.
Wählen Sie im Drop-down-Menü Region die Region für Ihr App Hosting-Backend aus.
Achten Sie darauf, dass dieser Wert mit der Region Ihres Back-Ends übereinstimmt.
Wählen Sie in der Zonenauswahl Beliebig aus.
Geben Sie unter Kapazität den Wert 5 ein. Dadurch wird die Instanzkapazität auf 5 GB festgelegt.
Wählen Sie unter Version (empfohlen) 5.0 aus.
Wählen Sie in der Auswahl für Autorisiertes Netzwerk die Option Standard aus.
Schritt 1: apphosting.yaml durch Ihre VPC-Netzwerk-ID ersetzen
Schritt 2: Umgebungsvariablen hinzufügen, die Ihre App zu Redis weiterleiten
Verbindungsinformationen (Host und Port) finden Sie in der Google Cloud-Konsole auf dem Tab „Verbindungen“ Ihrer Memorystore for Redis-Instanz.
Stellen Sie mit den Umgebungsvariablen REDISPORT und REDISHOST eine Verbindung zu Redis her. Legen Sie diese in apphosting.yaml mit den Host- und Portwerten aus der Google Cloud-Konsole fest:
env:# Sample only. Use actual values provided by Memorystore-variable:REDISPORTvalue:6379-variable:REDISHOSTvalue:10.127.16.3
Über den Code auf den Redis-Cache zugreifen Verwenden Sie die im vorherigen Schritt konfigurierten Umgebungsvariablen. So können Sie beispielsweise in einem Next.js-Routen-Handler aus einem Cache lesen:
src/lib/redis.js
import{createClient}from"redis";// Set these environment variables in apphosting.yamlconstREDISHOST=process.env.REDISHOST;constREDISPORT=process.env.REDISPORT;letredisClient;exportasyncfunctiongetClient(req,res){// Only connect if a connection isn't already availableif(!redisClient){redisClient=awaitcreateClient(REDISPORT,REDISHOST).on("error",(err)=>console.error("Redis Client Error",err)).connect();}returnredisClient;}
Schritt 4 (optional): App für die lokale Entwicklung konfigurieren
Der Firebase App Hosting-Emulator kann Werte mit apphosting.emulator.yaml überschreiben. Hier können Sie den Wert von REDISHOST so ändern, dass er auf den Localhost verweist. So können Sie lokal mit einer lokalen Installation von Redis entwickeln.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-31 (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"]]