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

अपने ऐप्लिकेशन को Cloud Functions एम्युलेटर से कनेक्ट करने से पहले, पक्का करें कि आपको पूरे 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 टूल का कॉन्फ़िगरेशन डाउनलोड करें.

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

कॉल करने लायक फ़ंक्शन के लिए, अपने ऐप्लिकेशन को इंस्टॉल करें

अगर आपके प्रोटोटाइप और टेस्ट गतिविधियों में कॉल करने लायक बैकएंड फ़ंक्शन शामिल हैं, तो इस तरह के Cloud Functions 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 functions = Firebase.functions
functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFunctions functions = FirebaseFunctions.getInstance();
functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")

Web

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "127.0.0.1", 5001);

Web

firebase.functions().useEmulator("127.0.0.1", 5001);

एचटीटीपीएस फ़ंक्शन एम्युलेशन के लिए अपने ऐप्लिकेशन का इंस्ट्रुमेंट

आपके कोड का हर एचटीटीपीएस फ़ंक्शन, यूआरएल के इस फ़ॉर्मैट का इस्तेमाल करके लोकल एम्युलेटर से दिखाया जाएगा:

http://$HOST:$PORT/$PROJECT/$REGION/$NAME

उदाहरण के लिए, डिफ़ॉल्ट होस्ट पोर्ट और क्षेत्र वाला एक सामान्य helloWorld फ़ंक्शन यहां दिखाया जाएगा:

https://localhost:5001/$PROJECT/us-central1/helloWorld

टास्क सूची के फ़ंक्शन को एम्युलेट करने के लिए, अपने ऐप्लिकेशन का इंस्ट्रुमेंट इस्तेमाल करें

एम्युलेटर, ट्रिगर के आधार पर एम्युलेट किए गए टास्क की सूचियां अपने-आप सेट अप करता है डेफ़िनिशन और एडमिन SDK, सूची में शामिल अनुरोधों को एम्युलेटर पर भेज देता है, अगर: यह पता लगाता है कि यह CLOUD_TASKS_EMULATOR_HOST एनवायरमेंट से चल रहा है वैरिएबल.

ध्यान दें कि प्रोडक्शन में इस्तेमाल किया जाने वाला डिस्पैच सिस्टम, जो एम्युलेटर में लागू किए गए हों, इसलिए आपको और कॉन्टेंट बनाने की प्रोसेस की एकदम सटीक जानकारी देता है. इसमें मौजूद पैरामीटर एम्युलेटर, टास्क के डिस्पैच होने की दर क�� लिए ऊपरी सीमाएं देता है और दोबारा कोशिश की.

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

Cloud Functions एम्युलेटर, इन सोर्स के बैकग्राउंड में ट्रिगर होने वाले फ़ंक्शन के साथ काम करता है:

  • Realtime Database एम्युलेटर
  • Cloud Firestore एम्युलेटर
  • Authentication एम्युलेटर
  • Pub/Sub एम्युलेटर
  • Firebase सूचना एम्युलेटर

बैकग्राउंड इवेंट ट्रिगर करने के लिए, बैक-एंड संसाधनों में बदलाव करने के लिए Emulator Suite UI या अपने ऐप्लिकेशन या टेस्ट कोड को एम्युलेटर से कनेक्ट करके अपने प्लैटफ़ॉर्म के SDK टूल का इस्तेमाल करके.

एक्सटेंशन से जनरेट होने वाले कस्टम इवेंट के लिए, हैंडलर की जांच करें

Firebase Extensions कस्टम इवेंट को मैनेज करने के लिए लागू किए गए फ़ंक्शन के लिए Cloud Functions वर्शन 2 के साथ, Cloud Functions एम्युलेटर, सहायता के लिए Eventarc एम्युलेटर Eventarc ट्रिगर.

इवेंट ट्रिगर करने वाले एक्सटेंशन के लिए, कस्टम इवेंट हैंडलर की जांच करने के लिए, आपको इसे इंस्टॉल करना होगा Cloud Functions और Eventarc एम्युलेटर.

Cloud Functions रनटाइम, EVENTARC_EMULATOR एनवायरमेंट को सेट करता है मौजूदा प्रोसेस में वैरिएबल localhost:9299 के लिए होगा, अगर Eventarc एम्युलेटर चल रहा है. Firebase Admin SDKs अपने-आप Eventarc से कनेक्ट हो जाते हैं एम्युलेटर, जब EVENTARC_EMULATOR एनवायरमेंट वैरिएबल सेट हो. आप कॉन्फ़िगर करें Local Emulator Suite में बताए गए तरीके के मुताबिक, डिफ़ॉल्ट पोर्ट में बदलाव करें.

एनवायरमेंट वैरिएबल सही तरीके से कॉन्फ़िगर किए जाने पर, Firebase Admin SDK अपने-आप Eventarc एम्युलेटर पर इवेंट भेजता है. इसके बदले में, Eventarc एम्युलेटर, Cloud Functions एम्युलेटर को वापस कॉल करता है, ताकि रजिस्टर्ड हैंडलर.

Emulator Suite UI में फ़ंक्शन लॉग देखें, ताकि आपको इनके बारे में जानकारी मिल सके हैंडलर एक्ज़ीक्यूशन.

लोकल टेस्टिंग एनवायरमेंट कॉन्फ़िगर करना

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

लोकल Cloud Functions एम्युलेटर का इस्तेमाल करते समय, आपके पास एनवायरमेंट को बदलने का विकल्प होता है .env.local फ़ाइल सेट अप करके, अपने प्रोजेक्ट के लिए वैरिएबल सेट अप करें. इसकी सामग्री .env.local को .env और प्रोजेक्ट के हिसाब से बनी .env फ़ाइल के मुकाबले प्राथमिकता दी जाती है.

उदाहरण के लिए, एक प्रोजेक्ट में ये तीन फ़ाइलें शामिल हो सकती हैं, जिनमें डेवलपमेंट और लोकल टेस्टिंग के लिए अलग-अलग वैल्यू हो सकती हैं:

.env .env.dev .env.local
PLANET=पृथ्वी

ऑडियंस=इंसान

ऑडियंस=देव इंसान ऑडियंस=स्थानीय इंसान

स्थानीय संदर्भ में शुरू किए जाने पर, एम्युलेटर, एनवायरमेंट को लोड करता है वैरिएबल दिखाए गए हैं:

  $ firebase emulators:start
  i  emulators: Starting emulators: functions
  # Starts emulator with following environment variables:
  #  PLANET=Earth
  #  AUDIENCE=Local Humans

Cloud Functions एम्युलेटर में मौजूद सीक्रेट और क्रेडेंशियल

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

एनवायरमेंट वैरिएबल के लिए Cloud Functions एम्युलेटर सपोर्ट की तरह ही, इसमें भी ये काम किए जा सकते हैं .secret.local फ़ाइल सेट अप करके, सीक्रेट वैल्यू बदलें. इससे यह इससे आपके लिए स्थानीय तौर पर हर फ़ंक्शन की जांच करना आसान हो जाता है, खास तौर पर तब, जब आपके पास ऐक्सेस नहीं हो सीक्रेट वैल्यू में बदलें.

Cloud Functions की जांच करने के लिए और कौनसे टूल मौजूद हैं?

Cloud Functions एम्युलेटर को अन्य प्रोटोटाइप और टेस्ट के साथ जोड़ा गया है टूल:

  • Cloud Functions शेल है, जिसकी मदद से इंटरैक्टिव और बार-बार फ़ंक्शन करने की सुविधा मिलती है प्रोटोटाइपिंग और डेवलपमेंट शामिल हैं. शेल, Cloud Functions एम्युलेटर का इस्तेमाल जो डेवलपमेंट के लिए REPL शैली का इंटरफ़ेस है. के साथ कोई इंटिग्रेशन नहीं Cloud Firestore या Realtime Database एम्युलेटर दिए गए हैं. शेल का उपयोग करके, आप जो प्रॉडक्ट के साथ इंटरैक्शन को सिम्युलेट करने के लिए फ़ंक्शन कॉल करता है फ़िलहाल, Local Emulator Suite में Analytics, Remote Config, और Crashlytics का इस्तेमाल करें.
  • Cloud Functions के लिए Firebase टेस्ट SDK टूल, जो मोका फ़्रेमवर्क के साथ एक Node.js है का इस्तेमाल किया जाता है. इसके बाद, Cloud Functions Test SDK टूल Cloud Functions शेल के ऊपर मौजूद ऑटोमेशन की सुविधा है.

Cloud Functions शेल और Cloud Functions टेस्ट SDK टूल के बारे में ज़्यादा जानकारी मिल सकती है फ़ंक्शन को इंटरैक्टिव तरीके से टेस्ट करें और Cloud Functions की यूनिट टेस्टिंग.

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

Cloud Functions एम्युलेटर, प्रोडक्शन एनवायरमेंट के काफ़ी करीब है का काफ़ी इस्तेमाल किया जा सकता है. हमने हर चीज़ को पक्का करने के लिए कड़ी मेहनत की है नोड रनटाइम में ज़्यादा से ज़्यादा प्रोडक्शन शुरू हो जाता है. हालांकि, एम्युलेटर, पूरी तरह कंटेनर बनाए गए प्रोडक्शन एनवायरमेंट की नकल नहीं करता, इसलिए, जबकि आपका फ़ंक्शन कोड वा��्तविक रूप से, आपके एनवायरमेंट (जैसे कि लोकल फ़ाइलें, फ़ंक्शन क्रैश होने के बाद व्यवहार वगैरह) को अलग-अलग हैं.

Cloud IAM

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

मेमोरी और प्रोसेसर से जुड़ी पाबंदियां

एम्युलेटर, आपके फ़ंक्शन. हालांकि, एम्युलेटर इनके ज़रिए टाइम आउट फ़ंक्शन का इस्तेमाल करता है: timeoutSeconds रनटाइम आर्ग्युमेंट.

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

स्थानीय और प्रोडक्शन के माहौल में अंतर को ध्यान में रखना

एम्युलेटर, आपकी लोकल मशीन पर चलता है. इसलिए, यह आपकी लोकल मशीन पर निर्भर करता है ऐप्लिकेशन, बिल्ट-इन प्रोग्राम, और काम की सेवाओं के लिए सुरक्षित माहौल मिलता है.

ध्यान रखें कि Cloud Functions को डेवलप करने के लिए, आपके लोकल एनवायरमेंट का इस्तेमाल किया जा सकता है ये Google प्रोडक्शन एनवायरमेंट से अलग होते हैं:

  • वे ��प्लिकेशन जिन्हें आप प्रोडक्शन एनवायरमेंट को सिम्युलेट करने के लिए स्थानीय तौर पर इंस्टॉल करते हैं (उदाहरण के लिए, इस ट्यूटोरियल से ImageMagick) प्रोडक्शन से अलग व्यवहार हो सकता है, खास तौर पर तब, जब आपको वर्शन या बिना Linux वाले एनवायरमेंट में डेवलप किया जा सकता है. अपनी ऑडियंस की मदद करें आपके फ़ंक्शन डिप्लॉयमेंट के साथ जो प्रोग्राम मौजूद नहीं है उसकी बाइनरी कॉपी.

  • इसी तरह, पहले से मौजूद सुविधाएं (जैसे, ls, mkdir) जैसे शेल कमांड ये प्रोडक्शन में उपलब्ध वर्शन से अलग होते हैं. खास तौर पर तब, जब आपको गैर-Linux एनवायरमेंट (उदाहरण के लिए, macOS). इस समस्या को हल करने के लिए, नेटिव कमांड के बजाय नोड-ओनली विकल्प का इस्तेमाल करें या Linux बाइनरी बनाकर अपने डिप्लॉयमेंट के साथ बंडल जोड़ें.

फिर से प्रयास कर रहा है

Cloud Functions एम्युलेटर, गड़बड़ी होने पर फिर से कोशिश करने वाले फ़ंक्शन के साथ काम नहीं करता.

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