Firebase CLI, Firebase ürünlerini ve hizmetlerini komut satırından yönetip yapılandırmanıza olanak tanıyan bir araçtır.
CLI, çeşitli Data Connect görevleri gerçekleştirmek için kullanılabilecek komutlar sağlar. Örneğin, yeni bir Data Connect proje oluşturma, karşılık gelen yerel çalışma dizinini başlatma, Data Connect emülatörünü ayarlama, Data Connect kaynaklarını listeleme, istemci SDK'ları oluşturma gibi.
Kurulum komutları
Data Connect uygulamasını bir Firebase projesine ekleme
firebase init
Yeni bir yerel proje yapılandırması oluşturmak için firebase init
kullanın. Bu iş akışı, dizininizde Firebase yapılandırma dosyaları oluşturur veya günceller.
firebase init
firebase init
akışı, hizmet ve veritabanı oluşturma, isteğe bağlı olarak Data Connect emülatörünü yükleme ve oluşturulan SDK'ları yapılandırma konusunda size yol gösterir.
Hizmet ve veritabanı kurulumu
Ürün kurulumu için dataconnect
seçeneğini belirlerseniz CLI, yeni bir hizmet adı ve konumu ile mevcut bir Cloud SQL for PostgreSQL örneğini bağlayıp bağlamayacağınızı veya yeni bir örnek oluşturup oluşturmayacağınızı sorar.
Mevcut bir örnek bağlanırsa CLI, IAM kimlik doğrulaması ve herkese açık IP adresleri gibi uyumlu ayarları kontrol eder.
Local Emulator Suite kurulumu
CLI akışı, Data Connect emülatörü de dahil olmak üzere emülatörleri ayarlamayı teklif eder.
Data Connect emülatör komutları
Data Connect emülatörünü başlatın.
emulators:start/exec
firebase emulators:start/exec
Local Emulator Suite sürümünü start
ile etkileşimli modda veya exec
ile komut dosyası odaklı, etkileşimli olmayan modda kullanın.Data Connect
Yerel PostgreSQL verilerini dışa ve içe aktarma
Yerel prototip oluşturma, test etme ve sürekli entegrasyonu desteklemek için yerel veritabanı örneğinde depolanan verileri dışa aktarabilir, geliştirme yinelemeleri ve test çalıştırmaları arasında içe aktarabilirsiniz.
Dışa aktarılan veriler, yerel PostgreSQL veritabanınızın anlık görüntüleri olarak saklanır.
Data Connect, dışa/içe aktarma için üç yaklaşım sunar:
firebase.json
içinde, emülatör kapatıldığında ve başlatıldığında anlık görüntü yedekleri sağlamak için otomatik dışa/içe aktarma yapılandırılır.- KSA'yı kullanarak manuel olarak dışa/içe aktarma
- VS Code uzantı arayüzünü kullanarak manuel dışa/içe aktarma
firebase.json
hesabınızda yapılandırılan otomatik dışa ve içe aktarma
Geliştirme oturumları arasında verileri yedeklemek için firebase init
dizisi sırasında otomatik yedekleme konumu belirtin. Bu konum, firebase.json
alanındaki emulators.dataconnect.dataDir
bölümüne kaydedilir. Yaptığınız tüm veri değişiklikleri, emülatör çalıştırmaları arasında otomatik olarak buraya kaydedilir. Bu nedenle, yerel test ve keşif sırasında kullanışlıdır.
Manuel dışa aktarma: emulators:export
ve emulators:start/exec --import
Data Connect emülatörü çalışırken ayrı bir terminalde firebase emulators:export
komutunu çalıştırarak verilerinizin anlık görüntüsünü kaydedin.
Ardından, --import
işaretini kullanarak emülatörü bu anlık görüntüden başlatabilirsiniz.
# Export data from local emulator from a separate terminal
firebase emulators:export --only dataconnect <export_directory>
# Import data from local directory, here using emulators:exec
firebase emulators:exec ./<your-test-script>.sh --only dataconnect --import <import_directory>
Manuel dışa/içe aktarma: VS Code uzantısı
VS Code uzantısı kullanıcı arayüzünde, emülatör çalışırken Emülatör verilerini dışa aktar düğmesini kullanarak verileri dışa aktarın. Bu işlem, mevcut veritabanı içeriklerini dışa aktarır. Varsayılan dışa aktarma konumu, proje dizininizin kökündeki exportedData
dizinidir.
Bu verileri, önceki bölümde açıklandığı gibi KSA'yı kullanarak içe aktarabilirsiniz. Ayrıca, VS Code üzerinden emülatörü başlatmadan önce Configure emulator (Emülatörü yapılandır) bağlantısını tıklayıp Import Path (İçe aktarma yolu) ayarını yaparak bu verileri içe aktarabilirsiniz.
Şema ve bağlayıcı yönetimi komutları
Bu bölümde, şemaları ve bağlayıcıları yönetmek için kullandığınız komutlarla ilgili KSA referans bilgileri yer almaktadır.
Bu komutlarla ilgili kullanım alanları ve önerilen uygulamalar için şema ve bağlayıcı yönetimi kılavuzuna bakın.
Şemaları ve bağlayıcıları dağıtma
deploy
firebase deploy
Bu komut, firebase.json dosyasında dizine eklenen Data Connect hizmetleri için kaynakları dağıtır. Gerekirse şema taşıma ve bağlayıcı güncelleme işlemleri yapılır.
Command | Açıklama | |
---|---|---|
firebase deploy |
İşaret | Açıklama |
--only dataconnect |
Bu proje için tüm Veri Bağlantısı hizmetlerinin şemalarını ve bağlayıcılarını dağıtın ancak diğer Firebase ürün kaynaklarını dağıtmayın. | |
--only dataconnect:serviceId |
Belirtilen Data Connect hizmeti için şemayı ve bağlayıcıları dağıtın. | |
--only dataconnect:serviceId:connectorId |
Belirtilen Data Connect hizmeti için tek bir bağlayıcı dağıtın. | |
--only dataconnect:serviceId:schema |
Belirtilen Data Connect hizmeti için şemayı dağıtın. |
–-only
işaretleriyle, istediğiniz kaynakların herhangi bir alt kümesini dağıtmak için virgülle ayrılmış değerler iletebilirsiniz.
firebase deploy --only dataconnect:service1:schema,dataconnect:service2
Data Connect hizmetlerini, şemalarını ve bağlayıcılarını listeleme
dataconnect:services:list
firebase dataconnect:services:list
Bu komut, bir projede dağıtılan hizmetler, şemalar ve bağlayıcılar hakkında temel bilgileri yazdırır.
SQL şemalarını karşılaştırma ve taşıma
firebase deploy
komutunu çalıştırdığınızda KSA, güncellemeleri dağıtmadan önce bir SQL şeması karşılaştırması yapar. Karşılaştırmayı yapıp güncellemeyi doğrudan bir dizi dataconnect:sql
komutla da gerçekleştirebilirsiniz.
dataconnect:sql:diff
firebase dataconnect:sql:diff
Bu komut, bir hizmetin yerel şemasını ilgili Cloud SQL veritabanının mevcut şemasıyla karşılaştırır. Veritabanını yeni şemanıza taşımak için çalıştırılacak komutları yazdırır.
Command | Açıklama | |
---|---|---|
firebase dataconnect:sql:diff |
İşaret/Parametre | Açıklama |
serviceId |
Hizmeti belirtin. Atlanırsa firebase.json dosyasındaki tüm hizmetlerin farkını yazdırır. |
dataconnect:sql:migrate
firebase dataconnect:sql:migrate
Bu komut, yerel şema değişikliklerini bir hizmetin Cloud SQL veritabanına uygular.
Yeni bir yerel Data Connect projesi oluşturduğunuzda, varsayılan dataconnect.yaml
dosyasıyla birlikte dataconnect:sql:migrate
komutunun davranışı, gerekli değişiklikler için ve ardından değişiklikleri yürütmeden önce isteğe bağlı değişiklikler için sizden bilgi istemektir. Şemayı katı veya uyumlu modda taşıma başlıklı makalede açıklandığı gibi, dataconnect.yaml
yapılandırmanızı güncelleyerek bu davranışı her zaman isteğe bağlı değişiklikleri içerecek veya yoksayacak şekilde değiştirebilirsiniz.
CLI, etkileşimli ortamlarda her taşıma SQL ifadesini (ve bunun yıkıcı olup olmadığını) gösterir ve uygulamak istediğiniz değişiklikleri ister.
--force
işaretini iletmek, tüm istemleri kabul etmeye eşdeğerdir.
Etkileşimli olmayan ortamlarda:
--force
olmadan yalnızca tahrip edici olmayan değişiklikler yapılır. Yıkıcı değişiklikler varsa CLI, değişiklik yapılmadan işlemi durdurur.--force
ile tüm değişiklikler yapılır. Bu, yıkıcı değişiklikleri içeriyorsa--force
işareti sağlanmadığı sürece bu değişiklikler yazdırılır ve devam etmek isteyip istemediğiniz sorulur.
Command | Açıklama | |
---|---|---|
firebase dataconnect:sql:migrate |
İşaret | Açıklama |
serviceId |
Belirtilen hizmet için veritabanını taşıyın. Projenizde yalnızca bir hizmet varsa serviceId çıkarılır. | |
--force |
İstemleri otomatik olarak kabul etme |
Diğer --only
işaretlerinde olduğu gibi, virgülle ayrılmış birden fazla hizmet sağlayabilirsiniz.
Şemayı katı veya uyumlu modda taşıma
Data Connect şema taşımalarında iki farklı şema doğrulama modu vardır: strict (katı) ve compatible (uyumlu). Katı mod doğrulama, uygulama şemasının dağıtılabilmesi için veritabanı şemasının uygulama şemasıyla tam olarak eşleşmesini gerektirir. Uyumlu mod doğrulamasında, veritabanı şemasının uygulama şemasıyla uyumlu olması gerekir. Bu, veritabanınızdaki uygulama şemanız tarafından kullanılmayan öğelerin değiştirilmeden bırakılması anlamına gelir.
Şema doğrulama modları ve şema taşıma ile ilgili en iyi uygulamalar Şema ve bağlayıcı yönetimi kılavuzu'nda açıklanmıştır.
Doğrulama modu, dataconnect.yaml
dosyanızdaki schemaValidation
anahtarı kullanılarak tanımlanır. schemaValidation
belirtilmemişse CLI, uyumlu değişiklikleri uygular ve katı değişiklikleri yürütmeden önce size sorar. Yapılandırma referansı bölümüne bakın.
Bağlayıcılarda yapılan değişiklikleri yönetme
firebase deploy
komutunu çalıştırdığınızda KSA, geçerli bağlayıcıların güncellenmesini başlatır. CLI, her bağlayıcıdaki değişiklikleri analiz eder ve istemci kodunun önceki sürümlerinde beklenmedik davranışlara (uyarı düzeyinde mesajlar) veya bozulmalara (bozulma düzeyinde mesajlar) neden olabilecek bağlayıcı değişiklikleriyle ilgili bir dizi değerlendirme mesajı yayınlar.
Etki değerlendirmesi | Senaryo |
---|---|
Uyarı seviyesi (kablolu uyumlu, davranışı değiştirebilir) |
|
Bozucu düzey (kablolar uyumsuz, istemcileri bozabilir) |
|
Bozulma düzeyinde (kablo uyumsuz, istemciler bozulacak) |
|
CLI, etkileşimli ortamlarda her bağlayıcı değerlendirmesini gösterir ve uygulamak istediğiniz değişiklikleri ister. --force
işaretini iletmek, tüm değerlendirmeleri kabul etmeye eşdeğerdir.
Etkileşimli olmayan ortamlarda:
- Yalnızca uyarı düzeyinde değerlendirmeler (olası davranış değişiklikleri) gerçekleşirse tüm bağlayıcılar dağıtılır ve uyarılar terminale kaydedilir.
- Herhangi bir kesme düzeyinde değerlendirme gerçekleşirse bağlayıcılar dağıtılmaz ve uyarılar terminale kaydedilir.
--force
işaretiyle geçersiz kılabilirsiniz.
Denetim yetkilendirme kodu
Data Connect, Firebase CLI'dan firebase deploy
kullanarak sunucuya dağıtım yaptığınızda bağlayıcı kodunuzu analiz ederek yetkilendirme stratejinizi denetlemenize yardımcı olur. Kod tabanınızı incelemek için bu denetimden yararlanabilirsiniz.
Bağlayıcılarınızı dağıttığınızda KSA, bağlayıcınızdaki mevcut, değiştirilmiş ve yeni işlem kodu için değerlendirmeler oluşturur.
Değiştirilen ve yeni işlemler için CLI, yeni işlemlerinizde belirli erişim düzeylerini kullandığınızda veya mevcut işlemleri bu erişim düzeylerini kullanacak şekilde değiştirdiğinizde uyarılar yayınlar ve onayınızı ister.
Uyarılar ve istemler her zaman şu durumlarda gösterilir:
PUBLIC
Ayrıca, auth.uid
kullanarak filtrelerle artırmadığınızda aşağıdaki erişim düzeylerinde uyarılar ve istemler gösterilir:
USER
USER_ANON
USER_EMAIL_VERIFIED
Yetkilendirme hakkında daha fazla bilgi için yetkilendirme ve onay kılavuzuna bakın.
SDK komutları
SDK oluşturma
dataconnect:sdk:generate
firebase dataconnect:sdk:generate
Bu komut, connector.yaml dosyasında belirtilen türü belirlenmiş SDK'ları oluşturur.
Ayrıca web SDK'ları, Android SDK'ları ve iOS SDK'ları ile çalışma kılavuzlarına da göz atın.
Command | Açıklama | |
---|---|---|
firebase dataconnect:sdk:generate |
İşaret | Açıklama |
–-watch |
İşlemin devam etmesini sağlar ve şemanızda ve bağlayıcı GQL dosyalarınızda değişiklikleri her kaydettiğinizde yeni SDK'lar oluşturur. Oluşturma işlemi başarısız olursa hatalar stdout'a yazdırılır, oluşturulan kod değiştirilmez ve komut çalışmaya devam eder. |
|
--only connectorId:platform |
Yalnızca tek bir platform ve tek bir bağlayıcı için SDK oluşturun. |
–only
işaretleriyle virgülle ayrılmış değerler iletebilirsiniz.
firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin
Cloud SQL yönetim komutları
Cloud SQL için SQL rolleri verme
Data Connect, Cloud SQL'de barındırılan kendi PostgreSQL örneğinizin üzerinde çalışır. SQL rolü komutları, veritabanı tablolarınızdaki izinleri yönetmenize yardımcı olur.
dataconnect:sql:setup
firebase dataconnect:sql:setup
Bu komut, veritabanınızdaki tablolara ilk ve genel izinleri yapılandırır.
Varsayılan veritabanı sağlama ve yönetim akışı, projenizin yeni (yeşil alan) bir veritabanı kullandığını varsayar. firebase deploy
komutunu çağırdığınızda Data Connect, yapılacak veritabanı şeması değişikliklerini gösterir ve onayınızdan sonra tüm taşımaları gerçekleştirir. Tercih ettiğiniz akış buysa dataconnect:sql:setup
, superuser
şema sahiplikleri de dahil olmak üzere izin vermenizi ister.
Mevcut (brownfield) veritabanları için şemaları taşıma konusunda kendi iş akışınız olabilir ve şema sahipliğini kendiniz korumak isteyebilirsiniz. Bu akışı tercih ediyorsanız dataconnect:sql:setup
Data Connect'ın SQL taşıma işlemlerini sizin için yapıp yapmamasıyla ilgili istemde reddet'i seçtiğinizden emin olun.
Reddetme sonucunda Data Connect, yalnızca read
ve write
veritabanı tablolarınıza erişebilir. Ancak şema sahipliği ve taşıma işlemleri sizin sorumluluğunuzda kalır.
Daha fazla tartışma ve kullanım alanı için Hizmetleri ve veritabanlarını yönetme başlıklı makaleye bakın.
dataconnect:sql:grant
firebase dataconnect:sql:grant
Bazı durumlarda, Data Connect uygulamalarınız tarafından oluşturulan verileri sorgulamak veya güncellemek için doğrudan veritabanınıza erişmek isteyebilirsiniz. Bunu yapmak için bu bölümde tanımlanan rollerden birini gerekli kullanıcıya veya hizmet hesabına vermeniz gerekir.
Verilen rollerle ilgili ayrıntılar için PostgreSQL kullanıcı rolleri başlıklı makaleyi inceleyin.
Rol | SQL Rolü | İzinler | Kullanım | Verilebilir |
---|---|---|---|---|
okuyucu | firebasereader_<db_name>_<schema_name> |
Veritabanına salt okuma erişimi. Belirtilen şemadaki tüm tablolarda SELECT işlemlerini gerçekleştirebilir. |
Veri alımı gerektiren ancak değiştirme gerektirmeyen kullanıcılar veya hizmetler için idealdir. | Evet |
yazıcı | firebasewriter_<db_name>_<schema_name> |
Veritabanına okuma ve yazma erişimi. Şemadaki tüm tablolarda SELECT , INSERT , UPDATE , DELETE ve TRUNCATE işlemlerini gerçekleştirebilir. |
Veritabanındaki verileri değiştirmesi gereken kullanıcılar veya hizmetler için uygundur. | Evet |
sahibi | firebaseowner_<db_name>_<schema_name> |
Şema sahibi. Şemadaki tüm tablolarda ve dizilerde tüm ayrıcalıklara sahiptir. |
Bu rol, IAM roles/cloudsql.client rolüyle birlikte veritabanında taşıma işlemi gerçekleştirme izni verir. Örneğin, firebase dataconnect:sql:migrate numarası arandığında. |
Evet |
süper kullanıcı | cloudsqlsuperuser |
Veritabanında tam ayrıcalıklara sahip yerleşik süper kullanıcı rolü. Sahip izinlerine ek olarak şemalar oluşturabilir, şemaları bırakabilir, uzantıları yükleyebilir ve diğer tüm yönetim görevlerini gerçekleştirebilir. "firebasesuperuser" olarak oturum açılarak CLI'da erişilir. |
Uzantı yüklemek, ilk şemayı oluşturmak ve diğer kullanıcılara verilebilen SQL rollerini vermek için gereklidir. Yönetici olmayan bir kullanıcının süper kullanıcı ayrıcalıklarına ihtiyacı varsa taşıma işlemi başarısız olur ve kullanıcıdan, ayrıcalıklı SQL komutlarını çalıştırması için veritabanı yöneticisinden (ör. roles/cloudsql.admin rolüne sahip bir kullanıcı) izin alması istenir. |
roles/cloudsql.admin olan kullanıcılara verilir ve doğrudan Firebase CLI'dan verilemez. |
Command | Açıklama | |
---|---|---|
firebase dataconnect:sql:grant |
İşaret/Parametre | Açıklama |
-R, --role role |
Verilecek SQL rolü (sahip, yazıcı veya okuyucu). | |
-E, --email e-posta_adresi |
Role erişim izni verilecek kullanıcı veya hizmet hesabının e-posta adresi. |
Genel seçenekler
Aşağıdaki genel seçenekler tüm komutlar için geçerlidir:
--json
, diğer araçlar tarafından ayrıştırılmak üzere CLI çıkışını JSON'a dönüştürür.--noninteractive
ve--interactive
, TTY olmayan ortamların otomatik olarak algılanmasını gerektiği şekilde geçersiz kılar.