Genellikle işlevleriniz için ek yapılandırma yapmanız gerekir. Örneğin, üçüncü taraf API anahtarları veya ayarlanabilir ayarlar. Cloud Functions için Firebase SDK'sı, bu tür verileri projeniz için depolamayı ve almayı kolaylaştırmak amacıyla yerleşik ortam yapılandırması sunar.
Aşağıdaki seçenekler arasından seçim yapabilirsiniz:
- Parametreli yapılandırma (Çoğu senaryo için önerilir). Bu, dağıtım sırasında doğrulanan parametrelerle güçlü şekilde türlenmiş bir ortam yapılandırması sağlar. Bu sayede hatalar önlenir ve hata ayıklama kolaylaşır.
- Ortam değişkenlerinin dosya tabanlı yapılandırılması. Bu yaklaşımda, ortam değişkenlerini yüklemek için manuel olarak bir dotenv dosyası oluşturursunuz.
Çoğu kullanım alanı için parametreli yapılandırma önerilir. Bu yaklaşım, yapılandırma değerlerini hem çalışma zamanında hem de dağıtım zamanında kullanılabilir hâle getirir. Ayrıca, tüm parametreler geçerli bir değere sahip olmadığı sürece dağıtım engellenir. Bunun aksine, ortam değişkenleriyle yapılandırma dağıtım sırasında kullanılamaz.
Parametreli yapılandırma
Cloud Functions for Firebase, kod tabanınızda yapılandırma parametrelerini bildirimsel olarak tanımlamak için bir arayüz sağlar. Bu parametrelerin değeri, hem işlev dağıtımı sırasında (dağıtım ve çalışma zamanı seçenekleri ayarlanırken) hem de yürütme sırasında kullanılabilir. Bu, tüm parametreler geçerli bir değere sahip olmadığı sürece CLI'nın dağıtımı engelleyeceği anlamına gelir.
Kodunuzda parametreleri tanımlamak için şu modeli kullanın:
const functions = require('firebase-functions/v1');
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.`);
}
);
Parametrelendirilmiş yapılandırma değişkenlerine sahip bir işlev dağıtılırken Firebase CLI önce değerlerini yerel .env dosyalarından yüklemeye çalışır. Bu dosyalar mevcut değilse ve default
ayarlanmamışsa CLI, dağıtım sırasında değerleri ister ve ardından değerleri functions/
dizininizde .env.<project_ID>
adlı bir .env
dosyasına otomatik olarak 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 eklemek faydalı olabilir.
Parametreleri genel kapsamda kullanma
Dağıtım sırasında, parametreleriniz gerçek değerlere sahip olmadan önce işlevler kodunuz yüklenir ve incelenir. Bu, genel kapsam sırasında parametre değerlerinin getirilmesinin dağıtım hatasına neden olduğu anlamına gelir. Bir parametreyi kullanarak genel bir değeri başlatmak istediğiniz durumlarda başlatma geri çağırmasını onInit()
kullanın. Bu geri çağırma, üretimde herhangi bir işlev çalıştırılmadan önce çalışır ancak dağıtım sırasında çağrılmaz. Bu nedenle, bir parametrenin değerine erişmek için güvenli bir yerdir.
const { GoogleGenerativeAI } = require('@google/generative-ai');
const { defineSecret } = require('firebase-functions/params');
const { onInit } = require('firebase-functions/v1');
const apiKey = defineSecret('GOOGLE_API_KEY');
let genAI;
onInit(() => {
genAI = new GoogleGenerativeAI(apiKey.value());
})
CLI davranışını yapılandırma
Parametreler, CLI'nın değerleri nasıl isteyeceğini kontrol eden bir Options
nesnesiyle yapılandırılabilir. Aşağıdaki örnekte, telefon numarasının biçimini doğrulamak, basit bir seçim seçeneği sunmak ve Firebase projesinden otomatik olarak bir seçim seçeneği doldurmak için seçenekler ayarlanır:
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ü türleme sağlar ve Cloud Secret Manager'daki gizli anahtarları da destekler. Desteklenen türler:
- Gizli Anahtar
- Dize
- Boole
- Tam sayı
- Kayan
Parametre değerleri ve ifadeler
Firebase, parametrelerinizi hem dağıtım sırasında hem de işleviniz yürütülürken değerlendirir. Bu iki ortam 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 olmanız gerekir.
Bir parametreyi işlevinize çalışma zamanı seçeneği olarak iletmek için doğrudan iletin:
const functions = require('firebase-functions/v1');
const { defineInt} = require('firebase-functions/params');
const minInstancesConfig = defineInt('HELLO\_WORLD\_MININSTANCES');
export const helloWorld = functions.runWith({ minInstances: minInstancesConfig}).https.onRequest(
(req, res) => {
//…
Ayrıca, hangi seçeneği belirleyeceğinizi öğrenmek için bir parametreyle karşılaştırma yapmanız gerekiyorsa değeri kontrol etmek yerine yerleşik karşılaştırıcıları kullanmanız gerekir:
const functions = require('firebase-functions/v1');
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şleviyle erişilebilir:
const functions = require('firebase-functions/v1');
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'sı, firebase-functions/params
alt paketinde bulunan üç önceden tanımlanmış parametre sunar:
projectID
: İşlevin çalıştığı Cloud projesi.databaseURL
: İşlevle ilişkili Realtime Database örneğinin URL'si (Firebase projesinde etkinleştirilmişse).storageBucket
: İşlevle ilişkili Cloud Storage paketi (Firebase projesinde etkinleştirilmişse).
Bu işlevler, değerleri Firebase CLI tarafından her zaman bilindiğinden, dağıtım sırasında değerleri asla istenmeyecek ve .env
dosyalarına kaydedilmeyecek olması dışında, her açıdan kullanıcı tanımlı dize parametreleri gibi çalışır.
Gizli parametreler
Secret
türündeki ve defineSecret()
kullanılarak tanımlanan parametreler, Cloud Secret Manager'da depolanan bir değere sahip dize parametrelerini temsil eder. Gizli parametreler, yerel bir .env
dosyasıyla karşılaştırma yapıp eksikse dosyaya yeni bir değer yazmak yerine Cloud Secret Manager'da var olup olmadığını kontrol eder ve dağıtım sırasında yeni bir gizli anahtarın değeri için etkileşimli olarak istemde bulunur.
Bu şekilde tanımlanan gizli parametreler, bunlara erişmesi gereken işlevlere bağlanmalıdır:
const functions = require('firebase-functions/v1');
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 yürütülene kadar gizlendiğinden, işlevinizi yapılandırırken bunları kullanamazsınız.
Ortam değişkenleri
Cloud Functions for Firebase, .env
dosyasında belirtilen ortam değişkenlerini uygulama çalışma zamanınıza yüklemek için dotenv dosya biçimini destekler. Ortam değişkenleri, dağıtıldıktan sonra process.env
arayüzü üzerinden 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 dağıtıldıktan sonra, işlev kodunuz bunlara process.env
söz dizimiyle 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 fazla ortam değişkeni grubu dağıtma
Firebase projeleriniz için alternatif bir ortam değişkenleri grubu (ör. hazırlık ve üretim) gerekiyorsa bir .env.<project or
alias>
dosyası oluşturun ve projeye özel ortam değişkenlerinizi buraya yazın. .env
ve projeye özel .env
dosyalarındaki (varsa) ortam değişkenleri, dağıtılan tüm işlevlere dahil edilir.
Örneğin, bir proje geliştirme ve üretim için biraz farklı değerler içeren şu üç dosyayı içerebilir:
.env
|
.env.dev
|
.env.prod
|
PLANET=Earth
AUDIENCE=Humans |
AUDIENCE=Dev Humans | AUDIENCE=Prod Humans |
Bu ayrı dosyalardaki değerler göz önüne alındığında, işlevlerinizle dağıtılan ortam değişkenleri kümesi 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ı şirket içi kullanım için ayrılmıştır. .env
dosyalarınızda aşağıdaki 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 listedeki herhangi bir anahtar:
- CLOUD_RUNTIME_CONFIG
- ENTRY_POINT
- GCP_PROJECT
- GCLOUD_PROJECT
- GOOGLE_CLOUD_PROJECT
- FUNCTION_TRIGGER_TYPE
- FUNCTION_NAME
- FUNCTION_MEMORY_MB
- FUNCTION_TIMEOUT_SEC
- FUNCTION_IDENTITY
- FUNCTION_REGION
- FUNCTION_TARGET
- FUNCTION_SIGNATURE_TYPE
- K_SERVICE
- K_REVISION
- PORT
- K_CONFIGURATION
Hassas yapılandırma bilgilerini depolama ve bunlara erişme
.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 durum, özellikle .env
dosyalarınızı kaynak kontrolüne kaydediyorsanız önemlidir.
Hassas yapılandırma bilgilerini saklamanıza yardımcı olmak için Cloud Functions for Firebase Google Cloud Secret Manager ile entegre olur. Bu şifrelenmiş hizmet, yapılandırma değerlerini güvenli bir şekilde saklarken gerektiğinde işlevlerinizden kolayca erişmenize de olanak tanır.
Gizli anahtar oluşturma ve kullanma
Gizli anahtar oluşturmak için Firebase CLI'yı kullanın.
Gizli anahtar oluşturmak ve kullanmak için:
Yerel proje dizininizin kökünden aşağıdaki komutu çalıştırın:
firebase functions:secrets:set SECRET_NAME
SECRET_NAME için bir değer girin.
CLI, başarılı olduğunu belirten bir mesaj gösterir ve değişikliğin geçerli olması için işlevleri dağıtmanız gerektiği konusunda sizi uyarır.
Dağıtmadan önce, işlev kodunuzun
runWith
parametresini kullanarak işlevin gizli bilgiye 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 });
Cloud Functions uygulamasını dağıtma:
firebase deploy --only functions
Artık bu değişkene diğer ortam değişkenleri gibi erişebilirsiniz.
Buna karşılık, runWith
içinde gizli anahtarı belirtmeyen başka bir işlev gizli anahtara 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 dağıtıldıktan sonra gizli değere erişebilir. Yalnızca
runWith
parametresinde özellikle bir sır içeren işlevler,
ortam değişkeni olarak bu sırra erişebilir. Bu sayede, gizli değerlerin yalnızca gerektiği yerlerde kullanılmasını sağlayabilir ve gizli anahtarların yanlışlıkla sızdırılma riskini azaltabilirsiniz.
Gizli anahtarları yönetme
Gizli anahtarlarınızı yönetmek için Firebase KSA'sını 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ı gerektirebileceğini unutmayın. Özellikle:
- Bir gizli anahtar için yeni bir değer ayarladığınızda, en son değeri alabilmeleri için bu gizli anahtara referans veren tüm işlevleri yeniden dağıtmanız gerekir.
- Bir sırrı silerseniz dağıtılan işlevlerinizin hiçbirinin bu sırra başvurmadığından emin olun. Silinmiş bir gizli değer kullanan işlevler sessizce başarısız olur.
Gizli yönetim için Firebase KSA komutlarının özeti aşağıda verilmiştir:
# 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ı sürüm parametresini sağlayabilirsiniz. Örneğin:
functions:secrets:access SECRET_NAME[@VERSION]
Bu işlemler hakkında daha fazla bilgi edinmek için komutla birlikte -h
seçeneğini ileterek
CLI yardımını görüntüleyin.
Gizli dizilerin faturalandırılması
Secret Manager, 6 aktif gizli anahtar sürümüne ücretsiz olarak izin verir. Bu, Firebase projesinde ayda 6 sırrı ücretsiz olarak kullanabileceğiniz anlamına gelir.
Firebase CLI, varsayılan olarak uygun durumlarda (ör. işlevleri gizli anahtarın yeni bir sürümüyle dağıttığınızda) kullanılmayan gizli anahtar sürümlerini otomatik olarak silmeye çalışır. Ayrıca, functions:secrets:destroy
ve functions:secrets:prune
kullanarak kullanılmayan sırları aktif olarak temizleyebilirsiniz.
Secret Manager,bir gizli anahtarda 10.000 faturalandırılmamış aylık erişim işlemine izin verir. İşlev örnekleri, her soğuk başlatma işleminde yalnızca runWith
parametresinde belirtilen sırları okur. Çok sayıda gizli anahtar okuyan çok sayıda işlev örneğiniz varsa projeniz bu izni aşabilir. Bu durumda, 10.000 erişim işlemi başına 0,03 ABD doları ücretlendirilirsiniz.
Daha fazla bilgi için Secret Manager Fiyatlandırma bölümüne bakın.
Emülatör desteği
dotenv ile ortam yapılandırması, yerel bir Cloud Functionsemülatörle birlikte çalışacak şekilde tasarlanmıştır.
Yerel bir Cloud Functions emülatörü kullanırken .env.local
dosyası oluşturarak projenizin ortam değişkenlerini geçersiz kılabilirsiniz. .env.local
içeriği, .env
ve projeye özel .env
dosyasına göre önceliklidir.
Örneğin, bir proje geliştirme ve yerel test için biraz farklı değerler içeren şu üç dosyayı içerebilir:
.env
|
.env.dev
|
.env.local
|
PLANET=Earth
AUDIENCE=Humans |
AUDIENCE=Dev Humans | AUDIENCE=Local Humans |
Yerel bağlamda başlatıldığında emülatör, 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 gizli anahtarlar ve kimlik bilgileri
Cloud Functions emülatörü, hassas yapılandırma bilgilerini depolamak ve bunlara erişmek için gizli anahtarların kullanılmasını destekler. Varsayılan olarak, emülatör uygulama varsayılan kimlik bilgilerini kullanarak üretim gizli anahtarlarınıza erişmeye çalışır. CI ortamları gibi belirli durumlarda, izin kısıtlamaları nedeniyle emülatör gizli değerlere erişemeyebilir.
Cloud Functions ortam değişkenleri için emülatör desteğine benzer şekilde, .secret.local
dosyası oluşturarak gizli değerleri geçersiz kılabilirsiniz. Bu sayede, özellikle gizli değere erişiminiz yoksa işlevlerinizi yerel olarak kolayca test edebilirsiniz.
Ortam yapılandırmasından geçiş yapma
functions.config
ile ortam yapılandırması kullanıyorsanız functions.config
kullanımdan kaldırılmadan önce, 2025'in sonuna kadar mevcut yapılandırmanızı ortam değişkenleri olarak (dotenv biçiminde) taşımanız gerekir.
Firebase CLI, dizininizin .firebaserc
dosyasında listelenen her takma adın veya projenin yapılandırmasını .env
dosyaları olarak çıkaran bir dışa aktarma komutu sağlar (aşağıdaki örnekte local
, dev
ve prod
).
Taşımak 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 girmeniz istenebilir. Bunun nedeni, geçersiz olabilecekleri veya ayrılmış bir ortam değişkeni anahtarı olabilecekleri için tüm yapılandırmaların otomatik olarak dönüştürülememesidir.
İşlevlerinizi dağıtmadan veya .env
dosyalarını kaynak denetimine eklemeden önce oluşturulan .env
dosyalarının içeriğini dikkatlice incelemenizi öneririz. Hassas olan ve sızdırılmaması gereken değerler varsa bunları .env
dosyalarınızdan kaldırın ve bunun yerine Secret Manager içinde güvenli bir şekilde saklayın.
Ayrıca işlev kodunuzu da güncellemeniz gerekir. functions.config
kullanan tüm işlevler artık 2. nesle yükseltme bölümünde gösterildiği gibi process.env
kullanmalıdır.
Ortam yapılandırması
CLI ile ortam yapılandırmasını ayarlama
Ortam verilerini depolamak için Firebase KSA'da firebase functions:config:set
komutunu kullanabilirsiniz.
Her anahtar, ilgili yapılandırmayı gruplandırmak için nokta kullanılarak ad alanı oluşturulabilir. Anahtarlarda yalnızca küçük harflerin kabul edildiğini, büyük harflere izin verilmediğini unutmayın.
Örneğin, "Bazı Hizmetler" için istemci kimliğini ve API anahtarını depolamak üzere şu komutu çalıştırabilirsiniz:
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
Mevcut ortam yapılandırmasını alma
Projenizin ortam yapılandırmasında şu anda neyin depolandığını incelemek için firebase functions:config:get
kullanabilirsiniz. Aşağıdakine benzer bir JSON çıktısı verir:
{
"someservice": {
"key":"THE API KEY",
"id":"THE CLIENT ID"
}
}
Bu işlev, Google Cloud Runtime Configuration API'ye dayanır.
Bir işlevde ortam yapılandırmasına erişmek için functions.config
kullanma
Bazı yapılandırmalar, ayrılmış firebase
ad alanı altında otomatik olarak sağlanır. Ortam yapılandırması, çalışan işlevinizde functions.config()
aracılığıyla kullanılabilir.
Yukarıdaki yapılandırmayı kullanmak için kodunuz şu şekilde görünebilir:
const functions = require('firebase-functions/v1');
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ı kullanma
Bazı Node modülleri yapılandırma gerektirmeden kullanılabilir. Diğer modüllerin doğru şekilde başlatılması için ek yapılandırma gerekir. Bu yapılandırmayı sabit kodlamak yerine ortam yapılandırma değişkenlerinde saklamanızı öneririz. Bu sayede kodunuzu çok daha taşınabilir hale getirebilir, uygulamanızın kaynak kodunu açabilir veya üretim ve hazırlık sürümleri arasında kolayca geçiş yapabilirsiniz.
Örneğin, Slack Node SDK modülünü kullanmak için şunu yazabilirsiniz:
const functions = require('firebase-functions/v1');
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(functions.config().slack.url);
Dağıtımdan ö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 kopyalar.
Otomatik olarak doldurulan ortam değişkenleri
İşlevlerin çalışma zamanında ve yerel olarak emüle edilen işlevlerde otomatik olarak doldurulan ortam değişkenleri vardır. Bunlar arasında Google Cloud tarafından doldurulanlar ve Firebase'e özgü bir ortam değişkeni yer alır:
process.env.FIREBASE_CONFIG
: Aşağıdaki Firebase proje yapılandırma bilgilerini sağlar:
{
databaseURL: 'https://DATABASE_NAME.firebaseio.com',
storageBucket: 'PROJECT_ID.firebasestorage.app
',
projectId: 'PROJECT_ID'
}
Gerçek Firebase yapılandırmanızdaki değerlerin, projenizde sağladığınız kaynaklara bağlı olarak değişebileceğini unutmayın.
Bu yapılandırma, Firebase Admin SDK'sını herhangi bir bağımsız değişken olmadan başlattığınızda otomatik olarak uygulanır. JavaScript'te işlev yazıyorsanız şu şekilde başlatın:
const admin = require('firebase-admin');
admin.initializeApp();
TypeScript'te işlev yazıyorsanız şu şekilde başlatın:
import * as functions from 'firebase-functions/v1';
import * as admin from 'firebase-admin';
import 'firebase-functions/v1';
admin.initializeApp();
Yönetici SDK'sını hizmet hesabı kimlik bilgilerini kullanarak varsayılan proje yapılandırmasıyla başlatmanız gerekiyorsa kimlik bilgilerini bir dosyadan yükleyip FIREBASE_CONFIG
'ya şu şekilde ekleyebilirsiniz:
serviceAccount = require('./serviceAccount.json');
const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);