Fonksiyonlarınız için genellikle üçüncü taraf API anahtarları veya ayarlanabilir ayarlar. Cloud Functions için Firebase SDK'sı teklifleri bu verileri kolayca depolayıp alabilmenizi sağlayan yerleşik ortam yapılandırması veri türünü ifade eder.
Üç seçenekten birini belirleyebilirsiniz:
- Parametre haline getirilmiş yapılandırma (çoğu senaryo için önerilir). Bu, güçlü bir şekilde yazılmış bir ortam sağlar sırasında doğrulanan parametrelerle yapılandırmanın hataları önler ve hata ayıklamayı basitleştirir.
- Ortam değişkenlerinin dosya tabanlı yapılandırması. Bu yaklaşımda, manuel olarak bir Yükleme için dotenv dosyası değişkenlerine odaklanmalıdır.
- Firebase KSA ile çalışma zamanı ortam yapılandırması
ve
functions.config
(yalnızca Cloud Functions (1. nesil)).
Çoğu kullanım durumu için parametre haline getirilmiş 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 hale getirir ve tüm parametreler geçerli bir değere sahip olmadığı sürece dağıtım engellenir. Buna karşılık, ortam değişkenleriyle yapılandırma dağıtım sırasında kullanılamaz gerekir.
Parametreli yapılandırma
Cloud Functions for Firebase, yapılandırmayı tanımlamak için bir arayüz sağlar parametrelerini kod tabanınıza bildirimsel olarak eklemeniz gerekir. Bu parametrelerin değeri işlev dağıtımı sırasında hem dağıtımı hem de çalışma zamanını ayarlarken kullanılabilir ne kadar iyi karşıladığını görebileceksiniz. Bu durumda CLI, dağıtımı engeller değer yoksa tüm parametreler geçerli bir değere sahip değilse.
Kodunuzda parametreleri tanımlamak için şu modeli izleyin:
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.`);
}
);
Parametreleştirilmiş yapılandırma değişkenleriyle bir işlev dağıtırken
Firebase CLI, önce yerel .env dosyalarından değerlerini yüklemeye çalışır. Şu durumda:
bu dosyalarda mevcut değilse ve default
ayarlanmamışsa CLI,
ve sonra bunların değerlerini otomatik olarak bir
functions/
dizininizde .env.<project_ID>
adlı .env
dosyası:
$ 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 denetimine eklemek yararlı olabilir.
Global kapsamda parametreleri kullanma
Dağıtım sırasında işlev kodunuz,
parametrelerin gerçek değerleri vardır. Diğer bir deyişle,
uygulanması dağıtım hatasına yol açar. Bir
parametresini kullanıyorsanız, ilk kullanıma hazırlama geri çağırmasını kullanın.
onInit()
Bu geri çağırma, üretimde herhangi bir işlev çalıştırılmadan önce çalışır ancak
sırasında çağrılmadığından emin olun; bu nedenle, parametrenin parametresine
değer.
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());
})
KSA davranışını yapılandırın
Parametreler, KSA'nın nasıl çalıştığını kontrol eden bir Options
nesnesiyle yapılandırılabilir.
değerler istemi oluşturur. Aşağıdaki örnekte,
bir telefon numarası biçimi, basit bir seçim seçeneği sunmak ve
bir seçim seçeneğini Firebase projesinden otomatik olarak doldurun:
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ü yazma imkanı sağlar ve Cloud Secret Manager'ın gizli anahtarları da desteklenir. Desteklenen türler şunlardır:
- Gizli Anahtar
- Dize
- Boole
- Tamsayı
- Kayan
Parametre değerleri ve ifadeleri
Firebase, parametrelerinizi hem dağıtım sırasında hem de işleviniz sırasında değerlendirir yürütülüyor. Bu ikili ortamlar nedeniyle, ve bunları kullanarak uygulamanızın çalışma zamanı seçeneklerini işlevlerine dahildir.
İşlevinize çalışma zamanı seçeneği olarak bir parametre iletmek için parametreyi 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, dönüşüm izleme özelliğinin ne anlama geldiğini öğrenmek için bir parametreyle yerine yerleşik karşılaştırıcıları kullanmanız gerekir. değeri kontrol edin:
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 parametreler
value
işleviyle erişildi:
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ı şu önceden tanımlanmış üç parametre sunar:
firebase-functions/params
alt paketi:
projectID
— işlevin çalıştırıldığı Cloud projesi.databaseURL
: ilişkilendirilmiş Realtime Database örneğinin URL'si işleviyle birlikte (Firebase projesinde etkinleştirilmişse).storageBucket
: İşlevle ilişkili Cloud Storage paketi (Firebase projesinde etkinleştirilmişse).
Bunlar, kullanıcı tanımlı dize
Parametreleri her açıdan bilindiği için bunun dışında,
Firebase CLI'ı kullanıyorsanız bunların değerleri dağıtımda
.env
dosyaya kaydedildi.
Gizli anahtar parametreleri
defineSecret()
kullanılarak tanımlanan Secret
türündeki parametreler, dizeyi temsil eder
parametreleridir. Şunun yerine:
yerel bir .env
dosyasıyla karşılaştırarak kontrol eder ve
eksik, gizli parametreler ise Cloud Secret Manager'daki mevcut olup olmadığını kontrol eder.
dağıtım sırasında yeni bir gizli anahtarın değerini etkileşimli olarak isteme.
Bu şekilde tanımlanan gizli anahtar parametreleri, gereken kişiler:
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();
//…
Gizli anahtar değerleri, işlev yürütülünceye kadar gizli tutulur. Bu nedenle, bunları, işlevinizi yapılandırırken kullanamazsınız.
Ortam değişkenleri
Cloud Functions for Firebase, şunları destekliyor:
Dotenv
.env
dosyasında belirtilen ortam değişkenlerini
iki katı olabilir. Ortam değişkenleri dağıtıldıktan sonra
process.env
arayüzü.
Ortamınızı bu şekilde yapılandırmak için projenizde bir .env
dosyası oluşturun.
istediğiniz değişkenleri ekleyip 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
fonksiyon kodunuz bunlara
process.env
söz dizimi:
// 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 grubunu dağıtma
Firebase'iniz için alternatif bir ortam değişkenleri grubuna ihtiyacınız varsa
hazırlık ve üretim gibi), belirli görevleri
.env.<project or
alias>
dosyanızı ve
ortam değişkenlerini de dahil etmelisiniz. Ortam değişkenlerinin
.env
ve projeye özel .env
dosyaları (varsa)
, dağıtılan tüm işlevlere dahil edilir.
Örneğin bir projede, üzerinde Geliştirme ve üretim için farklı değerler:
.env
|
.env.dev
|
.env.prod
|
PLANET=Dünya
KİTLE=İnsanlar |
KİTLE=Dev İnsanlar | KİTLE=Üretken İnsanlar |
Bu ayrı dosyalardaki değerler göz önünde bulundurulduğunda, ortam değişkenleri kümesi işlevlerinizin dağıtılması hedef projenize bağlı olarak değişecektir:
$ 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. Şunlardan hiçbirini kullanmayın:
.env
dosyalarınızda şu anahtarları kullanın:
- X_GOOGLE_ ile başlayan tüm anahtarlar
- EXT_ tarihinden itibaren tüm anahtarlar
- FIREBASE_ ile başlayan tüm anahtarlar
- Şu listedeki herhangi bir tuş:
- CLOUD_RUNTIME_CONFIG
- ENTRY_POINT (GİRİŞ_POINT)
- GSİO_PROJESİ
- GCLOUD_PROJESİ
- GOOGLE_CLOUD_PROJECT
- FUNCTION_TRIGGER_TYPE
- İŞLEV_ADI
- FUNCTION_MEMORY_MB
- FUNCTION_TIMEOUT_SEC
- İŞLEV_KİMLİĞİ
- FUNCTION_REGION
- İŞLEV_HEDEFİ
- FUNCTION_SIGNATURE_TYPE
- K_SERVICE
- K_REVISION
- BAĞLANTI NOKTASI
- K_YAPILANDIRMA
Hassas yapılandırma bilgilerini depolama ve bunlara erişme
.env
dosyalarında depolanan ortam değişkenleri işlev için kullanılabilir
yapılandırma vardır, ancak bunları, hassas verileri depolamak için güvenli bir yol olarak
bilgi edinmek için kullanabilirsiniz. Bu, özellikle
.env
dosyalarınızı kaynak kontrolüne kontrol ederseniz önemlidir.
Hassas yapılandırma bilgilerini saklamanıza yardımcı olması için Cloud Functions for Firebase Google Cloud ile entegre olur Secret Manager. Bu şifrelenmiş hizmet, yapılandırma değerlerini güvenli bir şekilde saklar. gerektiğinde işlevlerinize kolayca erişebilmenizi sağlar.
Gizli anahtar oluşturma ve kullanma
Gizli anahtar oluşturmak için Firebase KSA'yı kullanın.
Gizli anahtar oluşturmak ve kullanmak için:
Yerel proje dizininizin kök dizininden 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ı mesajını tekrarlar ve işlevleri dağıtmanız gerektiği konusunda uyarır geçerlilik kazanması gerekir.
Dağıtmadan önce, işlev kodunuzun
runWith
parametresini kullanarak işlevin gizli anahtara 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 dağıtımını yapın:
firebase deploy --only functions
Artık bu değişkene diğer herhangi bir ortam değişkeni gibi erişebileceksiniz.
Bunun aksine,
runWith
gizli anahtara erişmeye çalıştığında tanımlanmamış bir değer alıyor:
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 anahtar değerine erişebilir. Yalnızca
özel olarak runWith
parametresinde bir gizli anahtar içeren işlevler
bu gizli anahtara ortam değişkeni olarak erişebilir. Böylece ekipteki herkesin
yalnızca ihtiyaç duydukları yerde kullanılabilmesini sağlayarak
yanlışlıkla bir sır sızdırabilirsiniz.
Gizli anahtarları yönetme
Gizli anahtarlarınızı yönetmek için Firebase KSA'yı kullanın. Sırları bu şekilde yönetirken bazı CLI değişikliklerinin bazı öğeleri değiştirmenizi ve/veya yeniden dağıtmanızı gerektirdiğini ilişkili işlevler. Özellikle:
- Bir gizli anahtar için yeni bir değer belirlediğinizde, tüm gizli anahtarların referans işlevler en güncel değeri elde etmelerini sağlar.
- Bir gizli anahtarı silerseniz dağıtılan işlevlerinizden hiçbirinin bu gizli anahtara referansta bulunur. Gizli anahtar değeri kullanan işlevler işlem yapılmadan başarısız olur.
Gizli anahtar yönetimi için Firebase CLI komutlarının özetini aşağıda bulabilirsiniz:
# 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 isteğe bağlı sürümü sağlayabilirsiniz
parametresini kullanabilirsiniz. Örneğin:
functions:secrets:access SECRET_NAME[@VERSION]
Bu işlemler hakkında daha fazla bilgi için -h
komutunu şu komutla geçirin:
KSA yardımını görüntüleyin.
Gizli anahtarlar nasıl faturalandırılır?
Secret Manager 6 etkin gizli anahtara izin verir sürümler ücretsiz deneyin. Bu, Firebase'de ayda 6 gizli anahtarınızın olabileceği anlamına gelir. teşvik edebilirsiniz.
Varsayılan olarak Firebase CLI, kullanılmayan gizli anahtarı otomatik olarak kaldırmayı dener
uygun durumlarda (ör. yeni bir sürümle işlevleri dağıttığınızda)
sunuyor. Ayrıca, kullanılmayan gizli anahtarları aktif şekilde temizlemek için
functions:secrets:destroy
ve functions:secrets:prune
.
Secret Manager,tek bir cihazda 10.000 faturalandırılmamış aylık erişim işlemine izin verir.
sır. İşlev örnekleri, yalnızca runWith
özelliğinde belirtilen gizli anahtarları okur
parametresini kullanabilirsiniz. Çok sayıda işlev örneğiniz varsa
çok fazla sır okuyorsanız projeniz bu hakkı aşabilir ve böylelikle
sizden 10.000 erişim işlemi başına 0,03 ABD doları ücret alınır.
Daha fazla bilgi için bkz. Secret Manager Fiyatlandırması.
Emülatör desteği
Dotenv ile ortam yapılandırması, yerel Cloud Functions emülatörü.
Yerel bir Cloud Functions emülatörü kullanırken ortamı geçersiz kılabilirsiniz.
değişkenlerini kullanarak projeniz için .env.local
dosya oluşturun. İçindekiler
.env.local
, .env
dosyasına ve projeye özel .env
dosyasına göre önceliklidir.
Örneğin bir projede, üzerinde geliştirme ve yerel test için farklı değerler:
.env
|
.env.dev
|
.env.local
|
PLANET=Dünya
KİTLE=İnsanlar |
KİTLE=Dev İnsanlar | KİTLE=Yerel İnsanlar |
Emülatör, yerel bağlamda başlatıldığında ortamı yükler değişkenlerini aşağıda gösterilmiştir:
$ 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ü, gizli anahtarların şu amaçlarla kullanımını destekler: hassas yapılandırma bilgilerini depolama ve bunlara erişme. Varsayılan olarak emülatör, üretim gizli anahtarlarınıza uygulama varsayılan kimlik bilgileri ile erişemez. CI ortamları gibi belirli durumlarda emülatör, gizli anahtar değerlerinin kurtarılmasını sağlayın.
Ortam değişkenleri için Cloud Functions emülatör desteğine benzer şekilde,
.secret.local
dosyası oluşturarak gizli anahtar değerlerini geçersiz kılabilirsiniz. Bu da,
özellikle de erişiminiz yoksa işlevlerinizi yerel olarak test etmenizi
anahtar değerine ekleyin.
Ortam yapılandırmasından taşıma
functions.config
üzerinde ortam yapılandırmasını kullanıyorsanız
mevcut yapılandırmanızı ortam değişkenleri olarak taşıyabilir (
dotenv biçiminde olması gerekir).
Firebase KSA, yapılandırma çıktısını veren bir dışa aktarma komutu sağlar
dizininizin .firebaserc
dosyasında listelenen her bir takma ad veya proje için
(aşağıdaki örnekte local
, dev
ve prod
) .env
dosyaları olarak tanımlanabilir.
Taşımak için mevcut ortam yapılandırmalarınızı
firebase functions:config:export
komutu:
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, alan adını değiştirmek için bir önek girmenizin isteneceğini unutmayın. dışa aktarılan ortam değişken anahtarlarını görebilirsiniz. Bunun nedeni, tüm yapılandırmaların dönüştürülebilir çünkü geçersiz olabilir veya olabilir ayrılmış ortam değişken anahtarına gidin.
Oluşturulan .env
dosyalarının içeriğini dikkatlice incelemenizi öneririz.
veya .env
dosyalarını kaynak kontrolüne kontrol edin. Eğer
tüm değerler hassastır ve sızdırılmaması gerekir. Bunları .env
cihazınızdan kaldırın.
dosyalarınızı güvenli bir şekilde burada
Bunun yerine Secret Manager.
İşlevler kodunuzu da güncellemeniz gerekir. Kullanılan tüm işlevler
functions.config
için artık aşağıda gösterildiği gibi bunun yerine process.env
kullanılmalıdır.
2. nesle geçin.
Ortam yapılandırması
firebase-functions
v3.18.0
ürününde ortam değişkeni desteği sunulmadan öncefunctions.config()
yapılandırmalısınız. Bu yaklaşım hâlâ desteklenmektedir ancak
Tüm yeni projeler, kullanımı daha basit olduğu için bunun yerine ortam değişkenlerini kullanır
ve kodunuzun taşınabilirliğini artırabilirsiniz.
KSA ile ortam yapılandırmasını ayarlama
Ortam verilerini depolamak için firebase functions:config:set
kullanabilirsiniz
komutunu Firebase CLI'da görüntüleyebilirsiniz.
Her anahtar, ilişkili öğeleri gruplandırmak için noktalar kullanılarak ad alanına
birlikte yapılandıralım. Yalnızca küçük resimlerin
anahtarlarda kabul edilir; büyük harfli karakterlere izin verilmez.
Örneğin, istemci kimliği ve API anahtarını "Bazı Hizmetler"i şu şekilde ç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 nelerin depolandığını incelemek için
firebase functions:config:get
kullanabilir. Şuna benzer bir JSON çıktısı verir:
bu:
{
"someservice": {
"key":"THE API KEY",
"id":"THE CLIENT ID"
}
}
Bu işlev, Google Cloud Runtime Configuration API.
Bir işlevde ortam yapılandırmasına erişmek için functions.config
kullanma
Bazı yapılandırmalar, ayrılmış firebase
kapsamında otomatik olarak sağlanır
tıklayın. Ortam yapılandırması,
işlevini functions.config()
aracılığıyla gerçekleştirin.
Yukarıdaki yapılandırmayı kullanmak için kodunuz aşağıdaki gibi 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ı Düğüm modülleri herhangi bir yapılandırma olmadan hazır. Diğer modüllerde ekstradan olması gerekiyor doğru şekilde başlatın. Bu yapılandırmayı depolamanızı öneririz ortam yapılandırma değişkenleri için kodlayın. Bu, kullanıcıların kodunuzun kolay taşınabilir olmasını sağlar, böylece kodlarınızı açık kaynaklı hale ü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ının 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ırfirebase functions:config:clone --from <fromProject>
, başka bir projenin ortamını klonlar bu riskleri kabul edebilmelisiniz.
Otomatik olarak doldurulmuş ortam değişkenleri
Her yerel olarak emülasyonlu işlevlerde kullanılır. Bunlardan bazıları Google Cloud tarafından doldurulan, Firebase'e özel bir ortam değişkeni ekleyin:
process.env.FIREBASE_CONFIG
: Aşağıdaki Firebase proje yapılandırma bilgilerini sağlar:
{
databaseURL: 'https://databaseName.firebaseio.com',
storageBucket: 'projectId.appspot.com',
projectId: 'projectId'
}
Bu yapılandırma, Firebase'i başlattığınızda otomatik olarak uygulanır Bağımsız değişken içermeyen Yönetici SDK'sı. Fonksiyonları JavaScript ile yazıyorsanız şu şekilde başlatın:
const admin = require('firebase-admin');
admin.initializeApp();
İşlevleri TypeScript'te 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ı varsayılan proje yapılandırmasıyla başlatmanız gerekiyorsa
hizmet hesabı kimlik bilgilerini kullanarak kimlik bilgilerini bir dosyadan yükleyebilir ve
bunları FIREBASE_CONFIG
içine şu şekilde ekleyin:
serviceAccount = require('./serviceAccount.json');
const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);