CLI Firebase adalah alat yang memungkinkan Anda mengelola dan mengonfigurasi produk dan layanan Firebase dari command line.
CLI menyediakan perintah yang dapat digunakan untuk melakukan berbagai tugas Data Connect, seperti membuat project Data Connect baru, menginisialisasi direktori kerja lokal yang sesuai, menyiapkan emulator Data Connect, mencantumkan resource Data Connect, membuat SDK klien, dan lainnya.
Perintah penyiapan
Menambahkan Data Connect ke project Firebase
firebase init
Gunakan firebase init
untuk menyiapkan konfigurasi project lokal baru. Alur kerja ini
membuat atau mengupdate file konfigurasi Firebase di
direktori Anda.
firebase init
Alur firebase init
memandu Anda menyiapkan layanan dan database,
serta secara opsional menginstal emulator Data Connect dan
mengonfigurasi SDK yang dihasilkan.
Penyiapan layanan dan database
Jika Anda memilih dataconnect
untuk penyiapan produk, CLI akan meminta Anda memasukkan nama dan lokasi layanan baru, serta apakah akan menautkan instance Cloud SQL for PostgreSQL yang ada atau membuat instance baru.
Jika instance yang ada ditautkan, CLI akan memeriksa setelan yang kompatibel, seperti autentikasi IAM dan alamat IP publik.
Penyiapan Local Emulator Suite
Alur CLI menawarkan penyiapan emulator, termasuk emulator Data Connect.
Perintah emulator Data Connect
Mulai emulator Data Connect
emulators:start/exec
firebase emulators:start/exec
Gunakan emulator Data Connect versi Local Emulator Suite
dalam mode interaktif dengan start
atau mode non-interaktif yang didorong skrip dengan
exec
.
Mengekspor dan mengimpor data PostgreSQL lokal
Untuk mendukung pembuatan prototipe dan pengujian lokal, serta integrasi berkelanjutan, Anda dapat mengekspor data yang disimpan dalam instance database lokal dan mengimpornya di antara iterasi pengembangan dan pengujian.
Ekspor disimpan sebagai snapshot database PostgreSQL lokal Anda.
Data Connect menawarkan tiga pendekatan untuk mengekspor/mengimpor:
- Ekspor/impor otomatis yang dikonfigurasi di
firebase.json
Anda untuk menyediakan cadangan snapshot saat emulator dimatikan dan dimulai - Ekspor/impor manual menggunakan CLI
- Ekspor/impor manual menggunakan antarmuka ekstensi VS Code
Ekspor dan impor otomatis dikonfigurasi di firebase.json
Anda
Untuk mencadangkan data di antara sesi pengembangan, tentukan lokasi pencadangan otomatis selama urutan firebase init
. Lokasi ini disimpan di
firebase.json
Anda di kolom emulators.dataconnect.dataDir
. Setiap perubahan data yang Anda buat akan otomatis disimpan di sini di antara eksekusi emulator, sehingga berguna selama pengujian dan eksplorasi lokal.
Ekspor manual: emulators:export
dan emulators:start/exec --import
Saat emulator Data Connect berjalan, di terminal terpisah,
jalankan perintah firebase emulators:export
untuk menyimpan snapshot data Anda.
Kemudian, Anda dapat memulai emulator dari snapshot tersebut menggunakan flag --import
.
# 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>
Ekspor/impor manual: Ekstensi VS Code
Di UI ekstensi VS Code, saat emulator berjalan, gunakan tombol
Ekspor data emulator untuk mengekspor data guna mengekspor konten
database saat ini. Lokasi ekspor default adalah direktori exportedData
di
root direktori project Anda.
Anda dapat mengimpor data ini menggunakan CLI, seperti yang dijelaskan di bagian sebelumnya. Anda juga dapat mengimpor data ini sebelum memulai emulator melalui VS Code dengan mengklik link Configure emulator dan menyetel Import Path.
Perintah pengelolaan skema dan konektor
Bagian ini berisi informasi referensi CLI untuk perintah yang Anda gunakan untuk mengelola skema dan konektor.
Untuk kasus penggunaan dan praktik yang direkomendasikan terkait perintah ini, lihat panduan pengelolaan skema dan konektor.
Men-deploy skema dan konektor
deploy
firebase deploy
Perintah ini men-deploy resource untuk layanan Data Connect yang diindeks di firebase.json. Migrasi skema dan update konektor dilakukan jika diperlukan.
Perintah | Deskripsi | |
---|---|---|
firebase deploy |
Flag | Deskripsi |
–-only dataconnect |
Deploy skema dan konektor untuk semua layanan Data Connect untuk project ini, tetapi jangan deploy resource produk Firebase lainnya. | |
–-only dataconnect:serviceId |
Deploy skema dan konektor untuk layanan Data Connect yang ditentukan. | |
–-only dataconnect:serviceId:connectorId |
Men-deploy satu konektor untuk layanan Data Connect yang ditentukan. | |
–-only dataconnect:serviceId:schema |
Deploy skema untuk layanan Data Connect yang ditentukan. |
Dengan tanda –-only
, Anda dapat meneruskan nilai yang dipisahkan koma untuk men-deploy subset resource yang Anda inginkan.
firebase deploy --only dataconnect:service1:schema,dataconnect:service2
Mencantumkan layanan, skema, dan konektor Data Connect
dataconnect:services:list
firebase dataconnect:services:list
Perintah ini mencetak info dasar tentang layanan, skema, dan konektor yang di-deploy di project.
Membandingkan dan memigrasikan skema SQL
Saat Anda menjalankan firebase deploy
, CLI akan melakukan perbandingan skema SQL sebelum men-deploy update. Anda juga dapat melakukan perbandingan
dan update secara langsung dengan serangkaian perintah dataconnect:sql
.
dataconnect:sql:diff
firebase dataconnect:sql:diff
Perintah ini membandingkan skema lokal untuk layanan dengan skema saat ini dari database Cloud SQL yang sesuai. Perintah yang akan dijalankan untuk memigrasikan database ke skema baru Anda akan dicetak.
Perintah | Deskripsi | |
---|---|---|
firebase dataconnect:sql:diff |
Tombol/Parameter | Deskripsi |
serviceId |
Tentukan layanan. Jika dihilangkan, cetak perbedaan untuk semua layanan di firebase.json. |
dataconnect:sql:migrate
firebase dataconnect:sql:migrate
Perintah ini menerapkan perubahan skema lokal ke database Cloud SQL layanan.
Saat Anda menyiapkan project Data Connect lokal baru, dengan file dataconnect.yaml
default, perilaku perintah dataconnect:sql:migrate
adalah meminta Anda melakukan perubahan yang diperlukan, lalu meminta perubahan opsional, sebelum menjalankan perubahan. Anda dapat mengubah perilaku ini agar selalu menyertakan atau mengabaikan perubahan opsional dengan memperbarui konfigurasi dataconnect.yaml
, seperti yang dibahas dalam memigrasikan skema dalam mode ketat atau kompatibel
Di lingkungan interaktif, CLI menampilkan setiap pernyataan SQL migrasi
(dan apakah pernyataan tersebut merusak) serta meminta perubahan yang ingin Anda terapkan.
Meneruskan tanda --force
sama dengan menyetujui semua perintah.
Di lingkungan noninteraktif:
- Tanpa
--force
, hanya perubahan non-destruktif yang dilakukan. Jika ada perubahan yang merusak, CLI akan membatalkan tanpa melakukan perubahan. - Dengan
--force
, semua perubahan telah dilakukan. Jika perubahan ini mencakup perubahan yang merusak, perubahan tersebut akan dicetak dan Anda akan ditanya apakah ingin melanjutkan, kecuali jika tanda--force
diberikan.
Perintah | Deskripsi | |
---|---|---|
firebase dataconnect:sql:migrate |
Flag | Deskripsi |
serviceId |
Memigrasikan database untuk layanan yang ditentukan. serviceId disimpulkan jika project Anda hanya memiliki satu layanan. | |
–-force |
Menyetujui perintah secara otomatis. |
Seperti flag --only
lainnya, Anda dapat memberikan beberapa layanan yang dipisahkan dengan koma.
Memigrasikan skema dalam mode ketat atau kompatibel
Migrasi skema Data Connect memiliki dua mode validasi skema yang berbeda: ketat dan kompatibel. Validasi mode ketat mengharuskan skema database sama persis dengan skema aplikasi sebelum skema aplikasi dapat di-deploy. Validasi mode yang kompatibel mengharuskan skema database kompatibel dengan skema aplikasi, yang berarti elemen dalam database yang tidak digunakan oleh skema aplikasi Anda tidak dimodifikasi.
Mode validasi skema dan praktik terbaik untuk migrasi skema ini dibahas dalam panduan pengelolaan skema dan konektor
Mode validasi ditentukan menggunakan kunci schemaValidation
dalam file dataconnect.yaml
. Jika schemaValidation
tidak ditentukan, CLI akan menerapkan perubahan yang kompatibel dan meminta konfirmasi Anda sebelum menjalankan perubahan yang ketat. Lihat
referensi konfigurasi.
Mengelola perubahan pada konektor
Saat Anda menjalankan firebase deploy
, CLI akan memulai update konektor yang berlaku. CLI menganalisis perubahan pada setiap konektor dan mengeluarkan serangkaian pesan penilaian terkait perubahan konektor yang dapat menyebabkan perilaku yang tidak terduga (pesan berada di tingkat peringatan) atau kerusakan (pesan berada di tingkat kerusakan) dalam versi kode klien sebelumnya.
Penilaian dampak | Skenario |
---|---|
Tingkat peringatan (kompatibel dengan kabel, dapat mengubah perilaku) |
|
Perubahan tingkat berat (kabel tidak kompatibel, dapat merusak klien) |
|
Tingkat kerusakan (kabel tidak kompatibel, akan merusak klien) |
|
Di lingkungan interaktif, CLI menampilkan setiap penilaian konektor dan
meminta perubahan yang ingin Anda terapkan. Meneruskan tanda --force
sama dengan
menyetujui semua penilaian.
Di lingkungan noninteraktif:
- Jika hanya terjadi penilaian tingkat peringatan (kemungkinan perubahan perilaku), semua konektor akan di-deploy dan peringatan akan dicatat ke terminal.
- Jika ada penilaian tingkat kerusakan, tidak ada konektor yang akan di-deploy
dan peringatan akan dicatat ke terminal. Anda dapat mengganti dengan tanda
--force
.
Kode otorisasi audit
Data Connect membantu Anda mengaudit strategi otorisasi dengan menganalisis kode konektor saat Anda men-deploy ke server menggunakan firebase deploy
dari Firebase CLI. Anda dapat menggunakan audit ini untuk membantu meninjau codebase.
Saat Anda men-deploy konektor, CLI akan menampilkan penilaian untuk kode operasi yang ada, diubah, dan baru di konektor Anda.
Untuk operasi yang diubah dan baru, CLI akan mengeluarkan peringatan dan meminta konfirmasi saat Anda menggunakan tingkat akses tertentu dalam operasi baru, atau saat Anda mengubah operasi yang ada untuk menggunakan tingkat akses tersebut.
Peringatan dan perintah selalu muncul untuk:
PUBLIC
Selain itu, peringatan dan perintah muncul di tingkat akses berikut saat Anda
tidak menambahkannya dengan filter menggunakan auth.uid
:
USER
USER_ANON
USER_EMAIL_VERIFIED
Untuk mengetahui informasi selengkapnya tentang otorisasi, lihat panduan otorisasi dan pengesahan.
Perintah SDK
Membuat SDK
dataconnect:sdk:generate
firebase dataconnect:sdk:generate
Perintah ini menghasilkan SDK berjenis yang dideklarasikan di connector.yaml.
Lihat juga panduan untuk menggunakan SDK web, SDK Android, dan SDK iOS.
Perintah | Deskripsi | |
---|---|---|
firebase dataconnect:sdk:generate |
Flag | Deskripsi |
–-tonton |
Membuat proses tetap berjalan dan menghasilkan SDK baru setiap kali Anda menyimpan perubahan pada file GQL skema dan konektor. Jika pembuatan gagal, error akan dicetak ke stdout, kode yang dihasilkan tidak akan diubah, dan perintah akan terus berjalan. |
|
–-only connectorId:platform |
Hanya buat SDK untuk satu platform dan satu konektor. |
Dengan tanda –only
, Anda dapat meneruskan nilai yang dipisahkan koma.
firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin
Perintah pengelolaan Cloud SQL
Memberikan peran SQL untuk Cloud SQL
Data Connect beroperasi di atas instance PostgreSQL Anda sendiri yang dihosting di Cloud SQL. Perintah peran SQL membantu Anda mengelola izin pada tabel database.
dataconnect:sql:setup
firebase dataconnect:sql:setup
Perintah ini mengonfigurasi izin global awal ke tabel di database Anda.
Alur penyediaan dan pengelolaan database default mengasumsikan bahwa project Anda menggunakan database baru (greenfield), dan saat Anda memanggil firebase deploy
, Data Connect akan menampilkan perubahan skema database yang akan dilakukan dan melakukan migrasi apa pun setelah Anda menyetujui. Jika ini adalah alur yang Anda inginkan,
dataconnect:sql:setup
akan meminta Anda untuk memberikan izin, termasuk kepemilikan skema superuser
.
Untuk database yang sudah ada (brownfield), Anda mungkin memiliki alur kerja sendiri untuk memigrasikan skema dan ingin mempertahankan kepemilikan skema sendiri. Jika ini adalah alur yang Anda inginkan, pastikan untuk menolak di perintah dataconnect:sql:setup
apakah Data Connect harus menangani migrasi SQL untuk Anda.
Sebagai akibat dari penolakan, Data Connect hanya akan mengambil akses read
dan
write
ke tabel database Anda, tetapi kepemilikan dan migrasi skema
akan tetap menjadi tanggung jawab Anda.
Untuk mengetahui pembahasan dan kasus penggunaan selengkapnya, lihat Mengelola layanan dan database.
dataconnect:sql:grant
firebase dataconnect:sql:grant
Dalam beberapa kasus, Anda mungkin ingin mengakses database secara langsung untuk membuat kueri atau memperbarui data yang dihasilkan oleh aplikasi Data Connect. Untuk melakukannya, Anda harus memberikan salah satu peran yang ditentukan di bagian ini kepada pengguna atau akun layanan yang diperlukan.
Untuk mengetahui detail tentang peran yang diberikan, lihat Peran pengguna PostgreSQL.
Peran | Peran SQL | Izin | Penggunaan | Dapat diberikan |
---|---|---|---|---|
pembaca | firebasereader_<db_name>_<schema_name> |
Akses baca saja ke database. Dapat melakukan operasi SELECT pada semua tabel dalam skema yang ditentukan. |
Ideal untuk pengguna atau layanan yang memerlukan pengambilan data, tetapi tidak memerlukan modifikasi. | Ya |
penulis | firebasewriter_<db_name>_<schema_name> |
Akses baca dan tulis ke database. Dapat melakukan operasi SELECT , INSERT , UPDATE , DELETE , dan TRUNCATE pada semua tabel dalam skema. |
Cocok untuk pengguna atau layanan yang perlu mengubah data dalam database. | Ya |
owner | firebaseowner_<db_name>_<schema_name> |
Pemilik skema. Memiliki semua hak istimewa pada semua tabel dan urutan dalam skema. |
Peran ini, bersama dengan peran IAM roles/cloudsql.client , memberikan izin untuk melakukan migrasi pada database. Misalnya, saat memanggil firebase dataconnect:sql:migrate . |
Ya |
superuser | cloudsqlsuperuser |
Peran superuser bawaan dengan hak istimewa penuh di database. Selain izin pemilik, peran ini dapat membuat skema, menghapus skema, menginstal ekstensi, dan melakukan tugas administratif lainnya. Diakses di CLI dengan login sebagai "firebasesuperuser". |
Diperlukan untuk menginstal ekstensi, membuat skema awal, dan memberikan peran SQL yang dapat diberikan kepada pengguna lain. Jika pengguna non-admin memerlukan hak istimewa superuser, migrasi akan gagal dan meminta pengguna untuk meminta administrator database (yaitu, pengguna dengan roles/cloudsql.admin ) untuk menjalankan perintah SQL yang memiliki hak istimewa. |
Diberikan kepada pengguna dengan roles/cloudsql.admin dan tidak dapat diberikan secara langsung dari CLI Firebase |
Perintah | Deskripsi | |
---|---|---|
firebase dataconnect:sql:grant |
Tombol/Parameter | Deskripsi |
-R, --role role |
Peran SQL yang akan diberikan, salah satunya: pemilik, penulis, atau pembaca. | |
-E, --email email_address |
Email untuk pengguna atau akun layanan yang akan diberi peran. |
Opsi global
Opsi global berikut berlaku untuk semua perintah:
--json
mengalihkan output CLI ke JSON untuk diuraikan oleh alat lain.--noninteractive
dan--interactive
menggantikan, sesuai kebutuhan, deteksi otomatis lingkungan non-TTY.