Hubungkan aplikasi Anda ke Cloud Storage Emulator

Sebelum menghubungkan aplikasi Anda ke emulator Cloud Storage, pastikan bahwa Anda memahami keseluruhan Firebase lokal Emulator Suite alur kerja , dan bahwa Anda menginstal dan mengkonfigurasi Lokal Emulator Suite dan meninjau nya perintah CLI .

Pilih proyek Firebase

Firebase Local Emulator Suite mengemulasi produk untuk satu project Firebase.

Untuk memilih proyek untuk digunakan, sebelum Anda memulai emulator, dalam CLI jangka firebase use di direktori kerja Anda. Atau, Anda dapat melewati --project bendera untuk setiap perintah emulator.

Lokal Emulator Suite mendukung emulasi proyek Firebase nyata dan demo proyek.

Jenis proyek Fitur Gunakan dengan emulator
Nyata

Proyek Firebase yang 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 yang sebenarnya, Anda dapat menjalankan emulator untuk salah satu atau semua produk yang didukung.

Untuk setiap produk yang Anda tidak meniru, aplikasi dan kode akan berinteraksi dengan sumber daya hidup (contoh database, penyimpanan ember, fungsi, dll).

Demo

Sebuah proyek demo Firebase tidak memiliki konfigurasi Firebase nyata dan tidak ada sumber daya hidup. Proyek-proyek ini biasanya diakses melalui codelabs atau tutorial lainnya.

Proyek ID untuk proyek-proyek demo memiliki demo- awalan.

Ketika bekerja dengan demo proyek Firebase, aplikasi dan kode berinteraksi dengan emulator saja. Jika aplikasi Anda mencoba berinteraksi dengan sumber daya yang emulatornya tidak berjalan, kode itu akan gagal.

Kami menyarankan Anda menggunakan proyek demo jika memungkinkan. Manfaat meliputi:

  • Penyiapan lebih mudah, karena Anda dapat menjalankan emulator tanpa pernah membuat proyek Firebase
  • Keamanan yang lebih kuat, karena jika kode Anda secara tidak sengaja memanggil 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 berbicara dengan emulator

Android, platform Apple, dan SDK Web

Siapkan konfigurasi dalam aplikasi atau kelas pengujian Anda untuk berinteraksi dengan emulator Cloud Storage sebagai berikut.

Android
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 ada pengaturan tambahan yang dibutuhkan untuk menguji fungsi Cloud dipicu oleh peristiwa Cloud Storage menggunakan emulator. Saat emulator Cloud Storage dan Cloud Functions berjalan, keduanya secara otomatis bekerja bersama.

SDK Admin

The Firebase Admin SDK secara otomatis terhubung ke emulator Cloud Storage ketika FIREBASE_STORAGE_EMULATOR_HOST variabel lingkungan diatur:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Perhatikan bahwa emulator Cloud Functions secara otomatis mengetahui emulator Cloud Storage sehingga Anda dapat melewati langkah ini saat menguji integrasi antara Cloud Functions dan emulator Cloud Storage. Variabel lingkungan akan secara otomatis disetel untuk Admin SDK di Cloud Storage.

Saat menghubungkan ke emulator Cloud Storage dari lingkungan lain, Anda harus menentukan ID proyek. Anda dapat melewati ID proyek untuk initializeApp langsung atau mengatur GCLOUD_PROJECT variabel lingkungan. Perhatikan bahwa Anda tidak perlu menggunakan ID proyek Firebase yang sebenarnya; emulator Cloud Storage akan menerima ID proyek, asalkan memiliki format yang valid .

SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variabel Lingkungan
export GCLOUD_PROJECT="your-project-id"

Impor dan ekspor data

Database dan emulator Cloud Storage 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 dasar.

firebase emulators:start --import=./dir

Anda dapat menginstruksikan emulator data ekspor shutdown, baik menentukan jalur ekspor atau hanya menggunakan jalur diteruskan ke --import bendera.

firebase emulators:start --import=./dir --export-on-exit

Data impor dan ekspor pilihan ini bekerja dengan firebase emulators:exec perintah juga. Untuk lebih lanjut, lihat referensi perintah emulator .

Bagaimana emulator Cloud Storage berbeda dari produksi

Untuk pengujian aplikasi klien, emulator Cloud Storage menyelaraskan produksi dengan hampir sempurna dalam hal area permukaan Firebase API. Semua perintah Firebase diharapkan berfungsi di antara SDK Firebase biasa (platform Web, Android, dan Apple).

Untuk pengujian aplikasi sisi server, ada batasan. Firebase Admin SDK menggunakan permukaan Google Cloud API, dan tidak semua endpoint 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 Admin SDK, tetapi apa pun di luar itu tidak. Pengecualian penting tercantum di bawah ini.

Cloud IAM

Firebase Emulator Suite tidak mencoba mereplikasi atau menghormati perilaku terkait IAM apa pun untuk dijalankan. Emulator mematuhi Aturan Keamanan Firebase yang disediakan, tetapi dalam situasi di mana IAM biasanya digunakan, misalnya untuk mengatur Cloud Functions yang memanggil akun layanan 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.

Pemberitahuan Pub/Sub

Emulator Cloud Storage tidak terintegrasi dengan emulator Cloud Pub/Sub dan karenanya tidak mendukung pembuatan saluran/notifikasi untuk perubahan objek penyimpanan. Sebaiknya gunakan pemicu Cloud Functions Storage secara langsung.

Metadata level bucket

Emulator Cloud Storage 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 satu set curated video dan rinci bagaimana-untuk contoh, mengikuti Firebase Emulator Pelatihan Playlist .
  • Karena fungsi memicu adalah integrasi khas dengan Cloud Storage, mempelajari lebih lanjut tentang Fungsi Cloud untuk Firebase emulator di fungsi Run lokal .