अपने ऐप्लिकेशन को '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 प्रोजेक्ट के साथ काम करते समय, किसी भी या सभी काम करने वाले प्रॉडक्ट के लिए इम्युलेटर चलाए जा सकते हैं.

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

डेमो

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

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

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

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

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

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

Android, Apple प्लैटफ़ॉर्म, और वेब SDK टूल

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

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)

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 में, एडमिन 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 एपीआई के प्लैटफ़ॉर्म का इस्तेमाल करते हैं. हालांकि, इस एपीआई के सभी एंडपॉइंट को एमुलेट नहीं किया जाता. आम तौर पर, क्लाइंट SDK टूल से जो भी काम किए जा सकते हैं (फ़ाइलें अपलोड या मिटाना, मेटाडेटा पाना और सेट करना), उन्हें एडमिन SDK टूल से भी किया जा सकता है. हालांकि, इसके अलावा कोई भी काम नहीं किया जा सकता. जिन चीज़ों पर यह सुविधा लागू नहीं होती उनके बारे में यहां बताया गया है.

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

Pub/Sub सूचनाएं

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

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

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

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