Ortamınızı yapılandırma


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.

Aşağıdaki seçenekler arasından seçim yapabilirsiniz:

  • Parametre haline getirilmiş yapılandırma (çoğu senaryo için önerilir). Bu, dağıtım sırasında doğrulanan parametrelerle güçlü şekilde yazılmış bir ortam yapılandırması sağlar. Bu sayede 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.

Ç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ırma parametrelerini kod tabanınızda açık bir şekilde tanımlamak için bir arayüz sağlar. 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, tüm parametrelerin geçerli bir değeri olmadığı sürece CLI'nin dağıtımı engelleyeceği anlamına gelir.

Kodunuzda parametreleri tanımlamak için aşağıdaki modeli uygulayı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.`);
  }
);

Firebase CLI, parametreli yapılandırma değişkenlerine sahip bir işlevi dağıtırken değerlerini önce yerel .env dosyalarından yüklemeye çalışır. Bu dosyalarda mevcut değilse ve default ayarlanmamışsa CLI, dağıtım sırasında değerleri ister ve ardından değerlerini functions/ dizininizdeki .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 denetimine eklemek yararlı olabilir.

Global kapsamda parametreleri kullanma

Dağıtım sırasında, parametreleriniz gerçek değerlere sahip olmadan önce işlev kodunuz yüklenir ve denetlenir. Diğer bir deyişle, uygulanması dağıtım hatasına yol açar. Bir global değeri başlatmak için parametre kullanmak istediğiniz durumlarda başlatma geri çağırma işlevini onInit() kullanın. 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());
  })

CLI davranışını yapılandırma

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 Projects
storage buckets"})

Parametre türleri

Parametreli yapılandırma, parametre değerleri için güçlü bir yazım denetimi sağlar ve Cloud Secret Manager'daki gizli anahtarları da destekler. 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 yürütülürken değerlendirir. 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: İşlevin çalıştığı Cloud projesi.
  • databaseURL: İşlevle ilişkili Realtime Database örneğinin URL'si (Firebase projesinde etkinse).
  • storageBucket: İşlevle ilişkili Cloud Storage paketi (Firebase projesinde etkinleştirilmişse).

Bunlar, kullanıcı tanımlı dize dışında tüm açılardan ölçebilir. Bunun nedeni, bu parametrelerin değerleri her zaman 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. Gizli parametreler, yerel bir .env dosyasını kontrol edip dosya yoksa yeni bir değer yazmak yerine Cloud Secret Manager'da varlığını kontrol eder ve dağıtım sırasında yeni bir gizli anahtarın değerini etkileşimli olarak ister.

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ü ü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:

  1. functions/ dizininizde bir .env dosyası oluşturun:

    # Directory layout:
    #   my-project/
    #     firebase.json
    #     functions/
    #       .env
    #       package.json
    #       index.js
    
  2. Düzenlemek için .env dosyasını açın ve istediğiniz anahtarları ekleyin. Örneğin:

    PLANET=Earth
    AUDIENCE=Humans
    
  3. İş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, process.env söz dizimini kullanarak bu değişkenlere 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şkeni grubuna (ör. hazırlık ve üretim) ihtiyacınız varsa bir .env.<project or alias> dosyası oluşturun ve projeye özel ortam değişkenlerinizi bu dosyaya yazın. 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

AUDIENCE=Humans

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ı şirket içi 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_ 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
  • GSİO_PROJESİ
  • GCLOUD_PROJECT
  • GOOGLE_CLOUD_PROJECT
  • FUNCTION_TRIGGER_TYPE
  • FUNCTION_NAME
  • FUNCTION_MEMORY_MB
  • FUNCTION_TIMEOUT_SEC
  • İŞLEV_KİMLİĞİ
  • FUNCTION_REGION
  • FUNCTION_TARGET
  • FUNCTION_SIGNATURE_TYPE
  • K_SERVICE
  • K_REVISION
  • PORT
  • K_YAPILANDIRMA

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 depolamak için güvenli bir yöntem olarak değerlendirmemeniz gerekir. Bu, özellikle .env dosyalarınızı kaynak denetimine eklerseniz ö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 depolar ve gerektiğinde işlevlerinizden kolayca erişmenize olanak tanır.

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:

  1. Yerel proje dizininizin kök dizininden aşağıdaki komutu çalıştırın:

    firebase functions:secrets:set SECRET_NAME

  2. 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.

  3. 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
      });
  4. Cloud Functions uygulamasını dağıtın:

    firebase deploy --only functions

Artık bu değişkene diğer herhangi bir ortam değişkeni gibi erişebileceksiniz. Buna karşılık, runWith içinde gizli anahtarı belirtmeyen başka bir işlev gizli anahtara erişmeye çalışırsa işlev, tanımlanmamış 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ığında gizli değere erişebilir. runWith parametresinde özel olarak gizli bir bilgi içeren yalnızca işlevler, bu gizli bilgiye ortam değişkeni olarak erişebilir. Bu sayede, gizli anahtar değerlerinin yalnızca ihtiyaç duyulan yerlerde kullanılmasını sağlayabilir ve gizli anahtarın yanlışlıkla sızması riskini azaltabilirsiniz.

Gizli anahtarları yönetme

Gizli anahtarlarınızı yönetmek için Firebase KSA'yı kullanın. Gizli bilgileri 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 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. Silinen bir gizli değer kullanan işlevler sessizce 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 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 komuta -h ekleyerek CLI yardımını görüntüleyin.

Gizli anahtarların faturalandırılması

Secret Manager, ücretsiz olarak 6 etkin gizli sürüm kullanmanıza olanak tanır. Bu, bir Firebase projesinde ayda 6 gizli anahtar kullanabileceğiniz anlamına gelir.

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, functions:secrets:destroy ve functions:secrets:prune kullanarak kullanılmayan sırlar için aktif olarak yer açabilirsiniz.

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 gizli anahtar okuyan işlev örneğiniz varsa projeniz bu izinleri aşabilir. Bu durumda, 10.000 erişim işlemi başına 0,03 ABD doları ödersiniz.

Daha fazla bilgi için Secret Manager Fiyatlandırması başlıklı makaleyi inceleyin.

Emülatör desteği

dotenv ile ortam yapılandırması, yerel bir Cloud Functions emülatörüyle birlikte çalışacak şekilde tasarlanmıştı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

AUDIENCE=Humans

KİTLE=Dev İnsanlar KİTLE=Yerel İnsanlar

Yerel bağlamda başlatıldığında emülatör, çevre değişkenlerini aşağıdaki 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ü, 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, ö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ı kullanıyorsanız mevcut yapılandırmanızı ortam değişkenleri olarak (dotenv biçiminde) taşıyabilirsiniz. Firebase CLI, dizininizdeki .firebaserc dosyasında listelenen her bir takma ad veya projenin yapılandırmasını (aşağıdaki örnekte local, dev ve prod) .env dosyaları olarak dışa aktaran bir dışa aktarma komutu sağlar.

Taşıma işlemini 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, 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, geçersiz veya ayrılmış ortam değişkeni anahtarı olabilecek 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ğerleri .env dosyalarınızdan kaldırın ve Secret Manager dosyalarında güvenli bir şekilde saklayın.

İş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ılması gerekiyor 2. nesle geçin.

Ortam yapılandırması

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. İlgili yapılandırmaları gruplandırmak için her anahtar nokta işareti kullanılarak ad alanına eklenebilir. Anahtarlarda yalnızca küçük harflerin kabul edildiğini, büyük harflere izin verilmediğini unutmayın.

Ö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 komutunu kullanabilirsiniz. Ş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'yi temel alır.

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ı, functions.config() aracılığıyla çalışan işlevinizde kullanılabilir. 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ü ilk kez başlatmak için ortam yapılandırmasını kullanma

Bazı Node modülleri herhangi bir yapılandırma olmadan hazırdır. Diğer modüllerin doğru şekilde başlatılması için ek yapılandırma gerekir. Bu yapılandırmayı depolamanızı öneririz ortam yapılandırma değişkenleri için kodlayın. Bu sayede kodunuzu çok daha taşınabilir hale getirebilir, uygulamanızı açık kaynak hale getirebilir veya üretim ile hazırlık sürümleri arasında kolayca geçiş yapabilirsiniz.

Örneğin, Slack Node SDK modülünü kullanmak için şunları yazabilirsiniz:

const functions = require('firebase-functions/v1');
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(functions.config().slack.url);

Dağıtım yapmadan ö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ı klonlar proje başlatma belgesini kullanacaksınız.

Otomatik olarak doldurulan 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);