تم تصميم App Hosting ليكون سهل الاستخدام ولا يتطلّب الكثير من الصيانة، مع إعدادات تلقائية محسَّنة لمعظم حالات الاستخدام. وفي الوقت نفسه، يوفّر App Hosting أدوات لإدارة الخلفيات وضبطها حسب احتياجاتك المحدّدة. ويوضّح هذا الدليل هذه الأدوات والعمليات.
ضبط متغيّرات البيئة والبيانات السرية وتعديلها
تتيح لك منصة App Hosting استخدام متغيّرات البيئة لقيم الإعدادات غير الحسّاسة والبيانات السرية للمَعلمات الحسّاسة، مثل مفاتيح واجهة برمجة التطبيقات وبيانات اعتماد قواعد البيانات ورموز الخدمة المميّزة.
- متغيّرات البيئة العادية: تُستخدَم للإعدادات غير الحسّاسة التي تتضمّن نصوصًا عادية (مثل عناوين URL العامة لواجهات برمجة التطبيقات أو علامات الميزات أو أهداف الإصدارات). تكون القيم مرئية لجميع أعضاء المشروع.
- البيانات السرية: تُستخدَم للمَعلمات الحسّاسة (مثل أسرار عملاء OAuth أو الرموز المميّزة لواجهة برمجة التطبيقات أو كلمات مرور قواعد البيانات). يتم الاحتفاظ بنسخة احتياطية من المفاتيح السرية في Cloud Secret Manager. تتم حماية قيم المفاتيح السرية ولا يتم عرضها مطلقًا كنص عادي في وحدة تحكّم Firebase، بل توفّر وحدة التحكّم روابط لصفحات معيّنة لعرض قيم المفاتيح السرية وإدارتها مباشرةً في Cloud Secret Manager.
يمكنك تحديد مَعلمات البيئة وإدارتها باستخدام طريقتَين متكاملتَين:
- وحدة تحكّم Firebase: يمكنك إضافة وتعديل وإرفاق الرموز السرية أو المتغيّرات بسرعة وبشكل ديناميكي أثناء إنشاء الخلفية الأولية أو بعد النشر في إعدادات الخلفية.
النهج القائم على الرموز البرمجية (
apphosting.yaml): يمكنك الإعلان عن متغيّرات البيئة ومراجع البيانات السرية في ملف الإعداد الخاص بالمستودع لعمليات النشر التي يتم التحكّم في إصداراتها، أو يمكنك استخدامapphosting.<env>.yamlمن أجل ضبط قيم مختلفة لبيئات مختلفة.
وحدة تحكّم Firebase

apphosting.yaml
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
- variable: API_KEY
secret: myApiKeySecret
إدارة المتغيّرات والبيانات السرية في وحدة تحكّم Firebase
يمكنك ضبط متغيرات البيئة والرموز السرية في وحدة تحكّم Firebase عند إنشاء خلفية أو في أي وقت من إعدادات الخلفية. التغييرات التي يتم حفظها بدون نشرها تسري على عملية الطرح التالية ولا تؤثر في عملية الطرح الحالية.
إعداد المتغيّرات والرموز السرية أثناء إنشاء الخلفية
عند إنشاء خلفية جديدة لـ App Hosting في وحدة تحكّم Firebase، يمكنك ضبط متغيرات البيئة العادية والرموز السرية أثناء خطوة ضبط الخلفية في معالج الإعداد:
- في وحدة تحكّم Firebase، انتقِل إلى الاستضافة والحوسبة بدون خادم > استضافة التطبيقات وانقر على إنشاء الخلفية.
- أكمِل خطوات المعالج الأولية لاختيار منطقتك الأساسية ومستودع الرموز البرمجية.
- في قسم ضبط الخلفية، ابحث عن البطاقات القابلة للتصغير متغيّرات البيئة والرموز المميّزة، حيث يمكنك إضافة متغيّرات عادية وإرفاق رموز مميّزة.
- أكمِل معالج إنشاء الخلفية وانقر على إنهاء ونشر (Finish & deploy).
إدارة المتغيّرات والرموز السرية في إعدادات الخلفية
يمكنك عرض متغيّرات البيئة والرموز السرية للخلفيات النشطة أو إضافتها أو تعديلها أو حذفها من لوحة بيانات إعدادات الخلفية:
- في وحدة تحكّم "Firebase"، اختَر الخلفية "App Hosting" وافتح الإعدادات > البيئة.
- راجِع الإعدادات الحالية في جدول متغيّرات البيئة:
- المتغيّرات العادية: يتم عرض القيم كنص عادي في مجموعات رموز برمجية قابلة للنسخ.
- البيانات السرية: تظهر كرابط قابل للنقر يعرض اسم البيانات السرية
(الذي
يفتح Cloud Secret Manager في وحدة تحكّم Google Cloud) إلى جانب
الإصدار المستهدَف (مثل
latestأو رقم إصدار محدّد مثل2).
- لإضافة متغيّر أو رمز سرّي:
- انقر على إضافة جديد.
- في الخطوة 1: اختيار النوع، اختَر متغيّر بيئة عادي (للبيانات غير الحسّاسة التي تظهر لجميع أعضاء المشروع) أو سرّي (لمفاتيح واجهة برمجة التطبيقات وبيانات الاعتماد الحسّاسة التي تتطلّب وصولاً مقيّدًا)، ثم انقر على التالي.
- في الخطوة 2: ضبط الإعدادات، أدخِل اسم المفتاح والقيمة النصية العادية (للمتغيّرات العادية) أو اختَر رقم تعريف البيانات السرية والإصدار (للبيانات السرية).
- احفظ التغييرات باستخدام أحد الخيارات التالية:
- الحفظ والنشر: يؤدي هذا الخيار إلى تعديل إعدادات الخلفية على الفور وبدء عملية إنشاء وطرح جديدة.
- الحفظ فقط (من سهم القائمة المنسدلة بجانب حفظ ونشر): يتم حفظ التغييرات في الإعدادات بدون بدء عملية طرح فورية. تسري الإعدادات المعدَّلة على عملية النشر التالية.
- لتعديل إدخال حالي أو حذفه، انقر على قائمة إجراءات إضافية (
...) في نهاية الصف:- انقر على تعديل لتعديل المفتاح أو القيمة أو ربط الرمز السرّي أو الإصدار، ثمّ انقر على حفظ ونشر أو حفظ فقط.
- انقر على حذف وأكِّد الإزالة في مربّع الحوار.
نقل المتغيّرات من ملفات dotenv
بالنسبة إلى تطبيقات Next.js، تعمل ملفات dotenv التي تحتوي على متغيرات
البيئة
مع App Hosting.
عند إنشاء خلفية أو تعديلها، يمكنك نقل متغيّرات البيئة من
ملف dotenv إلى وحدة تحكّم Firebase من خلال نسخ المحتوى الكامل
لملف dotenv ولصقه في حقل المفتاح الأول في نموذج إضافة جديد
في الإعدادات > البيئة.
يتم تلقائيًا تنسيق جميع متغيّرات البيئة التي يتم نسخها بهذه الطريقة في
النموذج بدون الحاجة إلى إدخال كل منها على حدة، طالما أنّ الإدخال
يستخدم تنسيق KEY=value العادي:
KEY1=value1
KEY2=value2
KEY3=value3
للتحكّم في متغيّرات البيئة المعقّدة أو الدقيقة باستخدام أي إطار عمل، ننصحك باستخدام apphosting.yaml.
إدارة المتغيّرات والرموز السرية في apphosting.yaml
بالنسبة إلى سير العمل المستند إلى الرمز البرمجي أولاً، يجب الإعلان عن متغيّرات البيئة العادية والمراجع السرية ضمن مفتاح env: في ملف إعداد apphosting.yaml الخاص بمستودع مشروعك (يُرجى الاطّلاع على إنشاء apphosting.yaml وتعديله).
env:
# Standard environment variables
- variable: PUBLIC_API_URL
value: https://api.example.com
availability:
- BUILD
- RUNTIME
- variable: FEATURE_FLAG_NEW_UI
value: "true"
# Secret references backed by Cloud Secret Manager
- variable: DATABASE_URL
secret: projects/PROJECT_ID/secrets/db-connection-string/versions/latest
- variable: GEMINI_API_KEY
secret: myGeminiApiKeySecret@1
يتيح كل إدخال في env: استخدام الحقول التالية:
variable: اسم متغيّر البيئة الذي تم عرضه لعملية التطبيق.-
value: قيمة السلسلة النصية العادية (لمتغيّرات البيئة العادية) secret: مرجع بيانات Cloud Secret Manager السرية (للبيانات السرية) يمكنك استخدام اسم الرمز السري القصير (مثلmyGeminiApiKeySecretأوmyGeminiApiKeySecret@1المثبَّت) أو مسار المورد الكامل (projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION). يُرجى الاطّلاع على تخزين المَعلمات السرية والوصول إليها لمزيد من التفاصيل.availability: يتحكّم في إمكانية الوصول إلى المتغيّر أو الرمز السرّي أثناء مرحلةBUILDأو فيRUNTIMEأو كليهما.
ضبط مدى توفّر المتغيّر
تتوفّر متغيّرات البيئة والرموز السرية التي تم ضبطها في وحدة تحكّم Firebase
في وقت الإنشاء ووقت التشغيل. هذا هو أيضًا الإعداد التلقائي للإدخالات المحدّدة في apphosting.yaml ما لم تضيّق النطاق باستخدام السمة availability. في apphosting.yaml (وليس في وحدة التحكّم)، يمكنك
حصر متغيّر أو مفتاح سرّي في بيئة الإصدار (BUILD) فقط أو
بيئة التشغيل (RUNTIME) فقط.
الوصول إلى المتغيّرات والبيانات السرية في الرمز البرمجي للتطبيق
سواء تم ضبطها في وحدة تحكّم Firebase أو apphosting.yaml، يتم عرض متغيّرات البيئة والرموز السرية لوقت تشغيل التطبيق كمتغيّرات بيئة عادية (على سبيل المثال، process.env في Node.js).
// Accessing a standard environment variable
const apiUrl = process.env.PUBLIC_API_URL;
// Accessing a secret
const apiKey = process.env.GEMINI_API_KEY;
export async function fetchData() {
const response = await fetch(`${apiUrl}/data`, {
headers: {
'Authorization': `Bearer ${apiKey}`
}
});
return response.json();
}
- الوصول من جهة الخادم: يمكن الوصول إلى جميع متغيّرات البيئة والرموز السرية بشكل آمن في سياقات التنفيذ من جهة الخادم (مثل مكوّنات خادم Next.js أو مسارات واجهة برمجة التطبيقات أو معالِجات الخلفية في Node.js).
عرض المتغيّرات من جهة العميل: لعرض متغيّرات البيئة العادية في المتصفّح في أُطر عمل مثل Next.js، تأكَّد من أنّ مفتاح المتغيّر يتّبع اصطلاحات إطار العمل (على سبيل المثال، يبدأ بـ
NEXT_PUBLIC_).env: - variable: NEXT_PUBLIC_STORAGE_BUCKET value: mybucket.firebasestorage.app availability: - BUILD - RUNTIME
التسلسل الهرمي للمتغيّرات
يطبّق Firebase App Hosting متغيّرات البيئة والرموز السرية بترتيب الأولوية استنادًا إلى مصدرها. إنّ الإعدادات التي يتم ضبطها في وحدة تحكّم Firebase تلغي دائمًا المَعلمات المحدّدة في ملفات apphosting.yaml وdotenv. إذا كان هناك متغيّر بيئة أو مفتاح سري بالاسم نفسه
في كل من apphosting.yaml ووحدة تحكّم Firebase، تكون الأولوية لقيمة وحدة التحكّم
أثناء عملية الإنشاء وتنفيذ وقت التشغيل.
في ما يلي ترتيب الأولوية الكامل:
- وحدة تحكّم Firebase ← المتغيّرات والرموز السرية التي تم ضبطها في وحدة التحكّم
-
apphosting.<env>.yaml: المتغيّرات والبيانات السرية المحدّدة في ملف YAML خاص بالبيئة، مثلapphosting.staging.yaml(يُرجى الاطّلاع على نشر بيئات متعددة) apphosting.yaml← المتغيّرات والبيانات السرية المحدّدة في ملفapphosting.yaml- نظام Firebase ← المتغيّرات التي يضبطها Firebase والتي تحتوي على قيم
FIREBASE_CONFIGأوFIREBASE_WEBAPP_CONFIG، بالإضافة إلى متغيّرات البيئة التي تضبط أسماء المضيفين والمنافذ لتطبيقات العرض من جهة الخادم (يتم ضبطها من خلال محوّلات App Hosting فيbundle.yaml)
متغيّرات البيئة التي تتم تعبئتها تلقائيًا
هناك متغيرات بيئة تتم تعبئتها تلقائيًا بواسطة
App Hosting. وتشمل هذه المتغيّرات تلك التي تتم تعبئتها من خلال Google Cloud،
بالإضافة إلى متغيّرات البيئة الخاصة بـ Firebase عند ضبط appId
على الخلفية أثناء عملية الإعداد:
FIREBASE_CONFIG: (متاح في بيئات الإنشاء ووقت التشغيل) يوفّر معلومات إعدادات مشروع Firebase التالية:{ "databaseURL": "https://DATABASE_NAME.firebaseio.com", "storageBucket": " ", "projectId": "PROJECT_ID" }PROJECT_ID.firebasestorage.appيتم تطبيق هذه الإعدادات تلقائيًا عند إعداد مدير SDK في Firebase بدون وسيطات.
FIREBASE_WEBAPP_CONFIG: (متاح في بيئة الإصدار فقط) يوفّر معلومات إعدادات مشروع Firebase التالية:{ "apiKey": "API_KEY", "appId": "APP_ID", "authDomain": "AUTH_DOMAIN.firebaseapp.com", "databaseURL": "https://DATABASE_NAME.firebaseio.com", "messagingSenderId": "PROJECT_NUMBER", "projectId": "PROJECT_ID", "storageBucket": "/span> " }<PROJECT_ID.firebasestorage.appتتحقّق حزمة تطوير البرامج (SDK) لبرنامج Firebase JS تلقائيًا من متغيّر البيئة هذا
FIREBASE_WEBAPP_CONFIGفي نص برمجي postinstall أثناء عملية الإنشاء، ما يتيح لك أيضًا إعداد حزمة تطوير البرامج (SDK) للعميل بدون أي وسيطات.
يمكنك الاطّلاع على بدء تشغيل مدير SDK في Firebase وحِزم SDK للويب تلقائيًا لمزيد من التفاصيل حول كيفية استخدام متغيرات البيئة هذه لبدء تشغيل حِزم SDK.
يُرجى العِلم أنّ القيم في إعدادات Firebase الفعلية ستتوافق مع الموارد المحدّدة التي تم توفيرها في مشروعك.
التسلسل الهرمي للمتغيّرات
تطبّق خدمة Firebase App Hosting المتغيّرات بترتيب أولوية يستند إلى
مصدرها. على سبيل المثال، القيم المحدّدة في وحدة تحكّم Firebase دائمًا ما تلغي القيم المحدّدة في ملفات apphosting.yaml وdotenv أو تكون لها الأولوية عليها.
في ما يلي ترتيب الأولوية الكامل:
- وحدة تحكّم Firebase ← المتغيّرات التي تم ضبطها في وحدة التحكّم
-
apphosting.<env>.yaml: المتغيّرات المحدّدة في ملف yaml خاص بالبيئة، مثلapphosting.staging.yaml(يُرجى الاطّلاع على نشر بيئات متعددة) apphosting.yaml← المتغيّرات المحدّدة في ملفapphosting.yaml- نظام Firebase ← المتغيّرات التي يضبطها Firebase وتحتوي على قيم لـ
firebase_config jsonأوfirebase_webapp_config، بالإضافة إلى متغيّرات البيئة التي تضبط أسماء المضيفين والمنافذ لتطبيقات SSR (يتم ضبطها من خلال محوّلات App Hosting فيbundle.yaml)
الأسماء المحجوزة والقيود
إنّ متغيرات البيئة المحدّدة في عقد وقت تشغيل حاوية Cloud Run محجوزة ولا يمكن ضبطها.
قد تتغيّر متغيرات البيئة التي توفّرها البيئة، بخلاف تلك التي يتم ضبطها تلقائيًا، في إصدارات وقت التشغيل المستقبلية. كأفضل ممارسة، ننصحك بعدم الاعتماد على أي متغيرات بيئة لم يتم ضبطها بشكل صريح أو تعديلها، وننصحك بإضافة بادئة إلى أي متغيرات بيئة باستخدام مفتاح فريد لتجنب التعارضات.
يتم حجز بعض مفاتيح متغيرات البيئة للاستخدام الداخلي. لا تستخدِم أيًا من هذه المفاتيح في ملفات الإعداد:
- سلاسل فارغة ("")
- المفاتيح التي تحتوي على "="
- المفاتيح التي تبدأ بـ
X_FIREBASE_أوX_GOOGLE_أوCLOUD_RUN_ PORTK_SERVICEK_REVISIONK_CONFIGURATION- مفاتيح مكرّرة
إنشاء apphosting.yaml وتعديلها
لضبط الإعدادات المتقدّمة، مثل الإعدادات السرية أو إعدادات وقت التشغيل
مثل حدود التزامن ووحدة المعالجة المركزية والذاكرة، عليك إنشاء ملف
apphosting.yaml وتعديله في الدليل الجذري لتطبيقك. يتيح هذا الملف
استخدام مراجع للمفاتيح السرية المُدارة
باستخدام Cloud Secret Manager، ما يجعله آمنًا للتحقّق من التحكّم في المصدر.
لإنشاء apphosting.yaml، شغِّل الأمر التالي:
firebase init apphosting
يؤدي هذا إلى إنشاء ملف apphosting.yaml أساسي للمبتدئين مع مثال على الإعدادات (مع التعليقات). بعد التعديل، قد يبدو ملف apphosting.yaml النموذجي على النحو التالي، مع إعدادات خدمة Cloud Run في الخلفية وبعض متغيّرات البيئة وبعض الإشارات إلى كلمات المرور التي تتم إدارتها من خلال Cloud Secret Manager:
# Settings for Cloud Run
runConfig:
minInstances: 2
maxInstances: 100
concurrency: 100
cpu: 2
memoryMiB: 1024
# Environment variables and secrets
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
- variable: API_KEY
secret: myApiKeySecret
# Same as API_KEY above but with a pinned version.
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
# Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
- variable: VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID
# Same as API_KEY above but with the long form secret reference with pinned version.
- variable: PINNED_VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID/versions/5
يوفّر الجزء المتبقي من هذا الدليل مزيدًا من المعلومات والسياق حول هذه الإعدادات النموذجية.
ضبط إعدادات خدمة "Cloud Run"
باستخدام إعدادات apphosting.yaml، يمكنك ضبط كيفية توفير
خدمة Cloud Run. يتم توفير الإعدادات المتاحة لخدمة "Cloud Run" في عنصر "runConfig":
-
cpu: عدد وحدات المعالجة المركزية المستخدَمة لكل مثيل عرض (القيمة التلقائية هي1) -
memoryMiB: مقدار الذاكرة المخصّصة لكل مثيل عرض بالميبي بايت (القيمة التلقائية هي512). -
maxInstances: الحد الأقصى لعدد الحاويات التي يمكن تشغيلها في وقت واحد (القيمة التلقائية هي100وتتم إدارتها من خلال الحصة). -
minInstances: عدد الحاويات التي يجب إبقاؤها نشطة دائمًا (القيمة التلقائية هي0) -
concurrency: الحد الأقصى لعدد الطلبات التي يمكن أن يتلقّاها كل مثيل عرض (القيمة التلقائية هي80) -
cpuAlwaysAllocated: تشير إلى ما إذا كانت وحدة المعالجة المركزية مخصَّصة دائمًا حتى في حال عدم معالجة أي طلبات (القيمة التلقائية هيfalse).
يُرجى العِلم أنّ cpu وmemoryMiB وconcurrency لها حدود مترابطة (على سبيل المثال، تتطلّب إعدادات الذاكرة الأعلى حدودًا أعلى لوحدة المعالجة المركزية، وتتطلّب وحدات المعالجة المركزية الجزئية تزامنًا يبلغ 1). يُرجى الاطّلاع على مستندات Cloud Run حول حدود وحدة المعالجة المركزية وحدود الذاكرة لمعرفة النطاقات الصالحة والمجموعات المطلوبة.
تجاوز نصوص الإنشاء والتشغيل البرمجية
يستنتج App Hosting أمر إنشاء تطبيقك وبدء تشغيله استنادًا إلى إطار العمل الذي تم رصده. إذا أردت استخدام أمر مخصّص للإنشاء أو البدء، يمكنك إلغاء
الإعدادات التلقائية لـ App Hosting في apphosting.yaml.
scripts:
buildCommand: next build --no-lint
runCommand: node dist/index.js
يكون لتجاوز أمر الإصدار الأولوية على أي أوامر إصدار أخرى، ويؤدي إلى إيقاف استخدام تطبيقك لمحوّلات إطار العمل وإيقاف أي تحسينات خاصة بإطار العمل يوفّرها App Hosting. ويُفضَّل استخدامها عندما لا تكون ميزات تطبيقك
متوافقة بشكل جيد مع المحوّلات. إذا أردت تغيير أمر الإصدار
مع مواصلة استخدام المحوّلات المقدَّمة، يمكنك ضبط نص الإصدار البرمجي في package.json
بدلاً من ذلك على النحو الموضّح في محوّلات إطار عمل App Hosting.
استخدِم ميزة تجاوز أمر التشغيل عندما يكون هناك أمر محدّد تريد استخدامه لبدء تطبيقك يختلف عن الأمر الذي يستنتجه App Hosting.
ضبط ناتج الإصدار
تعمل أداة App Hosting على تحسين عمليات نشر تطبيقك تلقائيًا من خلال حذف ملفات الإخراج غير المستخدمة كما هو موضّح في إطار العمل. إذا أردت تحسين حجم نشر تطبيقك بشكل أكبر أو تجاهل التحسينات التلقائية، يمكنك إلغاء ذلك في apphosting.yaml.
outputFiles:
serverApp:
include: [dist, server.js]
تتلقّى المَعلمة include قائمة بالأدلة والملفات ذات الصلة بدليل التطبيق الجذري اللازمة لنشر تطبيقك. إذا أردت التأكّد من الاحتفاظ بجميع الملفات، اضبط قيمة include على [.] وسيتم نشر جميع الملفات.
تخزين المَعلمات السرية والوصول إليها
يجب تخزين المعلومات الحساسة، مثل مفاتيح واجهة برمجة التطبيقات، كرموز سرية. يمكنك
إرفاق الرموز السرية بالخلفية في وحدة تحكّم Firebase
أو الإشارة إليها في apphosting.yaml لتجنُّب التحقّق من المعلومات الحسّاسة
في نظام التحكّم بالمصادر.
تمثّل المَعلمات من النوع secret مَعلمات سلسلة لها قيمة
مخزَّنة في Cloud Secret Manager.
بدلاً من اشتقاق القيمة مباشرةً، تتحقّق المَعلمات السرية من
وجودها في Cloud Secret Manager وتحمّل القيم أثناء الطرح.
env:
- variable: API_KEY
secret: myApiKeySecret
يمكن أن تتضمّن البيانات السرية في Cloud Secret Manager نُسخًا متعدّدة. By default, the
value of a secret parameter available to your live backend is pinned to the
latest available version of the secret at the time the backend was built. إذا كانت لديك متطلبات لإدارة إصدارات المَعلمات ودورة حياتها، يمكنك تثبيت إصدارات معيّنة في وحدة تحكّم "Firebase" أو في "apphosting.yaml". على سبيل المثال، لتثبيت الإصدار 5 في apphosting.yaml:
env:
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
يمكنك إنشاء بيانات اعتماد باستخدام الأمر Firebase في واجهة سطر الأوامر
firebase apphosting:secrets:set، وسيُطلب منك إضافة الأذونات
اللازمة. يتيح لك هذا الإجراء إضافة مرجع البيانات السرية تلقائيًا إلى apphosting.yaml.
منح إذن الوصول إلى Cloud Secret Manager
لكي يتمكّن "App Hosting" من جلب القيم السرية أثناء عمليات طرح الإصدارات ووقت التشغيل، يجب أن يكون لدى حساب خدمة الخلفية "App Hosting" إذن بالوصول إلى Cloud Secret Manager.
في حال إنشاء بيانات سرية باستخدام وحدة تحكّم Cloud Secret Manager أو واجهة سطر الأوامر (CLI) في gcloud
بدلاً من firebase apphosting:secrets:set، يمكنك منح إذن الوصول إلى الخلفية باستخدام
واجهة سطر الأوامر (CLI) في Firebase:
firebase apphosting:secrets:grantaccess SECRET_NAME
بدلاً من ذلك، يمكنك منح دور Secret Manager Secret Accessor
(roles/secretmanager.secretAccessor) لوكيل خدمة App Hosting
(service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com)
أو حساب خدمة وقت التشغيل في الخلفية باستخدام واجهة سطر الأوامر (CLI) في gcloud:
gcloud secrets add-iam-policy-binding SECRET_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
الوصول إلى وحدة التحكّم والأذونات المستندة إلى الأدوار
Firebase console dynamically restricts environment and secret management features based on user IAM permissions:
- دور المشاهد: يمكن للمستخدمين الذين لديهم أذونات المشروع للقراءة فقط الاطّلاع على إعدادات الضبط الحالية ولكن لا يمكنهم إجراء تغييرات.
- أثناء إنشاء الخلفية، يتم إيقاف زر إنشاء خلفية.
- في الخلفية، ضمن الإعدادات > البيئة، يتم إيقاف الزر إضافة جديد وإخفاء قوائم صفوف مزيد من الإجراءات (
...).
- عدم توفّر أذونات Secret Manager: تظهر رسالة تحذير في وحدة التحكّم للمستخدمين الذين ليس لديهم أذونات إدارة الهوية وإمكانية الوصول (IAM) للتفاعل مع Cloud Secret Manager (يُرجى طلب الإذن من مالك المشروع لإضافة بيانات سرية):
- أثناء إنشاء الخلفية، يتم إيقاف بطاقة المفاتيح السرية.
- في الخلفية، ضمن الإعدادات > البيئة، يتم إيقاف خيار السر عند النقر على إضافة جديد، ويتم إخفاء بعض الخيارات في قائمة الصف مزيد من الإجراءات (
...) في إدخالات السر الحالية.
ضبط إعدادات الوصول إلى شبكة VPC
يمكن لخدمة الخلفية في App Hosting الاتصال بشبكة سحابة إلكترونية خاصة افتراضية (VPC). لمزيد من المعلومات والاطّلاع على مثال، يُرجى الاطّلاع على ربط Firebase App Hosting بشبكة VPC.
استخدِم عملية ربط vpcAccess في ملف apphosting.yaml لضبط إمكانية الوصول.
استخدِم اسم شبكة/موصل مؤهَّل بالكامل أو رقم تعريف. يتيح استخدام المعرّفات إمكانية النقل بين بيئات الإصدار التجريبي والتشغيل الفعلي باستخدام موصّلات أو شبكات مختلفة.
إعدادات Direct VPC Egress (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
إدارة الخلفيات
تتوفّر أوامر الإدارة الأساسية لخوادم App Hosting في وحدة تحكّم Firebase وواجهة سطر أوامر Firebase. يصف هذا القسم بعض مهام الإدارة الأكثر شيوعًا، بما في ذلك إنشاء الخلفيات وحذفها.
إنشاء خلفية
الخلفية في App Hosting هي مجموعة من الموارد المُدارة التي تنشئها App Hosting لإنشاء تطبيق الويب وتشغيله.
وحدة تحكّم Firebase: انتقِل إلى الاستضافة والحوسبة بدون خادم > App Hosting، ثم انقر على إنشاء خلفية (إذا كانت هذه هي الخلفية الأولى في مشروع Firebase، انقر على البدء).
واجهة سطر أوامر Firebase: (الإصدار 13.15.4 أو إصدار أحدث) لإنشاء خلفية، نفِّذ الأمر التالي من جذر دليل مشروع على جهاز المستخدم، مع تقديم رقم تعريف المشروع كوسيطة:
firebase apphosting:backends:create --project PROJECT_ID
بالنسبة إلى وحدة التحكّم أو واجهة سطر الأوامر، اتّبِع التعليمات لاختيار منطقة وإعداد اتصال GitHub وضبط إعدادات النشر الأساسية التالية:
اضبط دليل جذر تطبيقك (يتم ضبطه تلقائيًا على
/)هذا هو المكان الذي يوجد فيه ملف
package.jsonعادةً.
ضبط الفرع المنشور
هذا هو فرع مستودع GitHub الذي يتم نشره على عنوان URL المنشور. غالبًا ما يكون هذا الفرع هو الذي يتم دمج فروع الميزات أو فروع التطوير فيه.
قبول عمليات الطرح التلقائية أو رفضها
تكون عمليات الطرح التلقائية مفعَّلة تلقائيًا. عند اكتمال إنشاء الخلفية، يمكنك اختيار نشر تطبيقك على App Hosting على الفور.
أدخِل اسمًا للخلفية.
اختَر بيئة التشغيل. يتم تلقائيًا اختيار أحدث إصدار مُقترَح من Node.js لك.
- اضبط التحديثات التلقائية للصور الأساسية (ABIU). يتم تفعيل ABIU تلقائيًا وتطبيق التصحيحات الأمنية تلقائيًا على بيئتك الأساسية. يمكنك إيقاف ميزة ABIU من خلال اختيار "غير محدّد" لوقت التشغيل.
حذف خلفية
لإزالة الخلفية بالكامل، استخدِم أولاً وحدة تحكّم Firebase أو واجهة سطر الأوامر (CLI) في Firebase لحذفها، ثم أزِل مواد العرض ذات الصلة يدويًا، مع الحرص على عدم حذف أي موارد قد تستخدمها خلفيات أخرى أو جوانب أخرى من مشروع Firebase.
وحدة تحكّم Firebase: من قائمة الإعدادات، اختَر حذف الخلفية.
Firebase CLI: (الإصدار 13.15.4 أو الإصدارات الأحدث)
شغِّل الأمر التالي لحذف الخلفية App Hosting. يؤدي هذا الإجراء إلى إيقاف جميع النطاقات في الخلفية وحذف خدمة Cloud Run المرتبطة:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID(اختياري) في علامة تبويب وحدة تحكّم Google Cloud في Artifact Registry، احذف صورة الخلفية في "firebaseapphosting-images".
في Cloud Secret Manager، احذف أي بيانات حساسة تتضمّن "apphosting" في اسمها، مع الحرص على التأكّد من أنّ هذه البيانات لا تستخدمها الخلفيات الأخرى أو الجوانب الأخرى من مشروع Firebase.