अपने ऐप्लिकेशन को 'Firebase के लिए Cloud Storage' एम्युलेटर से कनेक्ट करना

अपने ऐप्लिकेशन को Cloud Storage for Firebase एम्युलेटर से कनेक्ट करने से पहले, पक्का करें कि आपने Firebase Local Emulator Suite के पूरे वर्कफ़्लो को समझ लिया हो. साथ ही, आपने Local Emulator Suite को इंस्टॉल और कॉन्फ़िगर कर लिया हो और इसकी सीएलआई कमांड देख ली हों.

कोई Firebase प्रोजेक्ट चुनना

Firebase Local Emulator Suite, एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट की नकल करता है.

इस्तेमाल किए जाने वाले प्रोजेक्ट को चुनने के लिए, एम्युलेटर शुरू करने से पहले, अपनी वर्किंग डायरेक्ट्री में CLI चलाएं.firebase use इसके अलावा, हर एम्युलेटर कमांड में --project फ़्लैग पास किया जा सकता है.

Local Emulator Suite, असली Firebase प्रोजेक्ट और डेमो प्रोजेक्ट के इम्यूलेशन के साथ काम करता है.

प्रोजेक्ट का टाइप सुविधाएं एम्युलेटर के साथ इस्तेमाल करना
रियल

असली Firebase प्रोजेक्ट वह होता है जिसे आपने बनाया और कॉन्फ़िगर किया है. ऐसा ज़्यादातर Firebase कंसोल के ज़रिए किया जाता है.

असली प्रोजेक्ट में लाइव संसाधन होते हैं. जैसे, डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन या Firebase प्रोजेक्ट के लिए सेट अप किया गया कोई अन्य संसाधन.

असली Firebase प्रोजेक्ट के साथ काम करते समय, किसी भी या सभी प्रॉडक्ट के लिए एम्युलेटर चलाए जा सकते हैं.

जिन प्रॉडक्ट के लिए इम्यूलेशन नहीं किया जा रहा है उनके लिए, आपके ऐप्लिकेशन और कोड, लाइव रिसोर्स (डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन वगैरह) के साथ इंटरैक्ट करेंगे.

डेमो

डेमो Firebase प्रोजेक्ट में, असली Firebase कॉन्फ़िगरेशन नहीं होता है. साथ ही, इसमें लाइव संसाधन भी नहीं होते हैं. इन प्रोजेक्ट को आम तौर पर कोडलैब या अन्य ट्यूटोरियल के ज़रिए ऐक्सेस किया जाता है.

डेमो प्रोजेक्ट के आईडी में demo- प्रीफ़िक्स होता है.

Firebase के डेमो प्रोजेक्ट के साथ काम करते समय, आपके ऐप्लिकेशन और कोड सिर्फ़ एम्युलेटर के साथ इंटरैक्ट करते हैं. अगर आपका ऐप्लिकेशन किसी ऐसे संसाधन से इंटरैक्ट करने की कोशिश करता है जिसके लिए कोई एम्युलेटर नहीं चल रहा है, तो वह कोड काम नहीं करेगा.

हमारा सुझाव है कि जहां भी हो सके वहां डेमो प्रोजेक्ट का इस्तेमाल करें. इसके ये फ़ायदे हैं:

  • सेटअप करना आसान है, क्योंकि बिना Firebase प्रोजेक्ट बनाए भी इम्यूलेटर चलाए जा सकते हैं
  • ज़्यादा सुरक्षा मिलती है. ऐसा इसलिए, क्योंकि अगर आपका कोड गलती से नॉन-इम्युलेटेड (प्रोडक्शन) संसाधनों को चालू कर देता है, तो डेटा में बदलाव, इस्तेमाल, और बिलिंग की कोई संभावना नहीं होती
  • ऑफ़लाइन मोड में बेहतर तरीके से काम करता है, क्योंकि SDK टूल के कॉन्फ़िगरेशन को डाउनलोड करने के लिए इंटरनेट का ऐक्सेस ज़रूरी नहीं है.
Authentication

अपने ऐप्लिकेशन को एम्युलेटर से कम्यूनिकेट करने के लिए इंस्ट्रूमेंट करें

Android, Apple प्लैटफ़ॉर्म, और Web SDK

Cloud Storage for Firebase एम्युलेटर के साथ इंटरैक्ट करने के लिए, अपने ऐप्लिकेशन में कॉन्फ़िगरेशन या टेस्ट क्लास सेट अप करें. इसके लिए, यहां दिया गया तरीका अपनाएं.

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val storage = Firebase.storage
storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseStorage storage = FirebaseStorage.getInstance();
storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web

const { getStorage, connectStorageEmulator } = require("firebase/storage");

const storage = getStorage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  connectStorageEmulator(storage, "127.0.0.1", 9199);
} 

Web

var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("127.0.0.1", 9199);
} 

एम्युलेटर का इस्तेमाल करके, Cloud Storage for Firebase इवेंट से ट्रिगर होने वाले Cloud फ़ंक्शन को टेस्ट करने के लिए, किसी अन्य सेटअप की ज़रूरत नहीं होती. Cloud Storage for Firebase और Cloud Functions, दोनों एम्युलेटर के चालू होने पर, ये अपने-आप एक साथ काम करते हैं.

Admin SDK सेकंड

FIREBASE_STORAGE_EMULATOR_HOST एनवायरमेंट वैरिएबल सेट होने पर, Firebase Admin SDK, Cloud Storage for Firebase एम्युलेटर से अपने-आप कनेक्ट हो जाते हैं:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

ध्यान दें कि Cloud Functions एम्युलेटर को Cloud Storage for Firebase एम्युलेटर के बारे में अपने-आप पता चल जाता है. इसलिए, Cloud Functions और Cloud Storage for Firebase एम्युलेटर के बीच इंटिग्रेशन की जांच करते समय, इस चरण को छोड़ा जा सकता है. Cloud Storage for Firebase में Admin SDK के लिए, एनवायरमेंट वैरिएबल अपने-आप सेट हो जाएगा.

अगर आपको अपने Admin SDK कोड को किसी दूसरे एनवायरमेंट में चल रहे शेयर किए गए एम्युलेटर से कनेक्ट करना है, तो आपको वही प्रोजेक्ट आईडी सेट करना होगा जिसे आपने Firebase CLI का इस्तेमाल करके सेट किया था. initializeApp को सीधे तौर पर प्रोजेक्ट आईडी दिया जा सकता है या GCLOUD_PROJECT एनवायरमेंट वैरिएबल सेट किया जा सकता है.

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
एनवायरमेंट वैरिएबल
export GCLOUD_PROJECT="your-project-id"

डेटा इंपोर्ट और एक्सपोर्ट करना

डेटाबेस और Cloud Storage for Firebase एम्युलेटर की मदद से, चालू एम्युलेटर इंस्टेंस से डेटा एक्सपोर्ट किया जा सकता है. यूनिट टेस्ट या लगातार इंटिग्रेशन वाले वर्कफ़्लो में इस्तेमाल करने के लिए, डेटा का एक बेसलाइन सेट तय करें. इसके बाद, इसे टीम के साथ शेयर करने के लिए एक्सपोर्ट करें.

firebase emulators:export ./dir

जांच में, एम्युलेटर शुरू होने पर, बेसलाइन डेटा इंपोर्ट करें.

firebase emulators:start --import=./dir

एम्युलेटर को बंद होने पर डेटा एक्सपोर्ट करने का निर्देश दिया जा सकता है. इसके लिए, एक्सपोर्ट पाथ तय करें या --import फ़्लैग को पास किए गए पाथ का इस्तेमाल करें.

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

डेटा इंपोर्ट और एक्सपोर्ट करने के ये विकल्प, firebase emulators:exec कमांड के साथ भी काम करते हैं. ज़्यादा जानकारी के लिए, एम्युलेटर कमांड रेफ़रंस देखें.

Cloud Storage for Firebase एम्युलेटर, प्रोडक्शन से कैसे अलग है

क्लाइंट ऐप्लिकेशन की टेस्टिंग के लिए, Cloud Storage for Firebase एम्युलेटर, Firebase API के सर्फ़ेस एरिया के हिसाब से प्रोडक्शन के साथ लगभग पूरी तरह से काम करता है. Firebase की सभी कमांड, Firebase के रेगुलर SDK टूल (वेब, Android, और Apple प्लैटफ़ॉर्म) के साथ काम करनी चाहिए.

सर्वर साइड ऐप्लिकेशन की टेस्टिंग के लिए, कुछ सीमाएं लागू होती हैं. Firebase Admin SDK, Google Cloud एपीआई का इस्तेमाल करते हैं. इस एपीआई के सभी एंडपॉइंट का इस्तेमाल नहीं किया जाता. सामान्य तौर पर, क्लाइंट एसडीके से किए जा सकने वाले सभी काम (फ़ाइलें अपलोड करना या मिटाना, मेटाडेटा पाना और सेट करना) एडमिन एसडीके से भी किए जा सकते हैं. हालांकि, इसके अलावा कोई और काम नहीं किया जा सकता. नीचे दी गई स्थितियों में, आपको यह सुविधा नहीं मिलेगी.

Google Cloud Storage से अंतर

Cloud Storage for Firebase प्रॉडक्ट में स्टोरेज एम्युलेटर शामिल है. यह Google Cloud Storage (GCS) की कुछ सुविधाएं उपलब्ध कराता है. इसमें स्टोरेज ऑब्जेक्ट पर फ़ोकस किया जाता है. यह Firebase ऐप्लिकेशन डेवलप करने के लिए बहुत उपयोगी है. Cloud Storage for Firebase और GCS में ये अंतर होते हैं:

  • फ़िलहाल, Cloud Storage for Firebase में स्टोरेज बकेट बनाने, उनकी सूची देखने, उन्हें पाने या मिटाने के लिए, Bucket एपीआई का इस्तेमाल नहीं किया जा सकता.
  • Google Cloud Storage Objects API में, ये तरीके इस्तेमाल किए जा सकते हैं: copy, delete, get, insert, list, patch, rewrite, update.

Cloud IAM

Firebase Emulator Suite, IAM से जुड़ी किसी भी सुविधा को चलाने के लिए, उसे दोहराने या उसका पालन करने की कोशिश नहीं करता. एम्युलेटर, Firebase के सुरक्षा नियमों का पालन करते हैं. हालांकि, कुछ मामलों में आईएएम का इस्तेमाल किया जाता है. उदाहरण के लिए, Cloud Functions को चालू करने वाले सेवा खाते और अनुमतियों को सेट करने के लिए. ऐसे मामलों में, एम्युलेटर को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, यह आपके डेवलपर मशीन पर उपलब्ध ग्लोबल खाते का इस्तेमाल करेगा. यह सीधे तौर पर लोकल स्क्रिप्ट चलाने जैसा है.

Pub/Sub सूचनाएं

Cloud Storage for Firebase एम्युलेटर, Cloud Pub/Sub एम्युलेटर के साथ इंटिग्रेट नहीं होता. इसलिए, यह स्टोरेज ऑब्जेक्ट में हुए बदलावों के लिए चैनल/सूचनाएं बनाने की सुविधा नहीं देता. हमारा सुझाव है कि आप सीधे तौर पर Cloud Functions स्टोरेज ट्रिगर का इस्तेमाल करें.

बकेट-लेवल का मेटाडेटा

Cloud Storage for Firebase एम्युलेटर, बकेट-लेवल के किसी भी कॉन्फ़िगरेशन के साथ काम नहीं करता. जैसे, स्टोरेज क्लास, बकेट-लेवल का सीओआरएस कॉन्फ़िगरेशन, लेबल या डेटा सुरक्षित रखने की नीतियां. Firebase, समय के साथ इस सुविधा को बेहतर बनाने का इरादा रखता है.

आगे क्या करना है?