غالبًا ما ستحتاج إلى تكوين إضافي لوظائفك ، مثل مفاتيح واجهة برمجة التطبيقات التابعة لجهات خارجية أو الإعدادات القابلة للضبط. يوفر Firebase SDK للوظائف السحابية تكوين بيئة مدمج لتسهيل تخزين واسترداد هذا النوع من البيانات لمشروعك.
يمكنك الاختيار من بين ثلاثة خيارات:
- تكوين ذو معلمات (موصى به لمعظم السيناريوهات). يوفر هذا تكوين بيئة مكتوبة بشدة مع معلمات يتم التحقق من صحتها في وقت النشر ، مما يمنع الأخطاء ويبسط تصحيح الأخطاء.
- التكوين القائم على ملف لمتغيرات البيئة . باستخدام هذا الأسلوب ، يمكنك إنشاء ملف dotenv يدويًا لتحميل متغيرات البيئة.
- تكوين بيئة وقت التشغيل مع Firebase CLI و
functions.config
.
بالنسبة لمعظم حالات الاستخدام ، يوصى بتكوين معلمات. يجعل هذا الأسلوب قيم التكوين متاحة في وقت التشغيل ووقت النشر ، ويتم حظر النشر ما لم يكن لجميع المعلمات قيمة صالحة. على العكس من ذلك ، لا يتوفر التكوين مع متغيرات البيئة في وقت النشر.
التكوين المعامل
توفر وظائف السحابة لـ Firebase واجهة لتحديد معلمات التكوين بشكل إعلاني داخل قاعدة التعليمات البرمجية الخاصة بك. تتوفر قيمة هذه المعلمات أثناء نشر الوظيفة ، وعند تعيين خيارات النشر ووقت التشغيل ، وأثناء التنفيذ. هذا يعني أن واجهة سطر الأوامر (CLI) ستحظر النشر ما لم تكن لكل المعلمات قيمة صالحة.
لتحديد المعلمات في التعليمات البرمجية الخاصة بك ، اتبع هذا النموذج:
const functions = require('firebase-functions');
const { defineInt, defineString } = require('firebase-functions/params');
// Define some parameters
const minInstancesConfig = defineInt('HELLO_WORLD_MININSTANCES');
const welcomeMessage = defineString('WELCOME_MESSAGE');
// To use configured parameters inside the config for a function, provide them
// directly. To use them at runtime, call .value() on them.
export const helloWorld = functions.runWith({ minInstances: minInstancesConfig}).https.onRequest(
(req, res) => {
res.send(`${welcomeMessage.value()}! I am a function.`);
}
);
عند نشر وظيفة ذات متغيرات تكوين ذات معلمات ، يحاول Firebase CLI أولاً تحميل قيمها من ملفات env المحلية. إذا لم تكن موجودة في هذه الملفات ولم يتم تعيين أي default
، فسوف يطالب CLI بالقيم أثناء النشر ، ثم يقوم تلقائيًا بحفظ قيمها في ملف env. المسمى .env
.env.<project_ID>
في functions/
الدليل الخاص بك:
$ firebase deploy
i functions: preparing codebase default for deployment
? Enter a string value for ENVIRONMENT: prod
i functions: Writing new parameter values to disk: .env.projectId
…
$ firebase deploy
i functions: Loaded environment variables from .env.projectId
اعتمادًا على سير عمل التطوير الخاص بك ، قد يكون من المفيد إضافة ملف .env.<project_ID>
الذي تم إنشاؤه إلى التحكم في الإصدار.
تكوين سلوك CLI
يمكن تكوين المعلمات باستخدام كائن Options
يتحكم في كيفية مطالبة CLI بالقيم. يعيّن المثال التالي خيارات للتحقق من صحة تنسيق رقم الهاتف ، لتوفير خيار تحديد بسيط ، ولملء خيار التحديد تلقائيًا من مشروع Firebase:
const { defineString } = require('firebase-functions/params');
const welcomeMessage = defineString('WELCOME_MESSAGE', {default: 'Hello World',
description: 'The greeting that is returned to the caller of this function'});
const onlyPhoneNumbers = defineString('PHONE_NUMBER', {input: {text:
{validationRegex: /\d{3}-\d{3}-\d{4}/, validationErrorMessage: "Please enter
a phone number in the format XXX-YYY-ZZZZ"}}});
const selectedOption = defineString('PARITY', {input: {select: {options:
[{value: "odd"}, {value: "even"}]}}})
const storageBucket = defineString('BUCKET', {input: {resource: {type:
"storage.googleapis.com/Bucket"}}, description: "This will automatically
populate the selector field with the deploying Cloud Project’s
storage buckets"})
أنواع المعلمات
يوفر التكوين المعامل كتابة قوية لقيم المعلمات ، كما يدعم الأسرار من Cloud Secret Manager. الأنواع المدعومة هي:
- سر
- سلسلة
- قيمة منطقية
- عدد صحيح
- تطفو
قيم وتعبيرات المعلمات
يقيِّم Firebase معلماتك في وقت النشر وأثناء تنفيذ وظيفتك. نظرًا لهذه البيئات المزدوجة ، يجب توخي الحذر الإضافي عند مقارنة قيم المعلمات ، وعند استخدامها لتعيين خيارات وقت التشغيل لوظائفك.
لتمرير معلمة إلى وظيفتك كخيار وقت تشغيل ، قم بتمريرها مباشرة:
const functions = require('firebase-functions');
const { defineInt} = require('firebase-functions/params');
const minInstancesConfig = defineInt('HELLO\_WORLD\_MININSTANCES');
export const helloWorld = functions.runWith({ minInstances: minInstancesConfig}).https.onRequest(
(req, res) => {
//…
بالإضافة إلى ذلك ، إذا كنت بحاجة إلى المقارنة مع معلمة لمعرفة الخيار الذي تختاره ، فستحتاج إلى استخدام المقارنات المضمنة بدلاً من التحقق من القيمة:
const functions = require('firebase-functions');
const { defineBool } = require('firebase-functions/params');
const environment = params.defineString(‘ENVIRONMENT’, {default: ‘dev’});
// use built-in comparators
const minInstancesConfig =environment.equals('PRODUCTION').thenElse(10, 1);
export const helloWorld = functions.runWith({ minInstances: minInstancesConfig}).https.onRequest(
(req, res) => {
//…
يمكن الوصول إلى المعلمات وتعبيرات المعلمات التي تُستخدم فقط في وقت التشغيل باستخدام دالة value
الخاصة بها:
const functions = require('firebase-functions');
const { defineString } = require('firebase-functions/params');
const welcomeMessage = defineString('WELCOME_MESSAGE');
// To use configured parameters inside the config for a function, provide them
// directly. To use them at runtime, call .value() on them.
export const helloWorld = functions.https.onRequest(
(req, res) => {
res.send(`${welcomeMessage.value()}! I am a function.`);
}
);
المعلمات المضمنة
تقدم حزمة SDK الخاصة بوظائف السحابة ثلاث معلمات محددة مسبقًا ، وهي متاحة من الحزمة الفرعية firebase-functions/params
فايربيز:
-
projectId
- مشروع السحابة الذي تعمل فيه الوظيفة. -
databaseUrl
- عنوان URL لمثيل Realtime Database المرتبط بالوظيفة (إذا تم تمكينه في مشروع Firebase). -
storageBucket
- حاوية التخزين السحابي المرتبطة بالوظيفة (إذا تم تمكينها في مشروع Firebase).
تعمل هذه المعلمات مثل معلمات السلسلة المعرفة من قبل المستخدم من جميع النواحي ، باستثناء أنه نظرًا لأن قيمها معروفة دائمًا لـ Firebase CLI ، فلن تتم مطالبتك أبدًا بقيمها عند النشر أو حفظها في ملفات .env
.
المعلمات السرية
تمثل معلمات النوع Secret
، المُعرَّفة باستخدام defineSecret()
، معلمات السلسلة التي لها قيمة مخزنة في Cloud Secret Manager. بدلاً من التحقق من ملف .env
محلي وكتابة قيمة جديدة للملف إذا كانت مفقودة ، تتحقق المعلمات السرية من وجودها في Cloud Secret Manager ، وتطالب بشكل تفاعلي بقيمة سر جديد أثناء النشر.
يجب أن تكون المعلمات السرية المحددة بهذه الطريقة مرتبطة بالوظائف الفردية التي يجب أن يكون لها حق الوصول إليها:
const functions = require('firebase-functions');
const { defineSecret } = require('firebase-functions/params');
const discordApiKey = defineSecret('DISCORD_API_KEY');
export const postToDiscord = functions.runWith({ secrets: [discordApiKey] }).https.onRequest(
(req, res) => {
const apiKey = discordApiKey.value();
//…
نظرًا لأن قيم الأسرار مخفية حتى تنفيذ الوظيفة ، فلا يمكنك استخدامها أثناء تكوين وظيفتك.
متغيرات البيئة
تدعم وظائف السحابة لـ Firebase تنسيق ملف dotenv لتحميل متغيرات البيئة المحددة في ملف .env
تشغيل التطبيق الخاص بك. بمجرد النشر ، يمكن قراءة متغيرات البيئة عبر واجهة process.env
.
لتكوين بيئتك بهذه الطريقة ، قم بإنشاء ملف .env
في مشروعك ، وأضف المتغيرات المطلوبة ، ثم انشر:
قم بإنشاء ملف
.env
في دوالكfunctions/
دليلك:# Directory layout: # my-project/ # firebase.json # functions/ # .env # package.json # index.js
افتح ملف
.env
للتحرير ، وأضف المفاتيح المطلوبة. علي سبيل المثال:PLANET=Earth AUDIENCE=Humans
انشر الوظائف وتحقق من تحميل متغيرات البيئة:
firebase deploy --only functions # ... # i functions: Loaded environment variables from .env. # ...
بمجرد نشر متغيرات البيئة المخصصة الخاصة بك ، يمكن لشفرة وظيفتك الوصول إليها من خلال بناء جملة process.env
:
// Responds with "Hello Earth and Humans"
exports.hello = functions.https.onRequest((request, response) => {
response.send(`Hello ${process.env.PLANET} and ${process.env.AUDIENCE}`);
});
نشر مجموعات متعددة من متغيرات البيئة
إذا كنت بحاجة إلى مجموعة بديلة من متغيرات البيئة لمشاريع Firebase (مثل التدريج مقابل الإنتاج) ، فأنشئ ملف .env. <project or alias >
واكتب متغيرات البيئة الخاصة بالمشروع هناك. سيتم تضمين متغيرات البيئة من .env
و. env الخاصة .env
(إن وجدت) في جميع الوظائف المنشورة.
على سبيل المثال ، يمكن أن يتضمن المشروع هذه الملفات الثلاثة التي تحتوي على قيم مختلفة قليلاً للتطوير والإنتاج:
.env | .env.dev | .env.prod |
الكوكب = الأرض الحضور = البشر | الجمهور = ديف البشر | الجمهور = همز البشر |
بالنظر إلى القيم الموجودة في هذه الملفات المنفصلة ، ستختلف مجموعة متغيرات البيئة المنشورة مع وظائفك اعتمادًا على مشروعك المستهدف:
$ firebase use dev
$ firebase deploy --only functions
i functions: Loaded environment variables from .env, .env.dev.
# Deploys functions with following user-defined environment variables:
# PLANET=Earth
# AUDIENCE=Dev Humans
$ firebase use prod
$ firebase deploy --only functions
i functions: Loaded environment variables from .env, .env.prod.
# Deploys functions with following user-defined environment variables:
# PLANET=Earth
# AUDIENCE=Prod Humans
متغيرات البيئة المحجوزة
بعض مفاتيح متغيرات البيئة محجوزة للاستخدام الداخلي. لا تستخدم أيًا من هذه المفاتيح في ملفات .env
الخاصة بك:
- تبدأ جميع المفاتيح بـ X_GOOGLE_
- كل المفاتيح تبدأ EXT_
- تبدأ جميع المفاتيح بـ FIREBASE_
- أي مفتاح من القائمة التالية:
- CLOUD_RUNTIME_CONFIG
- نقطة الدخول
- GCP_PROJECT
- GCLOUD_PROJECT
- GOOGLE_CLOUD_PROJECT
- FUNCTION_TRIGGER_TYPE
- اسم وظيفة
- FUNCTION_MEMORY_MB
- FUNCTION_TIMEOUT_SEC
- FUNCTION_IDENTITY
- FUNCTION_REGION
- FUNCTION_TARGET
- FUNCTION_SIGNATURE_TYPE
- K_SERVICE
- K_REVISION
- ميناء
- K_CONFIGURATION
تخزين والوصول إلى معلومات التكوين الحساسة
يمكن استخدام متغيرات البيئة المخزنة في ملفات .env
لتكوين الوظيفة ، ولكن لا يجب أن تعتبرها طريقة آمنة لتخزين المعلومات الحساسة مثل بيانات اعتماد قاعدة البيانات أو مفاتيح واجهة برمجة التطبيقات. هذا مهم بشكل خاص إذا قمت بفحص ملفات .env
الخاصة بك في التحكم بالمصادر.
لمساعدتك في تخزين معلومات التكوين الحساسة ، تتكامل وظائف Cloud لـ Firebase مع Google Cloud Secret Manager . تخزن هذه الخدمة المشفرة قيم التكوين بأمان ، مع السماح بالوصول السهل من وظائفك عند الحاجة.
إنشاء واستخدام سر
لإنشاء سر ، استخدم Firebase CLI.
لإنشاء سر واستخدامه:
من جذر دليل المشروع المحلي الخاص بك ، قم بتشغيل الأمر التالي:
firebase functions:secrets:set SECRET_NAME
أدخل قيمة لـ SECRET_NAME .
يردد CLI رسالة نجاح ويحذر من أنه يجب عليك نشر الوظائف حتى يسري التغيير.
قبل النشر ، تأكد من أن كود الوظائف الخاص بك يسمح للوظيفة بالوصول إلى السر باستخدام المعلمة
runWith
:exports.processPayment = functions // Make the secret available to this function .runWith({ secrets: ["SECRET_NAME"] }) .onCall((data, context) => { const myBillingService = initializeBillingService( // reference the secret value process.env.SECRET_NAME ); // Process the payment });
نشر وظائف السحابة:
firebase deploy --only functions
الآن ستتمكن من الوصول إليه مثل أي متغير بيئة آخر. على العكس من ذلك ، إذا كانت هناك دالة أخرى لا تحدد السر أثناء runWith
تحاول الوصول إلى السر ، فإنها تتلقى قيمة غير محددة:
exports.anotherEndpoint = functions.https.onRequest((request, response) => {
response.send(`The secret API key is ${process.env.SECRET_NAME}`);
// responds with "The secret API key is undefined" because the `runWith` parameter is missing
});
بمجرد نشر وظيفتك ، سيكون لها حق الوصول إلى القيمة السرية. فقط الوظائف التي تتضمن سرًا على وجه التحديد في runWith
سيكون لها حق الوصول إلى هذا السر كمتغير بيئة. يساعدك هذا في التأكد من أن القيم السرية متاحة فقط عند الحاجة إليها ، مما يقلل من خطر تسريب الأسرار عن طريق الخطأ.
إدارة الأسرار
استخدم Firebase CLI لإدارة أسرارك. أثناء إدارة الأسرار بهذه الطريقة ، ضع في اعتبارك أن بعض تغييرات CLI تتطلب منك تعديل و / أو إعادة نشر الوظائف المرتبطة. خاصة:
- عندما تقوم بتعيين قيمة جديدة للسر ، يجب إعادة نشر جميع الوظائف التي تشير إلى هذا السر حتى تلتقط أحدث قيمة.
- إذا قمت بحذف سر ، فتأكد من عدم إحالة أي من الوظائف المنشورة إلى هذا السر. الدالات التي تستخدم قيمة سرية تم حذفها ستفشل بصمت.
في ما يلي ملخص لأوامر Firebase CLI للإدارة السرية:
# Change the value of an existing secret firebase functions:secrets:set SECRET_NAME # View the value of a secret functions:secrets:access SECRET_NAME # Destroy a secret functions:secrets:destroy SECRET_NAME # View all secret versions and their state functions:secrets:get SECRET_NAME # Automatically clean up all secrets that aren't referenced by any of your functions functions:secrets:prune
بالنسبة لأوامر access
destroy
، يمكنك توفير معلمة الإصدار الاختيارية لإدارة إصدار معين. علي سبيل المثال:
functions:secrets:access SECRET_NAME[@VERSION]
لمزيد من المعلومات حول هذه العمليات ، مرر -h
مع الأمر لعرض تعليمات CLI.
كيف يتم فوترة الأسرار
يسمح Secret Manager بـ 6 إصدارات سرية نشطة دون أي تكلفة. هذا يعني أنه يمكنك الحصول على 6 أسرار شهريًا في مشروع Firebase مجانًا.
بشكل افتراضي ، يحاول Firebase CLI إتلاف الإصدارات السرية غير المستخدمة تلقائيًا عند الاقتضاء ، مثل عندما تنشر وظائف بإصدار جديد من السر. يمكنك أيضًا تنظيف الأسرار غير المستخدمة بنشاط باستخدام functions:secrets:destroy
functions:secrets:prune
.
يسمح Secret Manager بـ 10000 عملية وصول شهرية غير مفوترة بسرية. تقرأ مثيلات الوظائف فقط الأسرار المحددة في runWith
الخاص بها في كل مرة تبدأ فيها باردة. إذا كان لديك الكثير من حالات الوظائف التي تقرأ الكثير من الأسرار ، فقد يتجاوز مشروعك هذا البدل ، وعند هذه النقطة ستدفع 0.03 دولارًا لكل 10000 عملية وصول.
لمزيد من المعلومات ، راجع تسعير المدير السري .
دعم المحاكي
تم تصميم تكوين البيئة باستخدام dotenv للتعامل مع محاكي وظائف السحابة المحلي.
عند استخدام محاكي وظائف السحابة المحلي ، يمكنك تجاوز متغيرات البيئة لمشروعك من خلال إعداد ملف .env.local
. محتويات .env.local
لها الأسبقية على .env
وملف .env
الخاص بالمشروع.
على سبيل المثال ، يمكن أن يتضمن المشروع هذه الملفات الثلاثة التي تحتوي على قيم مختلفة قليلاً للتطوير والاختبار المحلي:
.env | .env.dev | .env.local |
الكوكب = الأرض الحضور = البشر | الجمهور = ديف البشر | AUDIENCE = البشر المحليين |
عند البدء في السياق المحلي ، يقوم المحاكي بتحميل متغيرات البيئة كما هو موضح:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
الأسرار وبيانات الاعتماد في محاكي وظائف السحابة
يدعم محاكي وظائف السحابة استخدام الأسرار لتخزين معلومات التكوين الحساسة والوصول إليها . بشكل افتراضي ، سيحاول المحاكي الوصول إلى أسرار الإنتاج الخاصة بك باستخدام بيانات الاعتماد الافتراضية للتطبيق . في مواقف معينة مثل بيئات CI ، قد يفشل المحاكي في الوصول إلى القيم السرية بسبب قيود الأذونات.
على غرار دعم محاكي Cloud Functions لمتغيرات البيئة ، يمكنك تجاوز قيم الأسرار من خلال إعداد ملف .secret.local
. هذا يجعل من السهل عليك اختبار وظائفك محليًا ، خاصةً إذا لم يكن لديك وصول إلى القيمة السرية.
الترحيل من تكوين البيئة
إذا كنت تستخدم تكوين البيئة مع functions.config
، فيمكنك ترحيل التكوين الحالي الخاص بك كمتغيرات بيئة (بتنسيق dotenv ). يوفر Firebase CLI أمر تصدير يقوم بإخراج تكوين كل اسم مستعار أو مشروع مدرج في ملف .firebaserc
الخاص بالدليل (في المثال أدناه ، local
و dev
و prod
) كملفات .env
.
للترحيل ، قم بتصدير تكوينات البيئة الحالية باستخدام firebase functions:config:export
command:
firebase functions:config:export i Importing configs from projects: [project-0, project-1] ⚠ The following configs keys could not be exported as environment variables: ⚠ project-0 (dev): 1foo.a => 1FOO\_A (Key 1FOO\_A must start with an uppercase ASCII letter or underscore, and then consist of uppercase ASCII letters, digits, and underscores.) Enter a PREFIX to rename invalid environment variable keys: CONFIG\_ ✔ Wrote functions/.env.prod ✔ Wrote functions/.env.dev ✔ Wrote functions/.env.local ✔ Wrote functions/.env
لاحظ أنه في بعض الحالات ، ستتم مطالبتك بإدخال بادئة لإعادة تسمية مفاتيح متغيرات البيئة المصدرة. هذا لأنه لا يمكن تحويل جميع التكوينات تلقائيًا لأنها قد تكون غير صالحة أو قد تكون مفتاح متغير بيئة محجوز .
نوصي بمراجعة محتويات ملفات .env
التي تم إنشاؤها بعناية قبل نشر وظائفك أو التحقق من ملفات .env
في التحكم بالمصادر. إذا كانت أي قيم حساسة ولا يجب تسريبها ، فقم بإزالتها من ملفات .env
وخزنها بأمان في Secret Manager بدلاً من ذلك.
ستحتاج أيضًا إلى تحديث رمز وظائفك. أي دوال تستخدم functions.config
ستحتاج الآن إلى استخدام process.env
بدلاً من ذلك ، كما هو موضح في متغيرات البيئة .
تكوين البيئة
قبل إصدار دعم متغير البيئة في firebase-functions v3.18.0
، كان استخدام functions.config()
هو الأسلوب الموصى به لتكوين البيئة. لا يزال هذا النهج مدعومًا ، لكننا نوصي باستخدام جميع المشروعات الجديدة متغيرات البيئة بدلاً من ذلك ، حيث إنها أسهل في الاستخدام وتحسين قابلية نقل التعليمات البرمجية الخاصة بك.
اضبط تكوين البيئة باستخدام CLI
لتخزين بيانات البيئة ، يمكنك استخدام firebase functions:config:set
command في Firebase CLI . يمكن تحديد مساحة اسم كل مفتاح باستخدام فترات لتجميع التكوين ذي الصلة معًا. ضع في اعتبارك أنه يتم قبول الأحرف الصغيرة فقط في المفاتيح ؛ الأحرف الكبيرة غير مسموح بها.
على سبيل المثال ، لتخزين معرّف العميل ومفتاح واجهة برمجة التطبيقات لـ "بعض الخدمات" ، يمكنك تشغيل:
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
استرجاع تكوين البيئة الحالية
لفحص ما يتم تخزينه حاليًا في تهيئة البيئة لمشروعك ، يمكنك استخدام firebase functions:config:get
. سيخرج JSON شيئًا مثل هذا:
{
"someservice": {
"key":"THE API KEY",
"id":"THE CLIENT ID"
}
}
تعتمد هذه الوظيفة على Google Cloud Runtime Configuration API .
استخدم functions.config
للوصول إلى تكوين البيئة في إحدى الوظائف
يتم توفير بعض التهيئة تلقائيًا ضمن مساحة اسم firebase
المحجوزة. يتم توفير تكوين البيئة داخل وظيفة التشغيل الخاصة بك عبر functions.config()
. لاستخدام التكوين أعلاه ، قد يبدو الرمز الخاص بك كما يلي:
const functions = require('firebase-functions');
const request = require('request-promise');
exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => {
let email = event.data.child('email').val();
return request({
url: 'https://someservice.com/api/some/call',
headers: {
'X-Client-ID': functions.config().someservice.id,
'Authorization': `Bearer ${functions.config().someservice.key}`
},
body: {email: email}
});
});
استخدم تكوين البيئة لتهيئة وحدة نمطية
بعض وحدات العقدة جاهزة بدون أي تكوين. الوحدات النمطية الأخرى تحتاج إلى تكوين إضافي للتهيئة بشكل صحيح. نوصي بتخزين هذا التكوين في متغيرات تكوين البيئة بدلاً من ترميزه. يساعدك هذا في الحفاظ على الكود الخاص بك أكثر قابلية للنقل ، مما يتيح لك فتح مصدر تطبيقك أو التبديل بسهولة بين إصدارات الإنتاج والإصدارات المرحلية.
على سبيل المثال ، لاستخدام وحدة Slack Node SDK ، يمكنك كتابة هذا:
const functions = require('firebase-functions');
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(functions.config().slack.url);
قبل النشر ، اضبط متغير تهيئة بيئة slack.url
:
firebase functions:config:set slack.url=https://hooks.slack.com/services/XXX
أوامر البيئة الإضافية
-
firebase functions:config:unset key1 key2
يزيل المفاتيح المحددة من config -
firebase functions:config:clone --from <fromProject>
استنساخ بيئة مشروع آخر إلى المشروع النشط حاليًا.
متغيرات البيئة المأهولة تلقائيًا
هناك متغيرات البيئة التي يتم ملؤها تلقائيًا في وقت تشغيل الوظائف وفي الوظائف التي تمت مضاهاتها محليًا. يتضمن ذلك تلك التي تم ملؤها بواسطة Google Cloud ، بالإضافة إلى متغير بيئة خاص بـ Firebase:
process.env.FIREBASE_CONFIG
: يوفر معلومات تهيئة مشروع Firebase التالية:
{
databaseURL: 'https://databaseName.firebaseio.com',
storageBucket: 'projectId.appspot.com',
projectId: 'projectId'
}
يتم تطبيق هذه التهيئة تلقائيًا عند تهيئة Firebase Admin SDK بدون وسيطات. إذا كنت تكتب وظائف في JavaScript ، فقم بالتهيئة على النحو التالي:
const admin = require('firebase-admin');
admin.initializeApp();
إذا كنت تكتب وظائف في TypeScript ، فقم بالتهيئة على النحو التالي:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import 'firebase-functions';
admin.initializeApp();
إذا كنت بحاجة إلى تهيئة Admin SDK بتكوين المشروع الافتراضي باستخدام بيانات اعتماد حساب الخدمة ، فيمكنك تحميل بيانات الاعتماد من ملف وإضافتها إلى FIREBASE_CONFIG
مثل هذا:
serviceAccount = require('./serviceAccount.json');
const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);