باطن Firebase App Hosting شما می تواند به یک شبکه مجازی خصوصی Cloud (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
مثال: از برنامه Next.js به Memorystor for Redis متصل شوید
سیستمهای ذخیرهسازی مانند Redis یا Memcached معمولاً برای ایجاد یک لایه ذخیره سریع داده برای یک برنامه استفاده میشوند. این مثال به شما نشان میدهد که چگونه میتوانید Memorystore را برای Redis در همان پروژه Google Cloud به عنوان باطن Firebase App Hosting خود راهاندازی کنید و با استفاده از Direct VPC egress به آن متصل شوید.
مرحله 0: یک Memorystor برای نمونه Redis ایجاد کنید
- به صفحه Memorystore for Redis در کنسول Google Cloud بروید.
- مطمئن شوید که همان پروژه ای که برای Firebase App Hosting استفاده می کنید انتخاب شده است.
- اگر نمی توانید به این صفحه دسترسی پیدا کنید، مطمئن شوید که صورتحساب برای پروژه شما فعال است و Memorystore API را فعال کرده اید.
- Create Instance را انتخاب کنید.
- نمونه جدید را با تنظیمات دلخواه خود پیکربندی کنید. در اینجا چند نمونه از مقادیر است که می توانید استفاده کنید:
-
my-redis-cache
در Instance ID وارد کنید. -
Redis cache
در قسمت نمایش نام وارد کنید. - Basic را در زیر انتخابگر ردیف انتخاب کنید. سطح پایه یک گره Redis مستقل را مشخص می کند، برخلاف لایه استاندارد، که از یک گره مشابه برای پشتیبان گیری از داده های شما استفاده می کند.
- منطقه باطن App Hosting خود را از انتخابگر منطقه انتخاب کنید. مطمئن شوید که این مقدار را برای مطابقت با منطقه باطن خود تنظیم کنید.
- از انتخاب منطقه هر کدام را انتخاب کنید.
-
5
را زیر ظرفیت وارد کنید. این ظرفیت نمونه شما را روی 5 گیگابایت تنظیم می کند. -
5.0
در نسخه (توصیه می شود) انتخاب کنید. - پیش فرض را از انتخابگر شبکه مجاز انتخاب کنید.
-
مرحله 1: apphosting.yaml
با شناسه شبکه VPC خود به روز کنید
- از صفحه شبکه های VPC در کنسول Google Cloud دیدن کنید.
- شناسه شبکه VPC را برای مثال Memorystore برای Redis پیدا کنید (اغلب
default
خواهد بود). با استفاده از شناسه شبکه VPC، پیکربندی خروج مستقیم VPC را در
apphosting.yaml
تنظیم کنید:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
مرحله 2: متغیرهای محیطی را اضافه کنید که برنامه شما را به Redis هدایت می کند
- اطلاعات اتصال (میزبان و پورت) را در برگه «اتصالات» نمونه Memorystore برای Redis در کنسول Google Cloud پیدا کنید.
با متغیرهای محیطی
REDISPORT
وREDISHOST
به Redis متصل شوید. این موارد را با استفاده از مقادیر میزبان و پورت از کنسول Google Cloud درapphosting.yaml
تنظیم کنید: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
را تغییر دهید تا به localhost اشاره کند تا بتوانید با استفاده از نصب محلی Redis به صورت محلی توسعه دهید.
- Redis را روی دستگاه محلی خود نصب کنید
برای ارجاع به نمونه محلی خود
apphosting.emulators.yaml
ایجاد یا ویرایش کنید:env: - variable: REDISHOST value: 127.0.0.1