Uzantınızda parametreleri ayarlayın ve kullanın

Parametreler, kullanıcının yüklü her uzantı örneğini özelleştirdiği mekanizmadır. Parametreler, uzantı için ortam değişkenleri gibidir. Parametrelerin değerleri otomatik olarak doldurulabilir (yükleme sonrasında Firebase tarafından sağlanır) veya kullanıcı tarafından yapılandırılabilir (yükleme sırasında kullanıcı tarafından belirtilir).

Bu parametreleri, uzantınızın işlev kaynak kodunda, extension.yaml dosyanızda ve POSTINSTALL.md dosyanızda referans olarak kullanabilirsiniz. PARAMETER_NAME adlı bir parametreye referans verme söz dizimi aşağıda verilmiştir:

  • İşlevlerinizin kaynak kodunda params modülü (örneğin, params.defineInt("PARAMETER_NAME")) veya process.env.PARAMETER_NAME'i kullanın.

  • extension.yaml ve POSTINSTALL.md arasında ${param:PARAMETER_NAME} kullanın.

    Yüklemeden sonra Firebase konsolu, POSTINSTALL.md dosyasının içeriğini gösterir ve tüm parametre referanslarını, yüklü örneğin gerçek değerleriyle doldurur.

Otomatik olarak doldurulan parametreler

Yüklenen her uzantı örneği, Firebase tarafından sağlanan ve otomatik olarak doldurulan varsayılan parametrelere otomatik olarak erişebilir (Aşağıdaki tabloya bakın). Bu parametre değerleri, Firebase projesinin varsayılan değerleridir (ör. varsayılan Depolama alanı paketi) veya uzantıya özeldir (ör. uzantının örnek kimliği).

Otomatik olarak doldurulan tüm parametre değerleri değiştirilemez. Bu ayarlar, proje oluşturulurken veya uzantı yüklenirken belirlenir.

Firebase, uzantı için bu parametre değerlerini otomatik olarak doldursa da Firebase, kurulum sırasında ilişkili ürünleri kullanıcı için otomatik olarak sağlamaz. Uzantıyı yükleyen kullanıcı, yüklemeden önce projelerinde ilişkili ve geçerli ürünleri etkinleştirmelidir. Örneğin, uzantınız Cloud Firestore içeriyorsa kullanıcının projelerinde Cloud Firestore'yi ayarlaması gerekir. Kullanıcılarınızı PREINSTALL.md dosyasında bu şartlar hakkında bilgilendirmenizi öneririz.

Otomatik olarak doldurulan parametre referansı Açıklama Parametre değeri (Firebase tarafından sağlanır)
Firebase projesindeki varsayılan değerlere sahip parametreler
PROJECT_ID Uzantının yüklü olduğu Firebase projesinin benzersiz tanımlayıcısı

Genelleştirilmiş biçim:
project-id

Örnek değer:
project-123

DATABASE_URL Firebase projesinin varsayılan Realtime Database örneği URL'si

Genelleştirilmiş biçim:
https://project-id-default-rtdb.firebaseio.com
(ABD örnekleri)
veya
https://project-id-default-rtdb.region-code.firebasedatabase.app
(ABD dışındaki örnekler)

Örnek değer:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Firebase projesinin varsayılan Realtime Database örneği adı

Genellikle bu değer proje kimliğiyle aynıdır veya -default-rtdb ile biter.

Genelleştirilmiş biçim:
project-id

Örnek değer:
project-123

STORAGE_BUCKET Firebase projesinin varsayılan Cloud Storage paket adı

Genelleştirilmiş biçim:
project-id.appspot.com

Örnek değer:
project-123.appspot.com

Uzantı kurulumundan varsayılan değere sahip parametre
EXT_INSTANCE_ID

Yüklü uzantı örneğinin benzersiz tanımlayıcısı

Bu değer, extension.yaml dosyasında belirtilen name alanından oluşturulur.

İlk yüklenen örnek için genelleştirilmiş biçim (Firebase tarafından otomatik olarak atanır; yükleme sırasında kullanıcı tarafından değiştirilemez):
name-from-extension.yaml

Örnek değer:
my-awesome-extension


2. ve sonraki örnekler için genelleştirilmiş biçim (Firebase tarafından otomatik olarak atanır; yükleme sırasında kullanıcı tarafından değiştirilebilir):
name-from-extension.yaml-4-digit-alphanumeric-hash

Örnek değer:
my-awesome-extension-6m31

Kullanıcı tarafından yapılandırılan parametreler

Kullanıcının, yüklü her uzantı örneğini özelleştirmesini sağlamak için kullanıcıdan yükleme sırasında parametre değerlerini belirtmesini isteyebilirsiniz. Bu değerleri istemek için extension.yaml dosyanızın params bölümünde istemleri ayarlarsınız.

Aşağıda bir params bölümü örneği ve ardından mevcut tüm parametre alanlarını açıklayan bir tablo verilmiştir.

# extension.yaml
...

# Parameters (environment variables) for which the user specifies values during installation
params:
  - param: DB_PATH
    label: Realtime Database path
    description: >-
      What is the Realtime Database path where you will write new text
      for sentiment analysis?
    type: string
    validationRegex: ^\S+$
    validationErrorMessage: Realtime Database path cannot contain spaces.
    example: path/to/posts
    required: true

  - param: TEXT_KEY
    label: Key for text
    description: What is the name of the key that will contain text to be analyzed?
    type: string
    default: textToAnalyze
    required: true

extension.yaml dosyanızın params bölümünde, kullanıcı tarafından yapılandırılmış bir parametre tanımlamak için aşağıdaki alanları kullanın:

Alan Tür Açıklama
param
(zorunlu)
dize Parametrenin adı
label
(zorunlu)
dize

Parametrenin kısa açıklaması

Parametrenin değeri istendiğinde kullanıcıya gösterilir

description
(isteğe bağlı)
dize

Parametrenin ayrıntılı açıklaması

Parametrenin değeri istendiğinde kullanıcıya gösterilir

Markdown'u destekler

type
(isteğe bağlı)
dize

Kullanıcının parametrenin değerini nasıl ayarlayacağını belirten giriş mekanizması (ör. doğrudan metin girme veya açılır listeden seçim yapma)

Geçerli değerler şunlardır:

  • string: Serbest biçimli metin girişine izin verir (validationRegex tarafından sınırlandırılmıştır)
  • select: Önceden tanımlanmış bir seçenek listesinden bir girişin seçilmesine olanak tanır. Bu değeri belirtirseniz options alanını da tanımlamanız gerekir.
  • multiSelect: Önceden tanımlanmış bir seçenek listesinden bir veya daha fazla girişin seçilmesine olanak tanır. Bu değeri belirtirseniz options alanını da tanımlamanız gerekir.
  • selectResource: Kullanıcının projesinden belirli bir Firebase kaynağı türünün (ör. Cloud Storage paketi) seçilmesine olanak tanır.

    Bu tür bir parametre belirttiğinizde, kullanıcılar kurulum kullanıcı arayüzünde daha kullanıcı dostu bir seçim widget'ı görür. Bu nedenle, mümkün olduğunda selectResource parametrelerini kullanın.

    Bu değeri belirtirseniz resourceType alanını da tanımlamanız gerekir.

  • secret: Üçüncü taraf hizmetlerinin API anahtarları gibi hassas dizelerin depolanmasına izin verir. Bu değerler Cloud Secret Manager'da depolanır.

    Cloud Secret Manager, ücretli bir hizmettir ve kullanımı, uzantınızı yükleyen kullanıcılardan ücret alınmasına neden olabilir. secret parametre türünü kullanıyorsanız PREINSTALL dosyanızda uzantınızın Cloud Gizli Yöneticisi'ni kullandığını belirtmeyi unutmayın.

Bu alan atlanırsa parametre varsayılan olarak string değerinin type'ü olur.

options
(type parametresi select veya multiSelect ise gereklidir)
list

Kullanıcının seçebileceği değerlerin listesi

options alanına label ve value alanlarını dahil edin:

  • label (dize): Seçilebilir seçeneğin kısa açıklaması
  • value (dize): Seçilebilir seçeneğin gerçek değeri

options alanı için value alanı zorunludur.
label atlanırsa liste seçeneği varsayılan olarak value değerini gösterir.

resourceType
(type parametresi selectResource ise zorunludur)
dize

Kullanıcıdan seçmesini isteyeceğiniz Firebase kaynağı türü. Şu anda yalnızca Cloud Storage paketleri kaynak seçicileri desteklemektedir:

Kaynak türü Tür kimliği
Cloud Storage paket storage.googleapis.com/Bucket

Bilinmeyen resourceType değerleri yoksayılır ve kullanıcı arayüzü parametreyi serbest biçimli string giriş alanı olarak oluşturur.

example
(isteğe bağlı)
dize

Parametre için örnek değer

validationRegex
(isteğe bağlı)
(yalnızca type parametresi string olduğunda geçerlidir)
dize

Parametrenin kullanıcı tarafından yapılandırılmış değerinin doğrulanması için normal ifade dizesi

Normal ifade, go kitaplığı kullanılarak derlenir: RE2

Doğrulama hakkında ayrıntılı bilgi için aşağıdaki Doğrulama ve hata mesajları bölümüne bakın.

validationErrorMessage
(isteğe bağlı)
dize

validationRegex başarısız olursa görüntülenecek hata mesajı

Hata mesajları hakkında ayrıntılı bilgi için aşağıdaki Doğrulama ve hata mesajları bölümüne bakın.

default
(isteğe bağlı)
dize

Kullanıcı parametrenin değerini boş bırakırsa parametre için varsayılan değer

Uygun durumlarda, default değeri için otomatik olarak doldurulan parametre değeri belirtebilirsiniz (örnek olarak, Resimleri Yeniden Boyutlandır uzantısının IMG_BUCKET parametresine bakın).

required
(isteğe bağlı)
boolean

Kullanıcıdan parametrenin değeri istendiğinde kullanıcının boş bir dize gönderip gönderemeyeceğini belirler

required atlanırsa bu değer varsayılan olarak true değerine (yani zorunlu bir parametreye) ayarlanır.

immutable
(isteğe bağlı)
boolean

Kullanıcının, yükleme sonrasında parametrenin değerini değiştirip değiştiremeyeceğini (örneğin, uzantıyı yeniden yapılandırdıysa) tanımlar.

immutable atlanırsa bu değer varsayılan olarak false olur.

Not: Uzantınızın dağıtılan işlevleri için "location" parametresi tanımlarsanız bu immutable alanını param nesnesine eklemeniz gerekir.

Kullanıcı tarafından yapılandırılan değerler için doğrulama ve hata mesajları

string type ile bir parametre oluşturduğunuzda, parametrenin validationRegex alanı aracılığıyla uygun normal ifade doğrulamasını tanımlamanız gerekir.

Ayrıca, birçok uzantı için yaygın olarak istenen parametre değeri bir veritabanı yolu veya Cloud Storage paketidir. Extensions hizmetinin, yükleme, yeniden yapılandırma veya güncelleme sırasında parametre değeri giriş sırasında aşağıdakileri doğrulamadığını unutmayın:

  • Belirtilen veritabanının veya Cloud Storage paketinin kullanıcının Firebase projesinde ayarlanıp ayarlanmadığı
  • Belirtilen veritabanı yolunun kullanıcının veritabanında bulunup bulunmadığı

Ancak uzantı kaynaklarını dağıtırken, projede referans verilen veritabanı veya Cloud Storage paketi henüz ayarlanmamışsa Firebase konsolu ya da Firebase KSA bir hata mesajı gösterir.

Uzantılarınızın başarılı bir şekilde yüklenip beklendiği gibi çalışması için kullanıcıları PREINSTALL dosyasında bu şartlar hakkında bilgilendirmenizi önemle tavsiye ederiz.

Sistem parametreleri

Sistem parametreleri, bir uzantının kaynaklarının temel yapılandırmasını kontrol eder. Kaynak yapılandırmasını kontrol etmeleri gerektiğinden işlev kodunuzdan ortam değişkeni olarak erişilemezler.

Normalde extension.yaml içinde bu parametreler için herhangi bir şey belirtmeniz gerekmez. Bu değerler her uzantı örneği için otomatik olarak tanımlanır ve kullanıcılar uzantınızı yüklerken özel değerler belirleyebilir.

Ancak uzantınızın özel kaynak gereksinimleri varsa extension.yaml içinde kaynak başına belirli değerler ayarlayabilirsiniz. Bu kaynak başına yapılandırma ayarları, kullanıcının uzantı örneği genelindeki ayarlarını geçersiz kılar. Örneğin:

resources:
- name: high_memory_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function needs at least 1GB of memory!
  properties:
    httpsTrigger: {}
    runtime: nodejs18
    availableMemoryMb: 1024
- name: normal_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function has no special memory requirements. It will use the
    default value, or the value of `firebaseextension.v1beta.function/memory`
  properties:
    httpsTrigger: {}
    runtime: nodejs18

Kullanılabilen sistem parametreleri şunlardır:

Ad Etiket (kullanıcı dostu) properties'teki ilgili alan Açıklama
firebaseextensions.v1beta.function/location Konum location Cloud Functions hangi bölgeye dağıtılmalıdır?
firebaseextensions.v1beta.function/memory İşlev belleği memory Her işleve kaç megabayt bellek ayrılmalıdır?
firebaseextensions.v1beta.function/timeoutSeconds İşlev zaman aşımı timeout İşlevler zaman aşımına uğramadan önce kaç saniye çalışmalıdır?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings VPC Bağlayıcısı Çıkışı vpcConnectorEgressSettings Bir VPC bağlayıcısı yapılandırıldığında giden trafiği kontrol eder
firebaseextensions.v1beta.function/vpcConnector VPC Bağlayıcısı vpcConnector Cloud Functions'ı belirtilen VPC bağlayıcısına bağlar.
firebaseextensions.v1beta.function/minInstances Minimum işlev örneği sayısı minInstances Bu işlevin aynı anda çalıştırılması gereken minimum örnek sayısı
firebaseextensions.v1beta.function/maxInstances Maksimum işlev örneği sayısı maxInstances Bu işlevin aynı anda çalıştırılabilecek maksimum örnek sayısı
firebaseextensions.v1beta.function/ingressSettings Giriş Ayarları ingressSettings Gelen trafiğin nereden kabul edileceğini kontrol eder.
firebaseextensions.v1beta.function/labels Etiketler labels Uzantıdaki tüm kaynaklara uygulanacak etiketler