Taşıma işleminden sonraki en iyi uygulamalar

Firebase Extensions'den işlev kitine geçiş yaptıktan sonra, kit örneklerinizi Firebase projenizde standart 2. nesil Cloud Functions olarak yönetirsiniz. Bu kılavuzda, mevcut bir uzantıyı taşımadan doğrudan npm'den yeni işlev kitlerinin nasıl yükleneceği, kit parametrelerinin ve genel seçeneklerin nasıl güncelleneceği, yayıncılar güncellemeleri yayınladıkça npm paket sürümlerinin nasıl yükseltileceği ve gerekirse taşıma işleminin nasıl geri çekileceği açıklanmaktadır.

Taşımadan npm paketinden bir işlev kiti kullanma

Bir uzantıdan geçiş yapmıyorsanız işlev kitini kullanmak iki bölümden oluşur:

Kiti takma

Aşağıdaki CLI komutunu kullanarak işlev kiti yükleyebilirsiniz:

firebase functions:kits:install --package <npm-package-name>

Çözülmüş örnek:

firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project my-project
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? firestore-bigquery-export
i  function-kits/firestore-bigquery-export/source/package.json is unchanged
i  function-kits/firestore-bigquery-export/source/tsconfig.json is unchanged
i  function-kits/firestore-bigquery-export/source/.gitignore is unchanged
i  functions: Running npm install @firebase-function-kits/firestore-bigquery-export@next --save-prefix=^...
i  functions: Building TypeScript source...
✔  Wrote configuration info to firebase.json

i  functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:
✔ Enter a string value for FUNCTION_DEFAULT_REGION:
(Global default region where functions should be deployed. Can be overridden per-function.) us-east1

✔ Enter a string value for BigQuery Project ID:
(Override the default project for BigQuery instance. This can allow updates to be directed to a BigQuery
instance on another GCP project.) my-bigquery-project

✔ Enter a string value for Firestore Instance ID:
(The Firestore database to use. Use "(default)" for the default database. You can view your available
Firestore databases at https://console.cloud.google.com/firestore/databases.) eu-testing

# Omitting many more parameters for brevity

✔  Wrote configuration info to firebase.json
✔  functions: Function kit firestore-bigquery-export successfully installed.

i  functions: At the first deploy, the following functions will be created in your project:
- kit-firestore-bigquery-export-fsexportbigquery
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i  functions: At the first deploy, the following Task Queues will be created in your project:
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i  functions: At the first deploy, the following APIs will be enabled in your project:
- bigquery.googleapis.com
- cloudtasks.googleapis.com
i  functions: At the first deploy, the following roles will be granted to the kit service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
⚠  functions: Please review the changes above. If you do not want them applied to your project, uninstall this kit before running firebase deploy.

Varsayılan genel seçenekleri değiştirme

Kit örneğiniz için global options'ı yapılandırmak üzere function-kits/<your-kit-id>/source/src/index.ts konumundaki index.ts dosyasını değiştirin.

Varsayılanların kitin tüm örneklerinde paylaşılmasını istiyorsanız bunları doğrudan index.ts içinde ayarlayın. Aksi takdirde, index.ts dokümanında belirtilen örnekleri ve talimatları uygulayarak örnek başına ayarlanan parametreler oluşturun.

Kiti dağıtma

İşlev kitinizi dağıtmak için şu komutu çalıştırın:

firebase deploy --only functions:<kit-instance-id>

Çözülmüş örnek:

firebase deploy --only functions:firestore-bigquery-export --project my-project

Çıkış:

=== Deploying to 'my-project'...

i  deploying functions
i  functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i  functions: ensuring required API bigquery.googleapis.com is enabled...
i  functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔  functions: required APIs are enabled
i  functions: granting declarative IAM roles to managed service account:
   - BigQuery Data Editor
   - BigQuery User
   - Cloud Datastore User
   - Eventarc Event Receiver
   - roles/run.invoker
✔  functions: successfully granted IAM roles
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔  functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.

✔  Deploy complete!

Kiti yükleyip dağıtmak aşağıdaki işlemleri gerçekleştirir:

  • function-kits/firestore-bigquery-export/source oluşturur. Bu dosya, kit paketini içe ve dışa aktarırken kit kaynağını içeren temel bir index.ts dosyasının yanı sıra kitin her örneği için farklı bir konum seçmenize olanak tanıyan bir parametre ayarlar.
  • function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.<project-id> oluşturur ve işlev için girilen yapılandırma verileriyle doldurur. Gelecekteki güncellemelerde yeni parametreler eklenirse bir sonraki dağıtımda sizden bu parametreleri eklemeniz istenir.
  • Bu kiti çalıştırmak için gerekli Google Cloud kaynakları oluşturur. Bunlar arasında belirli IAM rollerine sahip bir hizmet hesabı, işlevler, Eventarc tetikleyicileri ve Cloud Tasks kuyrukları yer alır.

Aynı projede kiti birden fazla kez kullanıyorsanız aynı kitin yeni örneklerini oluşturup dağıtmak için bu komutları tekrarlayabilirsiniz. Ayrıca, farklı yapılandırmalara (örneğin, hazırlık projesi ve üretim projesi) sahip birden fazla Firebase projesine tek bir kit örneği dağıtabilirsiniz. Gelişmiş kurulumlar hakkında daha fazla bilgi edinmek için Gelişmiş taşıma işlemleri başlıklı makaleyi inceleyin.

Kitleri kaldırma

Kiti ve tüm örneklerini kaldırmak için şu komutu çalıştırın:

firebase functions:kits:uninstall --kit <kit-id>

Bu işlem, tüm örnekleri ve yapılandırmalarını siler ve kit kaynağını diskten kaldırır.

Kiti yalnızca tek bir örnekten kaldırmak için şu komutu çalıştırın:

firebase functions:kits:uninstall --instance <kit-instance-id>

Kitten yalnızca bir örneğiniz varsa bu işlem, kitin tamamını kaldırır.

Kit yapılandırmasını güncelleme

Yükleme veya ilk dağıtım sırasında, bir yapılandırmayı uzantıdan taşımadıysanız kitinizin tüm parametrelerini yapılandırmanız istenir. Bu parametreler, kit örneğinizin yapılandırma dizinindeki .env dosyasında saklanır. Örneğin, my-project projesinde firestore-bigquery-export adlı bir kit örneğiniz varsa .env dosyası function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project konumundadır.

Şu şekilde görünür:

DATASET_LOCATION=us
BIGQUERY_PROJECT_ID=my-project
DATABASE=eu-testing
DATABASE_REGION=eur3
COLLECTION_PATH=posts
WILDCARD_IDS=false
DATASET_ID=firestore_export
TABLE_ID=posts
TABLE_PARTITIONING=NONE
TIME_PARTITIONING_FIELD=
TIME_PARTITIONING_FIRESTORE_FIELD=
TIME_PARTITIONING_FIELD_TYPE=omit
CLUSTERING=
MAX_DISPATCHES_PER_SECOND=100
VIEW_TYPE=view
MAX_STALENESS=
REFRESH_INTERVAL_MINUTES=
BACKUP_COLLECTION=
TRANSFORM_FUNCTION=
USE_NEW_SNAPSHOT_QUERY_SYNTAX=no
EXCLUDE_OLD_DATA=no
KMS_KEY_NAME=
MAX_ENQUEUE_ATTEMPTS=3
LOG_LEVEL=info
FUNCTION_DEFAULT_REGION=us-west1

Değiştirmek istediğiniz yapılandırma değerini biliyorsanız doğrudan .env dosyasında düzenleyebilirsiniz. Yükleme ve dağıtım sırasında çalışan etkileşimli istemi kullanmayı tercih ederseniz değiştirmek istediğiniz parametreleri .env dosyasından kaldırın ve kiti yeniden dağıtın. Dağıtım sırasında bu parametreleri girmeniz istenir.

Örneğin, COLLECTION_PATH=posts satırını silip dağıtım yaparsanız dağıtım sırasında bu satır için istem alırsınız:

i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export-d9cd/.env.ajp-testing
Prompting for parameters for codebase firestore-bigquery-export:

Collection path: What is the path of the collection that you would like to export? You may use {wildcard} notation to match a subcollection of all documents in a collection (for example: chatrooms/{chatid}/posts). Parent Firestore Document IDs from {wildcards} can be returned in path_params as a JSON formatted string.
? Enter a string value for Collection path: (posts)

İşlev kitinin bakımı ve yükseltilmesi

Yayıncılar, hataları düzeltmek, özellik eklemek, bağımlılıkları güncellemek veya güvenlik açıklarını gidermek için npm paketlerini zaman içinde güncelleyebilir. Bu sürümlerle ilgili güncel bilgileri takip etmenizi ve güncellemeleri (özellikle güvenlik açıklarını gideren güncellemeleri) yüklemenizi öneririz.

functions:kits:install komutu, kiti bir npm paketi olarak yükleyen ve tüm işlevlerini kitinizin her örneği için dışa aktaran bir kod tabanı oluşturur. Bir kiti yükseltmek için paket sürümünü güncelleyin ve ardından değişiklikleri uygulamak üzere kitinizin her örneğini yeniden dağıtın.

Bir kitte güncelleme olup olmadığını belirleme

source adresindeki kitinizin function-kits/<your-kit-id>/source dizinine gidin. Bu source dizininden, işlev kitiniz ve Cloud Functions SDK'sı dahil olmak üzere tüm güncel olmayan npm paketleriyle ilgili bir rapor almak için aşağıdaki komutu çalıştırın:

npm outdated

Güncellenmesi gereken bağımlılıkları belirlemek için zaten bir araç (ör. GitHub için Dependabot) kullanıyorsanız kit dizininizi bu iş akışına entegre etmenizi öneririz.

Kiti güncelleme

Kiti ve bağımlılıklarını, uyumluluğu bozmayan en yeni sürüme güncellemek için (uyumluluğu bozabilecek değişiklikler içeren ana sürüm güncellemeleri hariç) şu komutu çalıştırın:

npm update --save

Yalnızca işlev kiti paketini güncellemek ve başka paketleri güncellemek istemiyorsanız paket adını npm update'ya iletin:

npm update <package-name> --save

Bir paketi en son ana sürüme (bu sürümde, uyumluluğu bozan değişiklikler olabilir) yükseltmek için şu komutu çalıştırın:

npm update --save <npm-package-name>@latest

Nelerin değiştiğini ve dağıtımdan önce veya sonra ek adım atmanız gerekip gerekmediğini görmek için paket dokümanlarını ve sürüm notlarını inceleyin. Bu sayede, değişikliklerin bozulmasını önleyebilirsiniz.

Güncellenen örnekleri dağıtma

npm update komutunu çalıştırmak yalnızca yerel kaynak kodunuzu günceller. Buluttaki çalışan işlevlerinizi güncellemek için bunları yeniden dağıtın. Aşağıdaki komutu çalıştırarak proje genelindeki tüm işlevleri (işlev kitleri dahil) yeniden dağıtabilirsiniz:

firebase deploy --only functions

Taşıma işlemini geri alma

Taşıma işlemini geri almak için önce uzantıyı yeniden yükleyin. Kurulum sırasında gereken yapılandırma değerlerini bulmak için kitin .env dosyasını kullanabilirsiniz.

Uzantı dağıtıldıktan sonra kit örneğini kaldırın (bu, kalan son örnekse tüm kiti kaldırır):

firebase functions:kits:uninstall --instance <kit-instance-id> --project <project-id>

Gelecekteki bir taşıma işlemi için uzantı yapılandırmalarını kaydetme

31 Mart 2027'den sonra mevcut uzantı yapılandırmasını getiremezsiniz. 31 Mart 2027'den önce geçiş yapamıyorsanız bu tarihten sonra geçiş yapmaya karar vermeniz ihtimaline karşı uzantınızı kaydetmenizi önemle tavsiye ederiz.

  1. Uzantı örneği kimliklerinizin listesini alma:

    Firebase projenizdeki tüm uzantı örneklerinin listesini almak için ext:list CLI komutunu kullanabilirsiniz:

    firebase ext:list --project <project-id>
    

    Çözülmüş örnek:

    firebase ext:list --project my-project
    
    » firebaselocal ext:list
    i  extensions: ensuring required API firebaseextensions.googleapis.com is enabled...
    i  extensions: list of extensions installed in ajp-testing:
    ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐
    │ Extension                          │ Publisher │ Instance ID                    │ State  │ Version │ Your last update    │ Replacement Kit                                   │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/firestore-bigquery-export │ firebase  │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.3   │ 2026-09-06 22:31:04 │ @firebase-function-kits/firestore-bigquery-export │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/firestore-bigquery-export │ firebase  │ firestore-bigquery-export      │ ACTIVE │ 0.3.2   │ 2026-06-03 17:41:24 │ @firebase-function-kits/firestore-bigquery-export │
    └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘
    ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
    

    ext:list komutunun JSON çıkış biçimi de vardır ve jq yardımcı programı yüklüyse bir projenin tüm örnek kimliklerinin listesini almak için bu yardımcı programı kullanabilirsiniz:

    firebase ext:list --json --project <project-id> | jq -r '.result[].instanceId'
    

    Çözülmüş örnek:

    firebase ext:list --json --project my-project | jq -r '.result[].instanceId'
    

    Çıkış:

    firestore-bigquery-export-zbrp
    firestore-bigquery-export
    
  2. Her örnek için yapılandırmayı dışa aktarın:

    Her örnek için aşağıdaki dışa aktarma komutunu çalıştırarak yapılandırmasını diske kaydedebilirsiniz:

    firebase ext:export --mode functions --project <project-id> --instance <your-instance-id>
    

    Çözülmüş örnek:

    firebase ext:export --mode functions --project my-project --instance firestore-bigquery-export
    

    Çıkış:

    i  extensions: ensuring required API firebaseextensions.googleapis.com is enabled...
    i  functions: Saving exported extensions config as a Function Kits .env file
    i  functions: Created new local file firestore-bigquery-export/.env.testing to store param values. We suggest explicitly adding or excluding this file from version control.
    i  functions: Loaded environment variables from firestore-bigquery-export/.env.testing
    i  functions: Loaded environment variables from firestore-bigquery-export/.env.testing
    i  functions: Writing new parameter values to disk: firestore-bigquery-export/.env.testing
    

    Diskte, bu uzantı örneğinin dışa aktarılmış halini <instance-id>/.env.<project-id> gibi bir konumda bulabilirsiniz. Bu örnekte, dosya firestore-bigquery-export/.env.my-project konumundadır.

    Bu işlemi her örnek için bir kez tekrarlayabilirsiniz. Bu işlem, daha sonra taşıma sırasında yeniden kullanılabilecek tüm uzantı örneği yapılandırmalarınızı içeren bir dizi .env dosya oluşturur.

  3. Dışa aktarılan .env dosyalarını daha iyi bir konuma taşıyın:

    Uzantılarınızdan dışa aktarılan .env dosyaları doğrudan Firebase projenize yerleştirildi ancak işlev kitlerine geçmediyseniz günlük olarak kullanmanız gerekmez. Bu öğeleri, gelecekte kullanmanız gerekene veya silmeyi seçene kadar projenizden uygun herhangi bir depolama konumuna taşıyabilirsiniz.