अपने ऐप्लिकेशन को 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 कॉन्फ़िगरेशन और लाइव संसाधन नहीं होते. आम तौर पर, इन प्रोजेक्ट को कोडलैब या अन्य ट्यूटोरियल की मदद से ऐक्सेस किया जाता है. डेमो प्रोजेक्ट के प्रोजेक्ट आईडी में, |
डेमो 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)
Unity
FirebaseStorage storage = FirebaseStorage.DefaultInstance; // Connects to the Storage Emulator running on port 9199 storage.UseEmulator("127.0.0.1", 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 एपीआई के प्लैटफ़ॉर्म के हिसाब से, प्रोडक्शन के साथ पूरी तरह से अलाइन होता है. उम्मीद है कि Firebase के सभी निर्देश, सामान्य Firebase SDK टूल (वेब, Android, और Apple प्लैटफ़ॉर्म) के बीच काम करेंगे.
सर्वर-साइड ऐप्लिकेशन की जांच करने के लिए, कुछ सीमाएं मौजूद हैं. Firebase Admin SDK टूल, Google Cloud एपीआई का इस्तेमाल करते हैं. इस एपीआई के सभी एंडपॉइंट एम्युलेट नहीं किए जाते. आम तौर पर, क्लाइंट SDK टूल से किए जा सकने वाले सभी काम (फ़ाइलें अपलोड करना या मिटाना, मेटाडेटा पाना और सेट करना), Admin 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, आईएएम से जुड़े किसी भी व्यवहार को दोहराने या उसका पालन करने की कोशिश नहीं करता. एम्युलेटर, Firebase के सुरक्षा नियमों का पालन करते हैं. हालांकि, कुछ मामलों में आईएएम का इस्तेमाल किया जाता है. उदाहरण के लिए, Cloud Functions को शुरू करने वाले सेवा खाते और अनुमतियों को सेट करने के लिए. ऐसे मामलों में, एम्युलेटर को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, यह आपकी डेवलपमेंट मशीन पर दुनिया भर में उपलब्ध खाते का इस्तेमाल करेगा. यह सीधे तौर पर लोकल स्क्रिप्ट चलाने जैसा है.
Pub/Sub सूचनाएं
Cloud Storage for Firebase एम्युलेटर, Cloud Pub/Sub एम्युलेटर के साथ इंटिग्रेट नहीं होता. इसलिए, स्टोरेज ऑब्जेक्ट में होने वाले बदलावों के लिए, चैनल/सूचनाएं बनाने की सुविधा काम नहीं करती. हमारा सुझाव है कि आप सीधे तौर पर Cloud Functions स्टोरेज ट्रिगर का इस्तेमाल करें.
बकेट-लेवल मेटाडेटा
Cloud Storage for Firebase एम्युलेटर, बकेट-लेवल के किसी भी कॉन्फ़िगरेशन के साथ काम नहीं करता. इसमें स्टोरेज क्लास, बकेट-लेवल का सीओआरएस कॉन्फ़िगरेशन, लेबल या डेटा के रखरखाव की नीतियां शामिल हैं. Firebase, समय के साथ इस सुविधा को बेहतर बनाने की कोशिश कर रहा है.
आगे क्या करना है?
- चुनिंदा वीडियो और उदाहरणों के साथ सिलसिलेवार तरीके से जानकारी पाने के लिए, Firebase एमुलेटर की ट्रेनिंग प्लेलिस्ट देखें.
- ट्रिगर किए गए फ़ंक्शन, Cloud Storage for Firebase के साथ इंटिग्रेशन का एक सामान्य तरीका हैं. इसलिए, Cloud Functions for Firebase एम्युलेटर के बारे में ज़्यादा जानने के लिए, फ़ंक्शन को स्थानीय तौर पर चलाएं पर जाएं.