Ihr Firebase App Hosting-Backend kann eine Verbindung zu einem VPC-Netzwerk (Virtual Private Cloud) herstellen. So kann Ihr Firebase App Hosting-Backend auf Backenddienste zugreifen, auf die über öffentliche IP-Adressen nicht zugegriffen werden kann, z. B. Cloud SQL, Spanner, Cloud Memorystore, Compute Engine oder interne Kubernetes-Mikroservices.
Der VPC-Zugriff ist nur zur Laufzeit (über Ihren Cloud Run-Container) und nicht zur Buildzeit (Cloud Build) verfügbar.
In apphosting.yaml
konfigurieren
Verwenden Sie die vpcAccess
-Zuordnung in Ihrer apphosting.yaml
-Datei, um den Zugriff zu konfigurieren.
Verwenden Sie entweder einen voll qualifizierten Netzwerknamen oder eine ID. Die Verwendung von IDs ermöglicht die Portabilität zwischen Staging- und Produktionsumgebungen mit unterschiedlichen Konnektoren/Netzwerken.
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
Beispiel: Verbindung von einer Next.js-App zu Memorystore for Redis herstellen
Caching-Systeme wie Redis oder Memcached werden häufig verwendet, um eine schnelle Daten-Caching-Ebene 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 einen direkten VPC-Ausgang eine Verbindung dazu herstellen.
Schritt 0: Memorystore for Redis-Instanz erstellen
- Rufen Sie in der Google Cloud Console die Seite Memorystore for Redis auf.
- 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 Ihren bevorzugten Einstellungen. Hier sind einige Beispielwerte, die Sie verwenden können:
- Geben Sie unter Instanz-ID
my-redis-cache
ein. - Geben Sie unter Anzeigename
Redis cache
ein. - Wählen Sie unter „Stufe auswählen“ die Option Basis 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 in der Auswahl Region die Region Ihres App Hosting-Backends aus. Achten Sie darauf, dass dieser Wert mit der Region Ihres Backends ü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 die Option
5.0
aus (empfohlen). - Wählen Sie in der Auswahl Autorisiertes Netzwerk die Option default aus.
- Geben Sie unter Instanz-ID
Schritt 1: apphosting.yaml
durch Ihre VPC-Netzwerk-ID ersetzen
- Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
- Suchen Sie die VPC-Netzwerk-ID Ihrer Memorystore for Redis-Instanz. Häufig ist das
default
. Konfigurieren Sie die ausgehende VPC-Traffic-Konfiguration in
apphosting.yaml
mit der VPC-Netzwerk-ID:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Schritt 2: Umgebungsvariablen hinzufügen, die Ihre App an 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
undREDISHOST
eine Verbindung zu Redis her. Legen Sie diese inapphosting.yaml
mit den Host- und Portwerten aus der Google Cloud-Konsole fest:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Schritt 3: Redis über Ihre App verwenden
Installieren Sie das npm-Paket redis:
npm install redis@latest
Ü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.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 }); }
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, damit Sie lokal mit einer lokalen Redis-Installation entwickeln können.
- Redis auf Ihrem lokalen Computer installieren
Erstellen oder bearbeiten Sie
apphosting.emulators.yaml
, um auf Ihre lokale Instanz zu verweisen:env: - variable: REDISHOST value: 127.0.0.1