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-Mikrodienste.
Der VPC-Zugriff ist nur zur Laufzeit (von Ihrem Cloud Run-Container) und nicht zur Build-Zeit (Cloud Build) verfügbar.
Verbindungsmethode zu einem VPC-Netzwerk auswählen
- Ausgehender Direct VPC-Traffic: Einfacher, schneller und kostengünstiger. Verwendet eine IP-Adresse pro Container. Für die meisten Anwendungsfälle empfohlen.
- Serverlose Connectors: Poolen IP-Adressen für größere Anwendungen. Erfordert die Zahlung für die zugrunde liegende VM. Preisdetails finden Sie auf der Seite mit den VPC-Preisen unter „Serverloser VPC-Zugriff“.
In apphosting.yaml konfigurieren
Verwenden Sie die Zuordnung vpcAccess in Ihrer apphosting.yaml-Datei, um den Zugriff zu konfigurieren.
Verwenden Sie entweder einen vollständig qualifizierten Netzwerk-/Connector-Namen oder eine ID. Die Verwendung von IDs ermöglicht die Übertragbarkeit zwischen Staging- und Produktionsumgebungen mit unterschiedlichen Connectors/Netzwerken.
Konfiguration für ausgehenden Direct VPC-Traffic (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
Konfiguration des serverlosen Connectors (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Beispiel: Verbindung zu Memorystore for Redis über eine Next.js-Anwendung herstellen
Caching-Systeme wie Redis oder Memcached werden häufig verwendet, um eine schnelle Daten-Caching-Ebene für eine Anwendung 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
- Rufen Sie in der Google Cloud Console die Seite Memorystore for Redis auf.
- Achten Sie darauf, dass das 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-ID
my-redis-cacheein. - Geben Sie unter Anzeigename
Redis cacheein. - Wählen Sie unter der Stufenauswahl die Option Basic aus. Die Basisstufe bezeichnet einen eigenständigen Redis-Knoten, im Gegensatz zur Standardstufe, die einen Replikatknoten zum Sichern Ihrer Daten verwendet.
- Wählen Sie die Region Ihres App Hosting-Backends aus der Auswahl Region 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
5ein. Dadurch wird die Instanzkapazität auf 5 GB festgelegt. - Wählen Sie unter Version die Option
7.0(oder die empfohlene Standardversion) aus. - Wählen Sie im Auswahlmenü Autorisiertes Netzwerk die Option Standard 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 für Ihre Memorystore for Redis-Instanz (häufig
default). Legen Sie die Konfiguration für ausgehenden Direct VPC-Traffic in
apphosting.yamlmit der VPC-Netzwerk-ID fest:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Schritt 2: Umgebungsvariablen hinzufügen, die Ihre Anwendung an Redis weiterleiten
- Die 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
REDISPORTundREDISHOSTeine Verbindung zu Redis her. Legen Sie diese inapphosting.yamlmit 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 Anwendung 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.jsimport { 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({ socket: { host: REDISHOST, port: Number(REDISPORT), }, }) .on("error", (err) => console.error("Redis Client Error", err)) .connect(); } return redisClient; }src/app/counter/route.jsimport { 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): Anwendung 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.
- Redis auf Ihrem lokalen Computer installieren
Erstellen oder bearbeiten Sie
apphosting.emulator.yaml, um auf Ihre lokale Instanz zu verweisen:env: - variable: REDISHOST value: 127.0.0.1