باطن Firebase App Hosting شما می تواند به یک شبکه مجازی خصوصی Cloud (VPC) متصل شود. این به پشتیبان Firebase App Hosting شما اجازه میدهد به خدمات باطنی که با استفاده از آدرسهای IP عمومی قابل دسترسی نیستند، مانند Cloud SQL، Spanner، Cloud Memorystore، Compute Engine یا میکروسرویسهای داخلی Kubernetes دسترسی پیدا کند.
دسترسی VPC فقط در زمان اجرا (از ظرف Cloud Run شما) و نه در زمان ساخت ( Cloud Build ) در دسترس است.
نحوه اتصال به شبکه VPC را انتخاب کنید
- خروج مستقیم VPC : سادهتر، سریعتر و ارزانتر. از یک آدرس IP در هر ظرف استفاده می کند. برای بیشتر موارد استفاده توصیه می شود.
- اتصال دهنده های بدون سرور : آدرس های IP را برای برنامه های بزرگتر جمع می کند. نیاز به پرداخت برای VM اساسی دارد. برای جزئیات قیمت به "دسترسی VPC بدون سرور" در صفحه قیمت گذاری VPC مراجعه کنید.
در apphosting.yaml پیکربندی کنید
از نقشه vpcAccess در فایل apphosting.yaml خود برای پیکربندی دسترسی استفاده کنید. از یک نام شبکه/کانکتور کاملاً واجد شرایط یا یک شناسه استفاده کنید. استفاده از شناسه ها امکان جابجایی بین محیط های صحنه سازی و تولید با اتصالات/شبکه های مختلف را فراهم می کند.
پیکربندی خروج مستقیم 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
پیکربندی اتصال دهنده بدون سرور ( apphosting.yaml ):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-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.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 }); }
مرحله 4 (اختیاری): برنامه خود را برای توسعه محلی پیکربندی کنید
شبیهساز Firebase App Hosting میتواند مقادیر را با استفاده از apphosting.emulator.yaml لغو کند. در اینجا، می توانید مقدار REDISHOST را تغییر دهید تا به localhost اشاره کند تا بتوانید با استفاده از نصب محلی Redis به صورت محلی توسعه دهید.
- Redis را روی دستگاه محلی خود نصب کنید
برای ارجاع به نمونه محلی خود
apphosting.emulators.yamlایجاد یا ویرایش کنید:env: - variable: REDISHOST value: 127.0.0.1