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

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

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

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

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

Local Emulator Suite असली Firebase प्रोजेक्ट और डेमो प्रोजेक्ट की नकल करने की सुविधा देता है.

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

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

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

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

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

डेमो

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

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

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

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

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

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

Android, Apple प्लैटफ़ॉर्म, और वेब एसडीके

अपने ऐप्लिकेशन में मौजूद कॉन्फ़िगरेशन या टेस्ट क्लास को, 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 Functions की जांच करने के लिए, Cloud Storage for Firebase इवेंट से ट्रिगर होने वाले किसी अन्य सेटअप की ज़रूरत नहीं होती. जब Cloud Storage for Firebase और Cloud Functions एम्युलेटर, दोनों चल रहे होते हैं, तो वे अपने-आप एक साथ काम करते हैं.

Admin SDKs

जब FIREBASE_STORAGE_EMULATOR_HOST एनवायरमेंट वैरिएबल सेट किया जाता है, तो Firebase Admin SDKs, 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 कोड को किसी दूसरे एनवायरमेंट में चल रहे शेयर किए गए एम्युलेटर से कनेक्ट करना है, तो आपको वही प्रोजेक्ट आईडी बताना होगा जिसे आपने Firebase सीएलआई का इस्तेमाल करके सेट किया था. initializeApp में सीधे तौर पर कोई प्रोजेक्ट आईडी पास किया जा सकता है या GCLOUD_PROJECT एनवायरमेंट वैरिएबल सेट किया जा सकता है.

Node.js एडमिन एसडीके
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 एसडीके (वेब, Android, और Apple प्लैटफ़ॉर्म) के बीच काम करेंगे.

सर्वर-साइड ऐप्लिकेशन की जांच के लिए, कुछ सीमाएं हैं. Firebase के एडमिन एसडीके, 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 ऑब्जेक्ट एपीआई से, इन तरीकों के साथ काम किया जाता है: copy, delete, get, insert, list, patch, rewrite, update.

Cloud IAM

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

Pub/Sub सूचनाएं

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

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

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

इसके बाद क्या करना है?