يمكن أن يتصل الخلفية Firebase App Hosting بشبكة سحابة إلكترونية خاصة افتراضية (VPC). يتيح ذلك لخادمك الخلفي Firebase App Hosting الوصول إلى الخدمات الخلفية التي لا يمكن الوصول إليها باستخدام عناوين IP العامة، مثل Cloud SQL أو Spanner أو Cloud Memorystore أو Compute Engine أو الخدمات المصغّرة الداخلية في Kubernetes.
لا تتوفّر إمكانية الوصول إلى شبكة VPC إلا في وقت التشغيل (من حاوية Cloud Run)، وليس في وقت الإنشاء (Cloud Build).
الإعداد في apphosting.yaml
استخدِم عملية الربط vpcAccess
في ملف 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
مثال: الربط بخدمة Memorystore for Redis من تطبيق Next.js
تُستخدَم أنظمة التخزين المؤقت مثل Redis أو Memcached بشكل شائع لإنشاء طبقة تخزين مؤقت سريعة للبيانات في أحد التطبيقات. يوضّح لك هذا المثال كيفية إعداد Memorystore for Redis في مشروع Google Cloud نفسه الذي يتضمّن الخلفية Firebase App Hosting وكيفية الاتصال به باستخدام الخروج المباشر من شبكة VPC.
الخطوة 0: إنشاء مثيل Memorystore for Redis
- انتقِل إلى صفحة
Memorystore for Redis
في وحدة تحكّم Google Cloud.
- تأكَّد من اختيار المشروع نفسه الذي تستخدمه في Firebase App Hosting.
- إذا لم يكن بإمكانك الوصول إلى هذه الصفحة، تأكَّد من تفعيل الفوترة لمشروعك ومن تفعيل واجهة برمجة التطبيقات Memorystore API.
- انقر على إنشاء مثيل.
- اضبط المثيل الجديد باستخدام الإعدادات المفضّلة لديك. في ما يلي بعض الأمثلة على القيم التي يمكنك استخدامها:
- أدخِل
my-redis-cache
ضمن رقم تعريف المثيل. - أدخِل
Redis cache
ضمن الاسم المعروض. - اختَر أساسي ضمن أداة اختيار المستوى. تشير الفئة الأساسية إلى عقدة Redis مستقلة، على عكس الفئة العادية التي تستخدم عقدة طبق الأصل لإنشاء نسخة احتياطية من بياناتك.
- اختَر منطقة الخلفية App Hosting من أداة اختيار المنطقة. احرص على ضبط هذه القيمة لتتطابق مع منطقة الخلفية.
- اختَر أي من أداة اختيار المنطقة.
- أدخِل
5
ضمن السعة. يؤدي ذلك إلى ضبط سعة الجهاز الظاهري على 5 غيغابايت. - انقر على
5.0
ضِمن الإصدار (يُنصح به). - اختَر الإعدادات التلقائية من أداة اختيار الشبكة المعتمَدة.
- أدخِل
الخطوة 1: تعديل apphosting.yaml
باستخدام معرّف شبكة السحابة الخاصة الافتراضية (VPC)
- انتقِل إلى صفحة شبكات السحابة الخاصة الافتراضية (VPC) في وحدة تحكّم Google Cloud.
- ابحث عن رقم تعريف شبكة VPC لمثيل Memorystore for Redis (سيكون غالبًا
default
). اضبط إعدادات الخروج المباشر من شبكة VPC في
apphosting.yaml
باستخدام معرّف شبكة VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
الخطوة 2: إضافة متغيّرات البيئة التي توجّه تطبيقك إلى Redis
- ابحث عن معلومات الاتصال (المضيف والمنفذ) في علامة التبويب "عمليات الربط" الخاصة بمثيل Memorystore for Redis في وحدة تحكّم Google Cloud.
اتّصِل بخادم Redis باستخدام متغيرَي البيئة
REDISPORT
وREDISHOST
. اضبط هذه القيم فيapphosting.yaml
باستخدام قيم المضيف والمنفذ من وحدة تحكّم Google Cloud:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
الخطوة 3: استخدام Redis من تطبيقك
ثبِّت حزمة redis npm:
npm install redis@latest
يمكنك الوصول إلى ذاكرة التخزين المؤقت Redis من الرمز البرمجي. استخدِم متغيّرات البيئة التي تم ضبطها في الخطوة السابقة. على سبيل المثال، إليك كيفية القراءة من ذاكرة تخزين مؤقت في معالج مسار 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 }); }
الخطوة 4 (اختيارية): ضبط تطبيقك للتطوير المحلي
يمكن لمحاكي Firebase App Hosting استبدال القيم باستخدام
apphosting.emulator.yaml
. يمكنك هنا تغيير قيمة REDISHOST
للإشارة إلى المضيف المحلي حتى تتمكّن من التطوير محليًا باستخدام نسخة محلية من Redis.
- تثبيت Redis على جهازك
أنشئ أو عدِّل
apphosting.emulators.yaml
للإشارة إلى مثيلك المحلي:env: - variable: REDISHOST value: 127.0.0.1