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ının sunduğu avantajlar 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 CLI ile çalışma zamanı ortam yapılandırması ve functions.config (yalnızca Cloud Functions (1. nesil)) için geçerlidir.

Ç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 kullanılan bir arayüz sunar 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');
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, parametreleri gerçek değerler içeriyor. 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 sayede, parametrelerin 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');
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');
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');
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');
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, Dotenv .env dosyasında belirtilen ortam değişkenlerini iki katı olabilir. Ortam değişkenleri dağıtıldıktan sonra process.env kullanır.

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:

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

Cloud Functions for Firebase, hassas yapılandırma bilgilerini saklamanıza yardımcı olur. Google Cloud ile entegre olur Secret Manager (Gizli Anahtar Yöneticisi). 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 CLI'ı 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'ı dağıtı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 CLI'ı 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 ö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 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.

Firebase CLI, varsayılan olarak kullanılmayan gizli anahtarları 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 aynı anda 10.000 faturalandırılmamış aylık erişim işlemine 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ünde gizli anahtarlar ve kimlik bilgileri

Cloud Functions emülatörü, gizli anahtarların şu amaçlarla kullanılması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 CLI, yapılandırma çıkışını üreten bir dışa aktarma komutu sağlar dizininizin .firebaserc dosyasında listelenen her takma ad veya proje için (aşağıdaki örnekte local, dev ve prod) .env dosyaları olarak tanımlanmaktadır.

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'ı kullanı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ı

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 komutundaki Firebase CLI komutuyla çalıştırın. 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');
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');
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ır
  • firebase 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 kullananlar, 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';
import * as admin from 'firebase-admin';
import 'firebase-functions';
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);