Twój backend Firebase App Hosting może łączyć się z siecią prywatnego środowiska wirtualnego w chmurze (VPC). Umożliwia to backendowi Firebase App Hostingdostęp do usług backendu, które nie są dostępne przy użyciu publicznych adresów IP, takich jak Cloud SQL, Spanner, Cloud MemorystoreCompute Engine czy wewnętrzne mikrousługi Kubernetes.
Dostęp do VPC jest możliwy tylko w czasie działania (z kontenera Cloud Run), a nie w czasie kompilacji (Cloud Build).
Wybieranie sposobu łączenia się z siecią VPC
- Bezpośrednie połączenie VPC z ruchem wychodzącym: prostsze, szybsze i tańsze. Używa jednego adresu IP na kontener. Zalecany do większości zastosowań.
- Oprogramowanie sprzęgające bezserwerowe: puluje adresy IP dla większych aplikacji. Wymaga płatności za bazową maszynę wirtualną. Szczegółowe informacje o cenach znajdziesz w sekcji „Bezserwerowy dostęp do VPC” na stronie z cennikiem VPC.
Skonfiguruj w domenie apphosting.yaml
Aby skonfigurować dostęp, użyj mapowania vpcAccess w pliku apphosting.yaml.
Użyj pełnej i jednoznacznej nazwy sieci lub łącznika albo identyfikatora. Używanie identyfikatorów umożliwia przenoszenie danych między środowiskami testowym i produkcyjnym z różnymi łącznikami lub sieciami.
Konfiguracja bezpośredniego połączenia VPC w ruchu wychodzącym (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
Konfiguracja bezserwerowego oprogramowania sprzęgającego (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Przykład: łączenie się z Memorystore for Redis z aplikacji Next.js
Systemy pamięci podręcznej, takie jak Redis czy Memcached, są powszechnie używane do tworzenia szybkiej warstwy pamięci podręcznej danych dla aplikacji. Ten przykład pokazuje, jak skonfigurować Memorystore for Redis w tym samym projekcie Google Cloud co backend Firebase App Hosting i połączyć się z nim za pomocą bezpośredniego ruchu wychodzącego z VPC.
Krok 0. Utwórz instancję Memorystore for Redis
- W konsoli Google Cloud otwórz stronę Memorystore for Redis.
- Upewnij się, że wybrany jest ten sam projekt, którego używasz w przypadku Firebase App Hosting.
- Jeśli nie możesz uzyskać dostępu do tej strony, sprawdź, czy w projekcie włączono płatności i czy włączono Memorystore API.
- Kliknij Utwórz instancję.
- Skonfiguruj nową instancję z preferowanymi ustawieniami. Oto kilka przykładowych wartości, których możesz użyć:
- W polu Identyfikator instancji wpisz
my-redis-cache. - Wpisz
Redis cachew polu Wyświetlana nazwa. - Wybierz Podstawowy w selektorze typów. Typ podstawowy oznacza samodzielny węzeł Redis, w przeciwieństwie do typu standardowego, który używa węzła repliki do tworzenia kopii zapasowych danych.
- Wybierz region backendu App Hosting w selektorze Region. Upewnij się, że ta wartość jest zgodna z regionem backendu.
- W selektorze stref wybierz dowolną.
- W polu Rozmiar wpisz
5. Ustawia to pojemność instancji na 5 GB. - W sekcji Wersja (zalecana) kliknij
5.0. - W selektorze Autoryzowana sieć wybierz domyślna.
- W polu Identyfikator instancji wpisz
Krok 1. Zastąp symbol apphosting.yaml identyfikatorem sieci VPC
- Otwórz stronę Sieci VPC w konsoli Google Cloud.
- Znajdź identyfikator sieci VPC instancji Memorystore for Redis (zwykle jest to
default). Skonfiguruj bezpośrednie połączenie VPC w ruchu wychodzącym w
apphosting.yaml, używając identyfikatora sieci VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Krok 2. Dodaj zmienne środowiskowe, które kierują aplikację do Redis
- Informacje o połączeniu (host i port) znajdziesz na karcie „Połączenia” instancji Memorystore for Redis w Google Cloud konsoli.
Połącz się z Redis za pomocą zmiennych środowiskowych
REDISPORTiREDISHOST. Ustaw te wartości wapphosting.yaml, używając wartości hosta i portu z Google Cloud konsoli:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Krok 3. Używaj Redis w aplikacji
Zainstaluj pakiet npm redis:
npm install redis@latestUzyskaj dostęp do pamięci podręcznej redis z poziomu kodu. Użyj zmiennych środowiskowych skonfigurowanych w poprzednim kroku. Oto przykład odczytywania danych z pamięci podręcznej w module obsługi trasy Next.js:
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(REDISPORT, REDISHOST) .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 }); }
Krok 4 (opcjonalny). Skonfiguruj aplikację pod kątem lokalnego środowiska programistycznego
Firebase App HostingEmulator może zastępować wartości za pomocą
apphosting.emulator.yaml. W tym miejscu możesz zmienić wartość REDISHOST, aby wskazywała host lokalny. Dzięki temu możesz tworzyć aplikacje lokalnie, korzystając z lokalnej instalacji Redis.
- Zainstaluj Redis na komputerze lokalnym
Utwórz lub edytuj
apphosting.emulators.yaml, aby odwoływać się do lokalnej instancji:env: - variable: REDISHOST value: 127.0.0.1