Menghubungkan Firebase App Hosting ke jaringan VPC
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Backend Firebase App Hosting Anda dapat terhubung ke jaringan Virtual Private Cloud (VPC). Hal ini memungkinkan backend
Firebase App Hosting Anda mengakses layanan backend yang tidak dapat diakses menggunakan
alamat IP publik, seperti Cloud SQL, Spanner, Cloud Memorystore,
Compute Engine, atau microservice internal Kubernetes.
Akses VPC hanya tersedia saat runtime (dari container Cloud Run), bukan saat waktu build (Cloud Build).
Pilih cara terhubung ke jaringan VPC
- Traffic Keluar VPC Langsung:
Lebih sederhana, lebih cepat, dan lebih murah. Menggunakan satu alamat IP per penampung.
Direkomendasikan untuk sebagian besar kasus penggunaan.
- Konektor Serverless:
Menggabungkan alamat IP untuk aplikasi yang lebih besar. Memerlukan pembayaran untuk VM pokok. Lihat "Akses VPC Serverless" di
halaman harga VPC
untuk mengetahui detail harga.
Gunakan pemetaan vpcAccess
dalam file apphosting.yaml
untuk mengonfigurasi akses.
Gunakan nama/konektor jaringan yang sepenuhnya memenuhi syarat atau ID. Penggunaan ID memungkinkan portabilitas antara lingkungan staging dan produksi dengan konektor/jaringan yang berbeda.
Konfigurasi Traffic Keluar VPC Langsung (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
Konfigurasi Serverless Connector (apphosting.yaml
):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Contoh: menghubungkan ke Memorystore for Redis dari aplikasi Next.js
Sistem penyimpanan cache seperti Redis atau Memcached umumnya digunakan untuk membangun lapisan penyimpanan cache data yang cepat untuk aplikasi. Contoh ini menunjukkan cara menyiapkan Memorystore for Redis di project Google Cloud yang sama dengan backend Firebase App Hosting Anda dan terhubung ke sana menggunakan keluar VPC Langsung.
Langkah 0: Buat instance Memorystore for Redis
- Buka
halaman Memorystore for Redis
di konsol Google Cloud.
- Pastikan project yang sama dengan yang Anda gunakan untuk Firebase App Hosting dipilih.
- Jika Anda tidak dapat mengakses halaman ini, pastikan penagihan diaktifkan untuk project Anda dan Anda telah mengaktifkan Memorystore API.
- Pilih Create Instance.
- Konfigurasi instance baru dengan setelan pilihan Anda. Berikut beberapa contoh nilai yang dapat Anda gunakan:
- Masukkan
my-redis-cache
di bagian ID Instance.
- Masukkan
Redis cache
di bagian Nama tampilan.
- Pilih Dasar di bagian pemilih paket. Tingkat dasar menetapkan node Redis mandiri, berbeda dengan tingkat standar, yang menggunakan node replika untuk mencadangkan data Anda.
- Pilih region backend App Hosting Anda dari pemilih Region.
Pastikan untuk menyetel nilai ini agar sesuai dengan region backend Anda.
- Pilih any dari pemilih zona.
- Masukkan
5
di bagian Capacity. Tindakan ini akan menetapkan kapasitas instance Anda ke 5 GB.
- Pilih
5.0
di bagian Versi (direkomendasikan).
- Pilih default dari pemilih Authorized network.
Langkah 1: Perbarui apphosting.yaml
dengan ID jaringan VPC Anda
- Buka
halaman jaringan VPC
di konsol Google Cloud.
- Temukan ID jaringan VPC untuk instance Memorystore for Redis Anda (biasanya
default
).
Tetapkan konfigurasi traffic keluar VPC langsung di apphosting.yaml
menggunakan ID jaringan VPC:
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
- network: my-network-id
Langkah 2: Tambahkan variabel lingkungan yang mengarahkan aplikasi Anda ke Redis
- Temukan informasi koneksi (host dan port) di tab "Connections" pada instance
Memorystore for Redis di Google Cloud console.
Hubungkan ke Redis dengan variabel lingkungan REDISPORT
dan REDISHOST
. Tetapkan
ini di apphosting.yaml
menggunakan nilai host dan port dari konsol
Google Cloud:
env:
# Sample only. Use actual values provided by Memorystore
- variable: REDISPORT
value: 6379
- variable: REDISHOST
value: 10.127.16.3
Langkah 3: Gunakan redis dari aplikasi Anda
Instal paket npm redis:
npm install redis@latest
Akses cache redis dari kode Anda. Gunakan variabel lingkungan
yang dikonfigurasi pada langkah sebelumnya. Misalnya, berikut cara Anda dapat membaca dari
cache di pengendali rute 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 });
}
Langkah 4 (opsional): Konfigurasi aplikasi Anda untuk pengembangan lokal
Emulator Firebase App Hosting dapat mengganti nilai menggunakan
apphosting.emulator.yaml
. Di sini, Anda dapat mengubah nilai REDISHOST
agar mengarah ke localhost sehingga Anda dapat melakukan pengembangan secara lokal menggunakan penginstalan Redis lokal.
- Instal Redis di komputer lokal Anda
Buat atau edit apphosting.emulators.yaml
untuk merujuk instance lokal Anda:
env:
- variable: REDISHOST
value: 127.0.0.1
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-08 UTC.
[null,null,["Terakhir diperbarui pada 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"]]