Sebelum menghubungkan aplikasi Anda ke emulator Cloud Storage for Firebase, pastikan Anda memahami keseluruhan alur kerja Firebase Local Emulator Suite , dan Anda menginstal dan mengonfigurasi Local Emulator Suite serta meninjau perintah CLI -nya.
Pilih proyek Firebase
Firebase Local Emulator Suite mengemulasikan produk untuk satu proyek Firebase.
Untuk memilih project yang akan digunakan, sebelum Anda memulai emulator, di CLI jalankan firebase use
di direktori kerja Anda. Atau, Anda dapat meneruskan flag --project
ke setiap perintah emulator.
Local Emulator Suite mendukung emulasi proyek Firebase nyata dan proyek demo .
Jenis proyek | Fitur | Gunakan dengan emulator |
---|---|---|
Nyata | Proyek Firebase sebenarnya adalah proyek yang Anda buat dan konfigurasikan (kemungkinan besar melalui konsol Firebase). Proyek nyata memiliki sumber daya langsung, seperti instance database, keranjang penyimpanan, fungsi, atau sumber daya lain yang Anda siapkan untuk proyek Firebase tersebut. | Saat bekerja dengan proyek Firebase nyata, Anda dapat menjalankan emulator untuk salah satu atau semua produk yang didukung. Untuk produk apa pun yang tidak Anda tiru, aplikasi dan kode Anda akan berinteraksi dengan sumber daya langsung (instance database, keranjang penyimpanan, fungsi, dll.). |
Demo | Proyek demo Firebase tidak memiliki konfigurasi Firebase nyata dan tidak memiliki sumber daya langsung. Project ini biasanya diakses melalui codelab atau tutorial lainnya. ID Proyek untuk proyek demo memiliki awalan | Saat bekerja dengan proyek demo Firebase, aplikasi dan kode Anda hanya berinteraksi dengan emulator . Jika aplikasi Anda mencoba berinteraksi dengan sumber daya yang emulatornya tidak berjalan, kode tersebut akan gagal. |
Kami menyarankan Anda menggunakan proyek demo sedapat mungkin. Manfaat meliputi:
- Penyiapan yang lebih mudah, karena Anda dapat menjalankan emulator tanpa harus membuat proyek Firebase
- Keamanan yang lebih kuat, karena jika kode Anda secara tidak sengaja mengaktifkan sumber daya (produksi) yang tidak ditiru, tidak ada kemungkinan perubahan data, penggunaan, dan penagihan
- Dukungan offline yang lebih baik, karena tidak perlu mengakses internet untuk mengunduh konfigurasi SDK Anda.
Instrumen aplikasi Anda untuk berkomunikasi dengan emulator
Android, platform Apple, dan Web SDK
Siapkan konfigurasi dalam aplikasi atau class pengujian untuk berinteraksi dengan emulator Cloud Storage for Firebase sebagai berikut.
Kotlin+KTX
Firebase.storage.useEmulator("10.0.2.2", 9199)
Java
FirebaseStorage.getInstance().useEmulator("10.0.2.2", 9199);
Cepat
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Web v8
var storage = firebase.storage(); storage.useEmulator("localhost", 9199);
Web v9
import { getStorage, connectStorageEmulator } from "firebase/storage"; const storage = getStorage(); connectStorageEmulator(storage, "localhost", 9199);
Tidak diperlukan penyiapan tambahan untuk menguji fungsi Cloud yang dipicu oleh peristiwa Cloud Storage for Firebase menggunakan emulator. Saat emulator Cloud Storage for Firebase dan Cloud Functions berjalan, keduanya akan bekerja bersama secara otomatis.
SDK Admin
Firebase Admin SDK secara otomatis terhubung ke emulator Cloud Storage for Firebase saat variabel lingkungan FIREBASE_STORAGE_EMULATOR_HOST
ditetapkan:
export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"
Perhatikan bahwa emulator Cloud Functions secara otomatis mengetahui emulator Cloud Storage for Firebase sehingga Anda dapat melewati langkah ini saat menguji integrasi antara emulator Cloud Functions dan Cloud Storage for Firebase. Variabel lingkungan akan disetel secara otomatis untuk Admin SDK di Cloud Storage for Firebase.
Jika Anda ingin kode Admin SDK terhubung ke emulator bersama yang berjalan di lingkungan lain, Anda harus menentukan ID proyek yang sama dengan yang Anda atur menggunakan Firebase CLI . Anda dapat meneruskan ID proyek untuk initializeApp
Aplikasi secara langsung atau menyetel variabel lingkungan GCLOUD_PROJECT
.
SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variabel Lingkungan
export GCLOUD_PROJECT="your-project-id"
Mengimpor dan mengekspor data
Basis data dan emulator Cloud Storage for Firebase memungkinkan Anda mengekspor data dari instance emulator yang sedang berjalan. Tentukan kumpulan data dasar untuk digunakan dalam pengujian unit atau alur kerja integrasi berkelanjutan, lalu ekspor untuk dibagikan di antara tim.
firebase emulators:export ./dir
Dalam pengujian, saat memulai emulator, impor data baseline.
firebase emulators:start --import=./dir
Anda dapat menginstruksikan emulator untuk mengekspor data saat dimatikan, baik dengan menentukan jalur ekspor atau cukup menggunakan jalur yang diteruskan ke tanda --import
.
firebase emulators:start --import=./dir --export-on-exit
Opsi impor dan ekspor data ini juga berfungsi dengan perintah firebase emulators:exec
. Untuk lebih lanjut, lihat referensi perintah emulator .
Bagaimana emulator Cloud Storage for Firebase berbeda dari produksi
Untuk pengujian aplikasi klien, emulator Cloud Storage for Firebase hampir selaras dengan produksi terkait dengan area permukaan Firebase API. Semua perintah Firebase diharapkan bekerja antara SDK Firebase reguler (platform Web, Android, dan Apple).
Untuk pengujian aplikasi sisi server, terdapat batasan. Firebase Admin SDK menggunakan permukaan Google Cloud API, dan tidak semua titik akhir API ini diemulasi. Sebagai aturan praktis, apa pun yang dapat dilakukan dari SDK klien (mengunggah atau menghapus file, mendapatkan dan menyetel metadata) juga diterapkan untuk digunakan dari SDK Admin, tetapi selain itu tidak. Pengecualian penting tercantum di bawah ini.
Perbedaan dari Google Cloud Storage
Produk Cloud Storage for Firebase, termasuk emulator Storage, menyediakan subset fungsionalitas Google Cloud Storage (GCS) yang berfokus pada objek penyimpanan yang sangat berguna untuk mengembangkan aplikasi Firebase. Cloud Storage for Firebase berbeda dari GCS dalam hal berikut:
- Cloud Storage for Firebase saat ini tidak mendukung
Bucket
API untuk membuat, mencantumkan, mendapatkan, atau menghapus keranjang penyimpanan. - Dari Google Cloud Storage Objects API , metode berikut didukung:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
Awan IAM
Firebase Emulator Suite tidak berusaha mereplikasi atau mengikuti perilaku terkait IAM apa pun untuk dijalankan. Emulator mematuhi Aturan Keamanan Firebase yang disediakan, tetapi dalam situasi di mana IAM biasanya akan digunakan, misalnya untuk menyetel akun layanan pemanggilan Cloud Functions dan dengan demikian izin, emulator tidak dapat dikonfigurasi dan akan menggunakan akun yang tersedia secara global di mesin pengembang Anda, mirip dengan menjalankan skrip lokal secara langsung.
Notifikasi Pub/Sub
Emulator Cloud Storage for Firebase tidak terintegrasi dengan emulator Cloud Pub/Sub sehingga tidak mendukung pembuatan saluran/pemberitahuan untuk perubahan objek penyimpanan. Sebaiknya gunakan pemicu Cloud Functions Storage secara langsung.
Metadata tingkat keranjang
Emulator Cloud Storage for Firebase tidak mendukung konfigurasi level bucket apa pun termasuk kelas penyimpanan, konfigurasi CORS level bucket, label, atau kebijakan retensi. Firebase bermaksud untuk meningkatkan dukungan ini dari waktu ke waktu.
Apa selanjutnya?
- Untuk serangkaian video pilihan dan contoh cara mendetail, ikuti Daftar Putar Pelatihan Firebase Emulators .
- Karena fungsi yang dipicu adalah integrasi biasa dengan Cloud Storage for Firebase, pelajari emulator Cloud Functions for Firebase lebih lanjut di Jalankan fungsi secara lokal .
Sebelum menghubungkan aplikasi Anda ke emulator Cloud Storage for Firebase, pastikan Anda memahami keseluruhan alur kerja Firebase Local Emulator Suite , dan Anda menginstal dan mengonfigurasi Local Emulator Suite serta meninjau perintah CLI -nya.
Pilih proyek Firebase
Firebase Local Emulator Suite mengemulasikan produk untuk satu proyek Firebase.
Untuk memilih project yang akan digunakan, sebelum Anda memulai emulator, di CLI jalankan firebase use
di direktori kerja Anda. Atau, Anda dapat meneruskan flag --project
ke setiap perintah emulator.
Local Emulator Suite mendukung emulasi proyek Firebase nyata dan proyek demo .
Jenis proyek | Fitur | Gunakan dengan emulator |
---|---|---|
Nyata | Proyek Firebase sebenarnya adalah proyek yang Anda buat dan konfigurasikan (kemungkinan besar melalui konsol Firebase). Proyek nyata memiliki sumber daya langsung, seperti instance database, keranjang penyimpanan, fungsi, atau sumber daya lain yang Anda siapkan untuk proyek Firebase tersebut. | Saat bekerja dengan proyek Firebase nyata, Anda dapat menjalankan emulator untuk salah satu atau semua produk yang didukung. Untuk produk apa pun yang tidak Anda tiru, aplikasi dan kode Anda akan berinteraksi dengan sumber daya langsung (instance database, keranjang penyimpanan, fungsi, dll.). |
Demo | Proyek demo Firebase tidak memiliki konfigurasi Firebase nyata dan tidak memiliki sumber daya langsung. Project ini biasanya diakses melalui codelab atau tutorial lainnya. ID Proyek untuk proyek demo memiliki awalan | Saat bekerja dengan proyek demo Firebase, aplikasi dan kode Anda hanya berinteraksi dengan emulator . Jika aplikasi Anda mencoba berinteraksi dengan sumber daya yang emulatornya tidak berjalan, kode tersebut akan gagal. |
Kami menyarankan Anda menggunakan proyek demo sedapat mungkin. Manfaat meliputi:
- Penyiapan yang lebih mudah, karena Anda dapat menjalankan emulator tanpa harus membuat project Firebase
- Keamanan yang lebih kuat, karena jika kode Anda secara tidak sengaja mengaktifkan sumber daya (produksi) yang tidak ditiru, tidak ada kemungkinan perubahan data, penggunaan, dan penagihan
- Dukungan offline yang lebih baik, karena tidak perlu mengakses internet untuk mengunduh konfigurasi SDK Anda.
Instrumen aplikasi Anda untuk berkomunikasi dengan emulator
Android, platform Apple, dan Web SDK
Siapkan konfigurasi dalam aplikasi atau class pengujian untuk berinteraksi dengan emulator Cloud Storage for Firebase sebagai berikut.
Kotlin+KTX
Firebase.storage.useEmulator("10.0.2.2", 9199)
Java
FirebaseStorage.getInstance().useEmulator("10.0.2.2", 9199);
Cepat
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Web v8
var storage = firebase.storage(); storage.useEmulator("localhost", 9199);
Web v9
import { getStorage, connectStorageEmulator } from "firebase/storage"; const storage = getStorage(); connectStorageEmulator(storage, "localhost", 9199);
Tidak diperlukan penyiapan tambahan untuk menguji fungsi Cloud yang dipicu oleh peristiwa Cloud Storage for Firebase menggunakan emulator. Saat emulator Cloud Storage for Firebase dan Cloud Functions berjalan, keduanya akan bekerja bersama secara otomatis.
SDK Admin
Firebase Admin SDK secara otomatis terhubung ke emulator Cloud Storage for Firebase saat variabel lingkungan FIREBASE_STORAGE_EMULATOR_HOST
ditetapkan:
export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"
Perhatikan bahwa emulator Cloud Functions secara otomatis mengetahui emulator Cloud Storage for Firebase sehingga Anda dapat melewati langkah ini saat menguji integrasi antara emulator Cloud Functions dan Cloud Storage for Firebase. Variabel lingkungan akan disetel secara otomatis untuk Admin SDK di Cloud Storage for Firebase.
Jika Anda ingin kode Admin SDK terhubung ke emulator bersama yang berjalan di lingkungan lain, Anda harus menentukan ID proyek yang sama dengan yang Anda atur menggunakan Firebase CLI . Anda dapat meneruskan ID proyek untuk initializeApp
Aplikasi secara langsung atau menyetel variabel lingkungan GCLOUD_PROJECT
.
SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variabel Lingkungan
export GCLOUD_PROJECT="your-project-id"
Mengimpor dan mengekspor data
Basis data dan emulator Cloud Storage for Firebase memungkinkan Anda mengekspor data dari instance emulator yang sedang berjalan. Tentukan kumpulan data dasar untuk digunakan dalam pengujian unit atau alur kerja integrasi berkelanjutan, lalu ekspor untuk dibagikan di antara tim.
firebase emulators:export ./dir
Dalam pengujian, saat memulai emulator, impor data baseline.
firebase emulators:start --import=./dir
Anda dapat menginstruksikan emulator untuk mengekspor data saat dimatikan, baik dengan menentukan jalur ekspor atau cukup menggunakan jalur yang diteruskan ke tanda --import
.
firebase emulators:start --import=./dir --export-on-exit
Opsi impor dan ekspor data ini juga berfungsi dengan perintah firebase emulators:exec
. Untuk lebih lanjut, lihat referensi perintah emulator .
Bagaimana emulator Cloud Storage for Firebase berbeda dari produksi
Untuk pengujian aplikasi klien, emulator Cloud Storage for Firebase hampir selaras dengan produksi terkait dengan area permukaan Firebase API. Semua perintah Firebase diharapkan bekerja antara SDK Firebase reguler (platform Web, Android, dan Apple).
Untuk pengujian aplikasi sisi server, terdapat batasan. Firebase Admin SDK menggunakan permukaan Google Cloud API, dan tidak semua titik akhir API ini diemulasi. Sebagai aturan praktis, apa pun yang dapat dilakukan dari SDK klien (mengunggah atau menghapus file, mendapatkan dan menyetel metadata) juga diterapkan untuk digunakan dari SDK Admin, tetapi selain itu tidak. Pengecualian penting tercantum di bawah ini.
Perbedaan dari Google Cloud Storage
Produk Cloud Storage for Firebase, termasuk emulator Storage, menyediakan subset fungsionalitas Google Cloud Storage (GCS) yang berfokus pada objek penyimpanan yang sangat berguna untuk mengembangkan aplikasi Firebase. Cloud Storage for Firebase berbeda dari GCS dalam hal berikut:
- Cloud Storage for Firebase saat ini tidak mendukung
Bucket
API untuk membuat, mencantumkan, mendapatkan, atau menghapus keranjang penyimpanan. - Dari Google Cloud Storage Objects API , metode berikut didukung:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
Awan IAM
Firebase Emulator Suite tidak berusaha mereplikasi atau mengikuti perilaku terkait IAM apa pun untuk dijalankan. Emulator mematuhi Aturan Keamanan Firebase yang disediakan, tetapi dalam situasi di mana IAM biasanya akan digunakan, misalnya untuk menyetel akun layanan pemanggilan Cloud Functions dan dengan demikian izin, emulator tidak dapat dikonfigurasi dan akan menggunakan akun yang tersedia secara global di mesin pengembang Anda, mirip dengan menjalankan skrip lokal secara langsung.
Notifikasi Pub/Sub
Emulator Cloud Storage for Firebase tidak terintegrasi dengan emulator Cloud Pub/Sub sehingga tidak mendukung pembuatan saluran/pemberitahuan untuk perubahan objek penyimpanan. Sebaiknya gunakan pemicu Cloud Functions Storage secara langsung.
Metadata tingkat keranjang
Emulator Cloud Storage for Firebase tidak mendukung konfigurasi level bucket apa pun termasuk kelas penyimpanan, konfigurasi CORS level bucket, label, atau kebijakan retensi. Firebase bermaksud untuk meningkatkan dukungan ini dari waktu ke waktu.
Apa selanjutnya?
- Untuk serangkaian video pilihan dan contoh cara mendetail, ikuti Daftar Putar Pelatihan Firebase Emulators .
- Karena fungsi yang dipicu adalah integrasi biasa dengan Cloud Storage for Firebase, pelajari emulator Cloud Functions for Firebase lebih lanjut di Jalankan fungsi secara lokal .