Kết nối tính năng Lưu trữ ứng dụng Firebase với mạng VPC
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Phần phụ trợ Firebase App Hosting có thể kết nối với mạng Virtual Private Cloud (VPC). Điều này cho phép phần phụ trợ Firebase App Hosting của bạn truy cập vào các dịch vụ phụ trợ không thể truy cập bằng địa chỉ IP công khai, chẳng hạn như Cloud SQL, Spanner, Cloud Memorystore, Compute Engine hoặc các vi dịch vụ nội bộ của Kubernetes.
Quyền truy cập vào VPC chỉ có trong thời gian chạy (từ vùng chứa Cloud Run), chứ không có trong thời gian tạo (Cloud Build).
Chọn cách kết nối với mạng VPC
- Đường ra VPC trực tiếp: Đơn giản hơn, nhanh hơn và ít tốn kém hơn. Sử dụng một địa chỉ IP cho mỗi vùng chứa.
Bạn nên dùng chế độ này cho hầu hết các trường hợp sử dụng.
- Trình kết nối không máy chủ: Tập hợp địa chỉ IP cho các ứng dụng lớn hơn. Yêu cầu thanh toán cho VM cơ bản. Hãy xem phần "Quyền truy cập không máy chủ vào VPC" trên trang thông tin về giá của VPC để biết thông tin chi tiết về giá.
Sử dụng ánh xạ vpcAccess
trong tệp apphosting.yaml
để định cấu hình quyền truy cập.
Sử dụng tên hoặc mã nhận dạng đầy đủ của mạng/trình kết nối. Việc sử dụng mã nhận dạng cho phép khả năng di chuyển giữa các môi trường dàn dựng và môi trường phát hành công khai với các trình kết nối/mạng khác nhau.
Cấu hình lưu lượng truy cập trực tiếp ra khỏi VPC (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
Cấu hình trình kết nối không máy chủ (apphosting.yaml
):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Ví dụ: kết nối với Memorystore for Redis từ một ứng dụng Next.js
Các hệ thống lưu vào bộ nhớ đệm như Redis hoặc Memcached thường được dùng để tạo một lớp lưu dữ liệu vào bộ nhớ đệm nhanh cho một ứng dụng. Ví dụ này cho bạn biết cách thiết lập Memorystore cho Redis trong cùng một dự án Google Cloud với phần phụ trợ Firebase App Hosting và kết nối với dự án đó bằng Hoạt động truyền dữ liệu trực tiếp ra khỏi VPC.
Bước 0: Tạo một phiên bản Memorystore for Redis
- Chuyển đến trang Memorystore cho Redis trong bảng điều khiển Google Cloud.
- Đảm bảo rằng bạn đã chọn cùng một dự án mà bạn đang dùng cho Firebase App Hosting.
- Nếu bạn không truy cập được vào trang này, hãy đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án và đã bật Memorystore API.
- Chọn Tạo phiên bản.
- Định cấu hình phiên bản mới bằng các chế độ cài đặt mà bạn ưu tiên. Dưới đây là một số giá trị mẫu mà bạn có thể sử dụng:
- Nhập
my-redis-cache
trong Instance ID (Mã nhận dạng phiên bản).
- Nhập
Redis cache
trong mục Tên hiển thị.
- Chọn Cơ bản trong bộ chọn cấp. Cấp cơ bản chỉ định một nút Redis độc lập, không giống như cấp tiêu chuẩn sử dụng một nút sao chép để sao lưu dữ liệu của bạn.
- Chọn khu vực của App Hosting phụ trợ trong bộ chọn Khu vực.
Hãy nhớ đặt giá trị này sao cho khớp với khu vực của phần phụ trợ.
- Chọn bất kỳ trong bộ chọn múi giờ.
- Nhập
5
trong mục Dung lượng. Thao tác này sẽ đặt dung lượng phiên bản của bạn thành 5 GB.
- Chọn
5.0
trong mục Phiên bản (nên dùng).
- Chọn mặc định trong bộ chọn Mạng được uỷ quyền.
Bước 1: Cập nhật apphosting.yaml
bằng mã nhận dạng mạng VPC
- Truy cập vào trang mạng VPC trong bảng điều khiển Google Cloud.
- Tìm mã mạng VPC cho phiên bản Memorystore for Redis của bạn (thường là
default
).
Thiết lập cấu hình lưu lượng truy cập trực tiếp ra khỏi VPC trong apphosting.yaml
bằng cách sử dụng mã nhận dạng mạng VPC:
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
- network: my-network-id
Bước 2: Thêm các biến môi trường hướng ứng dụng của bạn đến Redis
- Tìm thông tin kết nối (máy chủ lưu trữ và cổng) trong thẻ "Connections" (Kết nối) của phiên bản Memorystore for Redis trong bảng điều khiển Google Cloud.
Kết nối với Redis bằng các biến môi trường REDISPORT
và REDISHOST
. Đặt các giá trị này trong apphosting.yaml
bằng cách sử dụng giá trị máy chủ lưu trữ và cổng từ bảng điều khiển Google Cloud:
env:
# Sample only. Use actual values provided by Memorystore
- variable: REDISPORT
value: 6379
- variable: REDISHOST
value: 10.127.16.3
Bước 3: Sử dụng redis từ ứng dụng của bạn
Cài đặt gói npm redis:
npm install redis@latest
Truy cập vào bộ nhớ đệm redis từ mã của bạn. Sử dụng các biến môi trường được định cấu hình ở bước trước. Ví dụ: dưới đây là cách bạn có thể đọc từ bộ nhớ đệm trong trình xử lý tuyến đường 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 });
}
Bước 4 (không bắt buộc): Định cấu hình ứng dụng để phát triển cục bộ
Trình mô phỏng Firebase App Hosting có thể ghi đè các giá trị bằng cách dùng apphosting.emulator.yaml
. Tại đây, bạn có thể thay đổi giá trị của REDISHOST
để trỏ đến localhost, nhờ đó bạn có thể phát triển cục bộ bằng cách sử dụng bản cài đặt Redis cục bộ.
- Cài đặt Redis trên máy cục bộ
Tạo hoặc chỉnh sửa apphosting.emulators.yaml
để tham chiếu đến phiên bản cục bộ của bạn:
env:
- variable: REDISHOST
value: 127.0.0.1
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-08-08 UTC.
[null,null,["Cập nhật lần gần đây nhất: 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"]]