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

अपने ऐप्लिकेशन को 'Firebase के लिए Cloud Storage' एम्युलेटर के साथ कनेक्ट करने से पहले, पक्का करें कि आपको Firebase के लोकल एम्युलेटर सुइट के वर्कफ़्लो के बारे में पूरी जानकारी है. साथ ही, यह भी पक्का करें कि आपने लोकल एम्युलेटर सुइट को इंस्टॉल और कॉन्फ़िगर किया है और इसके सीएलआई निर्देश देखे हैं.

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

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

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

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

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

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

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

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

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

डेमो

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

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

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

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

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

एम्युलेटर से बात करने के लिए, अपने ऐप्लिकेशन को इंस्टॉल करें

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

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

Kotlin+KTX
// 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)

वेब मॉड्यूलर एपीआई

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);
} 

वेब नेमस्पेसेड एपीआई

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

एडमिन SDK

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

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

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

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

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

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

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

firebase emulators:export ./dir

टेस्ट में, एम्युलेटर स्टार्टअप पर, बेसलाइन डेटा इंपोर्ट करें.

firebase emulators:start --import=./dir

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

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

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

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

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

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

Google Cloud Storage से अंतर

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

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

Cloud IAM

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

Pub/Sub सूचनाएं

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

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

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

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