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.
Node.js
const { onRequest } = require('firebase-functions/v2/https');
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 = onRequest(
{ minInstances: minInstancesConfig },
(req, res) => {
res.send(`${welcomeMessage.value()}! I am a function.`);
}
);
Python
from firebase_functions import https_fn
from firebase_functions.params import IntParam, StringParam
MIN_INSTANCES = IntParam("HELLO_WORLD_MIN_INSTANCES")
WELCOME_MESSAGE = StringParam("WELCOME_MESSAGE")
# To use configured parameters inside the config for a function, provide them
# directly. To use them at runtime, call .value() on them.
@https_fn.on_request(min_instances=MIN_INSTANCES)
def hello_world(req):
return https_fn.Response(f'{WELCOME_MESSAGE.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. 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 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 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.
Node.js
const { GoogleGenerativeAI } = require('@google/generative-ai');
const { defineSecret } = require('firebase-functions/params');
const { onInit } = require('firebase-functions/v2/core');
const apiKey = defineSecret('GOOGLE_API_KEY');
let genAI;
onInit(() => {
genAI = new GoogleGenerativeAI(apiKey.value());
})
Python
from firebase_functions.core import init
from firebase_functions.params import StringParam, PROJECT_ID
import firebase_admin
import vertexai
location = StringParam("LOCATION")
x = "hello"
@init
def initialize():
# Note: to write back to a global, you'll need to use the "global" keyword
# to avoid creating a new local with the same name.
global x
x = "world"
firebase_admin.initialize_app()
vertexai.init(PROJECT_ID.value, location.value)
Secret
türündeki parametreleri kullanıyorsanız bunların yalnızca gizliliği bağlayan işlevlerin sürecinde kullanılabileceğini unutmayın. Bir gizlilik yalnızca bazı işlevlerde bağlanmışsa kullanmadan önce secret.value()
değerinin yanlış olup olmadığını kontrol edin.
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:
Node.js
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: params.select(["odd", "even"])});
const memory = defineInt("MEMORY", {
description: "How much memory do you need?",
input: params.select({ "micro": 256, "chonky": 2048 }),
});
const extensions = defineList("EXTENSIONS", {
description: "Which file types should be processed?",
input: params.multiSelect(["jpg", "tiff", "png", "webp"]),
});
const storageBucket = defineString('BUCKET', {
description: "This will automatically
populate the selector field with the deploying Cloud Project’s
storage buckets",
input: params.PICK_STORAGE_BUCKET,
});
Python
from firebase_functions.params import (
StringParam,
ListParam,
TextInput,
SelectInput,
SelectOptions,
ResourceInput,
ResourceType,
)
MIN_INSTANCES = IntParam("HELLO_WORLD_MIN_INSTANCES")
WELCOME_MESSAGE = StringParam(
"WELCOME_MESSAGE",
default="Hello World",
description="The greeting that is returned to the caller of this function",
)
ONLY_PHONE_NUMBERS = StringParam(
"PHONE_NUMBER",
input=TextInput(
validation_regex="\d{3}-\d{3}-\d{4}",
validation_error_message="Please enter a phone number in the format XXX-YYY-XXX",
),
)
SELECT_OPTION = StringParam(
"PARITY",
input=SelectInput([SelectOptions(value="odd"), SelectOptions(value="even")]),
)
STORAGE_BUCKET = StringParam(
"BUCKET",
input=ResourceInput(type=ResourceType.STORAGE_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ü 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
- List (Node.js)
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:
Node.js
const { onRequest } = require('firebase-functions/v2/https');
const { defineInt } = require('firebase-functions/params');
const minInstancesConfig = defineInt('HELLO\_WORLD\_MININSTANCES');
export const helloWorld = onRequest(
{ minInstances: minInstancesConfig },
(req, res) => {
//…
Python
from firebase_functions import https_fn
from firebase_functions.params import IntParam
MIN_INSTANCES = IntParam("HELLO_WORLD_MIN_INSTANCES")
@https_fn.on_request(min_instances=MIN_INSTANCES)
def hello_world(req):
...
Ayrıca, hangi seçeneği seçeceğ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:
Node.js
const { onRequest } = require('firebase-functions/v2/https');
const environment = params.defineString(‘ENVIRONMENT’, {default: 'dev'});
// use built-in comparators
const minInstancesConfig = environment.equals('PRODUCTION').thenElse(10, 1);
export const helloWorld = onRequest(
{ minInstances: minInstancesConfig },
(req, res) => {
//…
Python
from firebase_functions import https_fn
from firebase_functions.params import IntParam, StringParam
ENVIRONMENT = StringParam("ENVIRONMENT", default="dev")
MIN_INSTANCES = ENVIRONMENT.equals("PRODUCTION").then(10, 0)
@https_fn.on_request(min_instances=MIN_INSTANCES)
def hello_world(req):
...
Yalnızca çalışma zamanında kullanılan parametreler
value
işleviyle erişildi:
Node.js
const { onRequest } = require('firebase-functions/v2/https');
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 = onRequest(
(req, res) => {
res.send(`${welcomeMessage.value()}! I am a function.`);
}
);
Python
from firebase_functions import https_fn
from firebase_functions.params import StringParam
WELCOME_MESSAGE = StringParam("WELCOME_MESSAGE")
@https_fn.on_request()
def hello_world(req):
return https_fn.Response(f'{WELCOME_MESSAGE.value()}! I am a function!')
Yerleşik parametreler
Cloud Functions SDK'sı, firebase-functions/params
alt paketinden kullanılabilen üç önceden tanımlanmış parametre sunar:
Node.js
projectID
— işlevin çalıştırıldığı Cloud projesi.databaseURL
: İşlevle ilişkili Realtime Database örneğinin URL'si (Firebase projesinde etkinse).storageBucket
: İşlevle ilişkili Cloud Storage paketi (Firebase projesinde etkinse).
Python
PROJECT_ID
— işlevin çalıştırıldığı Cloud projesi.DATABASE_URL
: ilişkilendirilmiş Realtime Database örneğinin URL'si işleviyle birlikte (Firebase projesinde etkinleştirilmişse).STORAGE_BUCKET
: İşlevle ilişkili Cloud Storage paketi (Firebase projesinde etkinse).
Bu parametreler, kullanıcı tanımlı dize parametreleri gibi her açıdan çalışır. Bununla birlikte, değerleri Firebase CLI tarafından her zaman bilindiği için dağıtım sırasında değerleri için hiçbir zaman istek gönderilmez ve .env
dosyalarına kaydedilmez.
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:
Node.js
const { onRequest } = require('firebase-functions/v2/https');
const { defineSecret } = require('firebase-functions/params');
const discordApiKey = defineSecret('DISCORD_API_KEY');
export const postToDiscord = onRequest(
{ secrets: [discordApiKey] },
(req, res) => {
const apiKey = discordApiKey.value();
//…
Python
from firebase_functions import https_fn
from firebase_functions.params import SecretParam
DISCORD_API_KEY = SecretParam('DISCORD_API_KEY')
@https_fn.on_request(secrets=[DISCORD_API_KEY])
def post_to_discord(req):
api_key = DISCORD_API_KEY.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ü (Node.js tabanlı projelerde) veya os.environ
(Python tabanlı projelerde) ü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 erişebilir:
Node.js
// Responds with "Hello Earth and Humans"
exports.hello = onRequest((request, response) => {
response.send(`Hello ${process.env.PLANET} and ${process.env.AUDIENCE}`);
});
Python
import os
@https_fn.on_request()
def hello(req):
return https_fn.Response(
f"Hello {os.environ.get('PLANET')} and {os.environ.get('AUDIENCE')}"
)
Birden fazla ortam değişkeni grubunu 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. .env
dosyalarındaki ve projeye özel .env
dosyalarındaki (varsa) ortam değişkenleri, 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 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:Node.js
const { onRequest } = require('firebase-functions/v2/https'); exports.processPayment = onRequest( { secrets: ["SECRET_NAME"] }, (req, res) => { const myBillingService = initializeBillingService( // reference the secret value process.env.SECRET_NAME ); // Process the payment } );
Python
import os from firebase_functions import https_fn @https_fn.on_request(secrets=["SECRET_NAME"]) def process_payment(req): myBillingService = initialize_billing(key=os.environ.get('SECRET_NAME')) # Process the payment ...
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:Node.js
exports.anotherEndpoint = 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 });
Python
@https_fn.on_request() def another_endpoint(req): return https_fn.Response(f"The secret API key is {os.environ.get("SECRET_NAME")}") # Responds with "The secret API key is None" because the `secrets` 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. 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 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, 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 Cloud Functions emülatörü.
Yerel bir Cloud Functions emülatör kullanırken .env.local
dosyası oluşturarak projenizin ortam değişkenlerini geçersiz kılabilirsiniz. İç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ünde 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, izin kısıtlamaları nedeniyle gizli değerlere erişemeyebilir.
Ortam değişkenleri için Cloud Functions emülatör desteğine benzer şekilde,
.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
ü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, 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. 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
saklayabileceğinizi düşünebilirsiniz.
Bunun yerine Secret Manager.
İşlevler kodunuzu da güncellemeniz gerekir. functions.config
kullanan işlevlerin artık ortam değişkenleri bölümünde gösterildiği gibi process.env
kullanması gerekir.