Çoğu zaman, işlevleriniz için üçüncü taraf API anahtarları veya ayarlanabilir ayarlar gibi ek yapılandırmalara ihtiyaç duyacaksınız. Cloud Functions için Firebase SDK, projeniz için bu tür verileri depolamayı ve almayı kolaylaştırmak için yerleşik ortam yapılandırması sunar.
Üç seçenek arasından seçim yapabilirsiniz:
- Parametreli yapılandırma (çoğu senaryo için önerilir). Bu, dağıtım zamanında doğrulanan, hataları önleyen ve hata ayıklamayı basitleştiren parametrelerle türü kesin olarak belirlenmiş ortam yapılandırması sağlar.
- Ortam değişkenlerinin dosya tabanlı yapılandırması. Bu yaklaşımla, ortam değişkenlerini yüklemek için manuel olarak bir dotenv dosyası oluşturursunuz.
- Firebase CLI ve
functions.config
(yalnızca Cloud Functions (1. nesil)) ile çalışma zamanı ortamı yapılandırması .
Çoğu kullanım durumu için, parametreli yapılandırma önerilir. Bu yaklaşım, yapılandırma değerlerinin hem çalışma zamanında hem de dağıtım zamanında kullanılabilir olmasını sağlar ve tüm parametreler geçerli bir değere sahip olmadığı sürece dağıtım engellenir. Tersine, ortam değişkenleriyle yapılandırma, konuşlandırma zamanında mevcut değildir.
Parametreli konfigürasyon
Cloud Functions for Firebase, kod tabanınızın içinde bildirimsel olarak yapılandırma parametrelerini tanımlamak için bir arabirim sağlar. Bu parametrelerin değeri, hem işlev dağıtımı sırasında, hem dağıtım ve çalışma zamanı seçeneklerini ayarlarken hem de yürütme sırasında kullanılabilir. Bu, tüm parametreler geçerli bir değere sahip olmadığı sürece CLI'nin dağıtımı engelleyeceği anlamına gelir.
Kodunuzdaki parametreleri tanımlamak için şu modeli izleyin:
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, parametreli yapılandırma değişkenlerine sahip bir işlevi dağıtırken önce yerel .env dosyalarından değerlerini yüklemeye çalışır. Bu dosyalarda yoksa ve herhangi bir default
ayarlanmamışsa, CLI dağıtım sırasında değerleri ister ve ardından bu değerleri otomatik olarak functions/
dizininizdeki .env
.env.<project_ID>
adlı bir .env dosyasına kaydeder:
$ 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
Geliştirme iş akışınıza bağlı olarak, oluşturulan .env.<project_ID>
dosyasını sürüm kontrolüne eklemeniz yararlı olabilir.
CLI davranışını yapılandırma
Parametreler, CLI'nin değerleri nasıl isteyeceğini kontrol eden bir Options
nesnesiyle yapılandırılabilir. Aşağıdaki örnek, bir telefon numarasının biçimini doğrulamak, basit bir seçim seçeneği sağlamak ve bir seçim seçeneğini Firebase projesinden otomatik olarak doldurmak için seçenekleri ayarlar:
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"})
Parametre türleri
Parametreli yapılandırma, parametre değerleri için güçlü yazım sağlar ve ayrıca Cloud Secret Manager'dan gizli dizileri destekler. Desteklenen türler şunlardır:
- Gizli
- Sicim
- boole
- tamsayı
- Batmadan yüzmek
Parametre değerleri ve ifadeler
Firebase, parametrelerinizi hem dağıtım zamanında hem de işleviniz yürütülürken değerlendirir. Bu ikili ortamlar nedeniyle, parametre değerlerini karşılaştırırken ve bunları işlevleriniz için çalışma zamanı seçeneklerini ayarlamak üzere kullanırken biraz daha dikkatli olunmalıdır.
İşlevinize bir çalışma zamanı seçeneği olarak bir parametre iletmek için doğrudan iletin:
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) => {
//…
Ek olarak, hangi seçeneği seçeceğinizi bilmek için bir parametreyle karşılaştırmanız gerekirse, değeri kontrol etmek yerine yerleşik karşılaştırıcıları kullanmanız gerekir:
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) => {
//…
Yalnızca çalışma zamanında kullanılan parametrelere ve parametre ifadelerine, value
işlevleriyle erişilebilir:
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.`);
}
);
yerleşik parametreler
Cloud Functions SDK firebase-functions/params
alt paketinde bulunan önceden tanımlanmış üç parametre sunar:
-
projectId
— işlevin çalıştığı Bulut projesi. -
databaseUrl
— işlevle ilişkili Gerçek Zamanlı Veritabanı örneğinin URL'si (Firebase projesinde etkinleştirildiyse). -
storageBucket
— işlevle ilişkili Bulut Depolama grubu (Firebase projesinde etkinleştirildiyse).
Bunlar, her açıdan kullanıcı tanımlı dize parametreleri gibi işlev görür, ancak değerleri her zaman Firebase CLI tarafından bilindiğinden, değerleri dağıtım sırasında asla istenmez veya .env
dosyalarına kaydedilmez.
Gizli parametreler
defineSecret()
kullanılarak tanımlanan Secret
türündeki parametreler, Cloud Secret Manager'da saklanan bir değere sahip dize parametrelerini temsil eder. Yerel bir .env
dosyasını kontrol etmek ve eksikse dosyaya yeni bir değer yazmak yerine, gizli parametreler Cloud Secret Manager'da var olup olmadığını kontrol eder ve dağıtım sırasında etkileşimli olarak yeni bir gizli anahtarın değerini ister.
Bu şekilde tanımlanan gizli parametreler, bunlara erişimi olması gereken ayrı işlevlere bağlanmalıdır:
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();
//…
Sırların değerleri, işlev çalıştırılana kadar gizli olduğundan, işlevinizi yapılandırırken bunları kullanamazsınız.
Ortam Değişkenleri
Cloud Functions for Firebase, bir .env
dosyasında belirtilen ortam değişkenlerini uygulama çalışma zamanınıza yüklemek için dotenv dosya biçimini destekler. Devreye alındıktan sonra, ortam değişkenleri process.env
arabirimi aracılığıyla okunabilir.
Ortamınızı bu şekilde yapılandırmak için projenizde bir .env
dosyası oluşturun, istediğiniz değişkenleri ekleyin ve dağıtın:
functions/
dizininizde bir.env
dosyası oluşturun:# Directory layout: # my-project/ # firebase.json # functions/ # .env # package.json # index.js
Düzenlemek için
.env
dosyasını açın ve istediğiniz anahtarları ekleyin. Örneğin:PLANET=Earth AUDIENCE=Humans
İşlevleri dağıtın ve ortam değişkenlerinin yüklendiğini doğrulayın:
firebase deploy --only functions # ... # i functions: Loaded environment variables from .env. # ...
Özel ortam değişkenleriniz devreye alındıktan sonra, işlev kodunuz onlara process.env
sözdizimiyle erişebilir:
// Responds with "Hello Earth and Humans"
exports.hello = functions.https.onRequest((request, response) => {
response.send(`Hello ${process.env.PLANET} and ${process.env.AUDIENCE}`);
});
Birden çok ortam değişkeni kümesi dağıtma
Firebase projeleriniz için alternatif bir ortam değişkenleri grubuna ihtiyacınız varsa (hazırlama ve üretim gibi), bir .env. <project or alias >
dosyasını açın ve projeye özgü ortam değişkenlerinizi buraya yazın. .env
ve projeye özgü .env
dosyalarından (eğer varsa) ortam değişkenleri dağıtılan tüm işlevlere dahil edilecektir.
Örneğin, bir proje, geliştirme ve üretim için biraz farklı değerler içeren bu üç dosyayı içerebilir:
.env | .env.dev | .env.prod |
PLANET=Dünya KİTLE=İnsanlar | KİTLE=Geliştirici İnsanlar | KİTLE=İnsan Üretmek |
Bu ayrı dosyalardaki değerler göz önüne alındığında, işlevlerinizle dağıtılan ortam değişkenleri seti, hedef projenize bağlı olarak değişir:
$ 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
Ayrılmış ortam değişkenleri
Bazı ortam değişkeni anahtarları dahili kullanım için ayrılmıştır. .env
dosyalarınızda bu anahtarlardan hiçbirini kullanmayın:
- X_GOOGLE_ ile başlayan tüm anahtarlar
- EXT_ ile başlayan tüm anahtarlar
- FIREBASE_ ile başlayan tüm anahtarlar
- Aşağıdaki listeden herhangi bir anahtar:
- CLOUD_RUNTIME_CONFIG
- GİRİŞ NOKTASI
- GCP_PROJECT
- GCLOUD_PROJECT
- GOOGLE_CLOUD_PROJECT
- FUNCTION_TRIGGER_TYPE
- FONKSİYON ADI
- FUNCTION_MEMORY_MB
- FUNCTION_TIMEOUT_SEC
- FUNCTION_IDENTITY
- FUNCTION_REGION
- FUNCTION_TARGET
- FUNCTION_SIGNATURE_TYPE
- K_SERVICE
- K_REVİZYON
- LİMAN
- K_KONFİGÜRASYON
Hassas yapılandırma bilgilerini depolayın ve bunlara erişin
.env
dosyalarında depolanan ortam değişkenleri, işlev yapılandırması için kullanılabilir, ancak bunları veritabanı kimlik bilgileri veya API anahtarları gibi hassas bilgileri depolamanın güvenli bir yolu olarak görmemelisiniz. Bu, özellikle .env
dosyalarınızı kaynak denetiminde denetlerseniz önemlidir.
Cloud Functions for Firebase, hassas yapılandırma bilgilerini depolamanıza yardımcı olmak için Google Cloud Secret Manager ile entegre olur. Bu şifreli hizmet, yapılandırma değerlerini güvenli bir şekilde saklarken, gerektiğinde işlevlerinizden kolay erişime izin verir.
Bir sır oluşturun ve kullanın
Gizli dizi oluşturmak için Firebase CLI'yi kullanın.
Gizli dizi oluşturmak ve kullanmak için:
Yerel proje dizininizin kökünden şu komutu çalıştırın:
firebase functions:secrets:set SECRET_NAME
SECRET_NAME için bir değer girin.
CLI bir başarı mesajını yankılar ve değişikliğin etkili olması için işlevleri dağıtmanız gerektiği konusunda uyarır.
Dağıtmadan önce, işlev kodunuzun işlevin
runWith
parametresini kullanarak gizli diziye erişmesine izin verdiğinden emin olun: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 });
Bulut İşlevlerini Dağıtın:
firebase deploy --only functions
Artık ona diğer herhangi bir ortam değişkeni gibi erişebileceksiniz. Tersine, runWith
sırrı belirtmeyen başka bir işlev sırra erişmeye çalışırsa, tanımsız bir değer alır:
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
});
İşleviniz konuşlandırıldıktan sonra, gizli değere erişebilecektir. Yalnızca runWith
parametresinde özel olarak bir sır içeren işlevler, bu sırra bir ortam değişkeni olarak erişebilir. Bu, gizli değerlerin yalnızca ihtiyaç duyuldukları yerde mevcut olduğundan emin olmanıza yardımcı olarak yanlışlıkla bir sırrın sızdırılması riskini azaltır.
Sırları yönetme
Sırlarınızı yönetmek için Firebase CLI'yi kullanın. Gizli dizileri bu şekilde yönetirken, bazı CLI değişikliklerinin ilişkili işlevleri değiştirmenizi ve/veya yeniden dağıtmanızı gerektirdiğini unutmayın. özellikle:
- Bir gizli dizi için yeni bir değer ayarladığınızda, en son değeri almaları için bu gizli diziye başvuran tüm işlevleri yeniden konuşlandırmanız gerekir.
- Bir sırrı silerseniz, dağıtılan işlevlerinizden hiçbirinin bu sırra başvurmadığından emin olun. Silinmiş gizli bir değer kullanan işlevler sessizce başarısız olur.
İşte gizli yönetim için Firebase CLI komutlarının bir özeti:
# 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
ve destroy
komutları için, belirli bir sürümü yönetmek üzere isteğe bağlı version parametresini sağlayabilirsiniz. Örneğin:
functions:secrets:access SECRET_NAME[@VERSION]
Bu işlemler hakkında daha fazla bilgi için, CLI yardımını görüntülemek için komutla -h
iletin.
Sırlar nasıl faturalandırılır?
Secret Manager ücretsiz olarak 6 aktif gizli sürüme izin verir. Bu, bir Firebase projesinde hiçbir ücret ödemeden ayda 6 gizli diziye sahip olabileceğiniz anlamına gelir.
Varsayılan olarak, Firebase CLI, uygun olduğunda, örneğin gizli anahtarın yeni bir sürümüyle işlevleri dağıttığınızda, kullanılmayan gizli sürümleri otomatik olarak yok etmeye çalışır. Ayrıca, functions:secrets:destroy
ve functions:secrets:prune
kullanarak kullanılmayan sırları etkin bir şekilde temizleyebilirsiniz.
Secret Manager, bir secret üzerinde 10.000 faturalandırılmamış aylık erişim işlemine izin verir. İşlev örnekleri, her soğuk başlatmada yalnızca runWith
parametresinde belirtilen sırları okur. Çok sayıda sır okuyan çok sayıda işlev örneğiniz varsa, projeniz bu ödeneği aşabilir ve bu noktada sizden 10.000 erişim işlemi başına 0,03 USD ücret alınır.
Daha fazla bilgi için Gizli Yönetici Fiyatlandırması bölümüne bakın.
Öykünücü desteği
dotenv ile ortam yapılandırması, yerel bir Cloud Functions emülatörü ile birlikte çalışacak şekilde tasarlanmıştır.
Yerel bir Bulut İşlevleri öykünücüsü kullanırken, bir .env.local
dosyası ayarlayarak projeniz için ortam değişkenlerini geçersiz kılabilirsiniz. .env.local
içeriği, .env
ve projeye özgü .env
dosyasından önceliklidir.
Örneğin, bir proje, geliştirme ve yerel test için biraz farklı değerler içeren bu üç dosyayı içerebilir:
.env | .env.dev | .env.local |
PLANET=Dünya KİTLE=İnsanlar | KİTLE=Geliştirici İnsanlar | KİTLE=Yerel İnsanlar |
Öykünücü, yerel bağlamda başlatıldığında, ortam değişkenlerini gösterildiği gibi yükler:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Cloud Functions emülatöründeki sırlar ve kimlik bilgileri
Cloud Functions öykünücüsü , hassas yapılandırma bilgilerini depolamak ve bunlara erişmek için gizli dizilerin kullanımını destekler. Varsayılan olarak öykünücü, uygulama varsayılan kimlik bilgilerini kullanarak üretim sırlarınıza erişmeye çalışır. CI ortamları gibi belirli durumlarda öykünücü, izin kısıtlamaları nedeniyle gizli değerlere erişemeyebilir.
Ortam değişkenleri için Cloud Functions emülatör desteğine benzer şekilde, bir .secret.local
dosyası ayarlayarak gizli dizi değerlerini geçersiz kılabilirsiniz. Bu, özellikle gizli değere erişiminiz yoksa, işlevlerinizi yerel olarak test etmenizi kolaylaştırır.
Ortam yapılandırmasından taşıma
functions.config
ile ortam yapılandırmasını kullanıyorsanız, mevcut yapılandırmanızı ortam değişkenleri olarak ( dotenv biçiminde) geçirebilirsiniz. Firebase CLI, dizininizin .firebaserc
dosyasında (aşağıdaki örnekte local
, dev
ve prod
) listelenen her diğer adın veya projenin yapılandırmasını .env
dosyaları olarak çıkaran bir dışa aktarma komutu sağlar.
Geçiş yapmak için, firebase functions:config:export
komutunu kullanarak mevcut ortam yapılandırmalarınızı dışa aktarın:
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
Bazı durumlarda, dışa aktarılan ortam değişkeni anahtarlarını yeniden adlandırmak için bir önek girmenizin isteneceğini unutmayın. Bunun nedeni, geçersiz olabilecekleri veya ayrılmış bir ortam değişkeni olabilecekleri için tüm yapılandırmaların otomatik olarak dönüştürülememesidir.
İşlevlerinizi konuşlandırmadan veya .env
dosyalarını kaynak denetiminde kontrol etmeden önce, oluşturulan .env
dosyalarının içeriğini dikkatli bir şekilde gözden geçirmenizi öneririz. Herhangi bir değer hassassa ve sızdırılmaması gerekiyorsa, bunları .env
dosyalarınızdan kaldırın ve bunun yerine güvenli bir şekilde Secret Manager'da saklayın.
Ayrıca işlev kodunuzu da güncellemeniz gerekir. 2. nesle Yükseltme bölümünde gösterildiği gibi, functions.config
kullanan tüm işlevlerin artık bunun yerine process.env
kullanması gerekir.
Ortam yapılandırması
firebase-functions v3.18.0
ortam değişkeni desteği yayınlanmadan önce, ortam yapılandırması için functions.config()
kullanılması önerilen yaklaşımdı. Bu yaklaşım hala desteklenmektedir, ancak kullanımı daha basit olduğundan ve kodunuzun taşınabilirliğini iyileştirdiğinden, tüm yeni projelerin bunun yerine ortam değişkenlerini kullanmasını öneririz.
CLI ile ortam yapılandırmasını ayarlayın
Ortam verilerini depolamak için Firebase CLI'deki firebase functions:config:set
komutunu kullanabilirsiniz. İlgili yapılandırmayı birlikte gruplandırmak için her anahtara nokta kullanılarak ad alanı verilebilir. Anahtarlarda yalnızca küçük harflerin kabul edildiğini unutmayın; büyük harf karakterlere izin verilmez.
Örneğin, "Bazı Hizmetler" için İstemci Kimliği ve API anahtarını depolamak üzere şunları çalıştırabilirsiniz:
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
Geçerli ortam yapılandırmasını al
Projeniz için ortam yapılandırmasında şu anda depolananları incelemek için firebase functions:config:get
kullanabilirsiniz. JSON'a şöyle bir çıktı verecektir:
{
"someservice": {
"key":"THE API KEY",
"id":"THE CLIENT ID"
}
}
Bu işlevsellik , Google Cloud Runtime Configuration API'ye dayalıdır.
Bir işlevde ortam yapılandırmasına erişmek için functions.config
kullanın
Bazı yapılandırmalar, ayrılmış firebase
ad alanı altında otomatik olarak sağlanır. Ortam yapılandırması, çalışan işleviniz içinde functions.config()
yoluyla sağlanır. Yukarıdaki yapılandırmayı kullanmak için kodunuz şöyle görünebilir:
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}
});
});
Bir modülü başlatmak için ortam yapılandırmasını kullanın
Bazı Düğüm modülleri herhangi bir yapılandırma olmadan hazırdır. Diğer modüllerin doğru bir şekilde başlatılması için ekstra yapılandırmaya ihtiyacı vardır. Bu yapılandırmayı sabit kodlamak yerine ortam yapılandırma değişkenlerinde saklamanızı öneririz. Bu, kodunuzu çok daha taşınabilir tutmanıza yardımcı olur, bu da uygulamanızı açık kaynak yapmanıza veya üretim ve hazırlık sürümleri arasında kolayca geçiş yapmanıza olanak tanır.
Örneğin, Slack Node SDK modülünü kullanmak için şunu yazabilirsiniz:
const functions = require('firebase-functions');
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(functions.config().slack.url);
Dağıtmadan önce, slack.url
ortam yapılandırma değişkenini ayarlayın:
firebase functions:config:set slack.url=https://hooks.slack.com/services/XXX
Ek Ortam Komutları
-
firebase functions:config:unset key1 key2
belirtilen anahtarları yapılandırmadan kaldırır -
firebase functions:config:clone --from <fromProject>
başka bir projenin ortamını şu anda etkin olan projeye klonlar.
Otomatik olarak doldurulmuş ortam değişkenleri
İşlev çalışma zamanında ve yerel olarak öykünülmüş işlevlerde otomatik olarak doldurulan ortam değişkenleri vardır. Bunlar, Google Cloud tarafından doldurulanların yanı sıra Firebase'e özgü bir ortam değişkenini içerir:
process.env.FIREBASE_CONFIG
: Aşağıdaki Firebase projesi yapılandırma bilgilerini sağlar:
{
databaseURL: 'https://databaseName.firebaseio.com',
storageBucket: 'projectId.appspot.com',
projectId: 'projectId'
}
Bu yapılandırma, Firebase Admin SDK'yı bağımsız değişken olmadan başlattığınızda otomatik olarak uygulanır. JavaScript'te işlevler yazıyorsanız, şu şekilde başlatın:
const admin = require('firebase-admin');
admin.initializeApp();
TypeScript'te işlevler yazıyorsanız, şu şekilde başlatın:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import 'firebase-functions';
admin.initializeApp();
Hizmet hesabı kimlik bilgilerini kullanarak Yönetici SDK'sını varsayılan proje yapılandırmasıyla başlatmanız gerekirse, kimlik bilgilerini bir dosyadan yükleyebilir ve bunları şu şekilde FIREBASE_CONFIG
ekleyebilirsiniz:
serviceAccount = require('./serviceAccount.json');
const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);