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.
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. Ş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.
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ünde parametreler kullanırsanız bunların yalnızca kullanılabilir olduğunu unutmayın
gizli anahtarı sınırlayan fonksiyonların işlemindedir. Gizli anahtar bağlıysa
bazı işlevlerde bulunuyorsa, kullanmadan önce secret.value()
öğesinin yanlış olup olmadığını kontrol edin.
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:
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ü yazma imkanı sağlar ve Cloud Secret Manager'ın gizli anahtarları da desteklenir. Desteklenen türler şunlardır:
- Gizli Anahtar
- Dize
- Boole
- Tamsayı
- Kayan
- Liste (Node.js)
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:
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, 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:
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ı şu önceden tanımlanmış üç parametre sunar:
firebase-functions/params
alt paketi:
Node.js
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).
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 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. Ş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 diğer 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,
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ı projeler).
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 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'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:
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'ı 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: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. 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
Ortam değişkenleri.