Cloud Functions रीजनल है. इसका मतलब है कि आपके फ़ंक्शन को चलाने वाला इन्फ़्रास्ट्रक्चर, कुछ खास इलाकों में मौजूद है. साथ ही, इसे Google मैनेज करता है, ताकि यह उन इलाकों के सभी ज़ोन में उपलब्ध रहे.
अपने फ़ंक्शन चलाने के लिए क्षेत्र चुनते समय, आपको इंतज़ार का समय और उपलब्धता को ध्यान में रखना चाहिए. आम तौर पर, अपने उपयोगकर्ताओं के आस-पास के इलाके चुने जा सकते हैं. हालांकि, आपको उन अन्य प्रॉडक्ट और सेवाओं की जगह की जानकारी पर भी ध्यान देना चाहिए जिनका इस्तेमाल आपका ऐप्लिकेशन करता है. एक से ज़्यादा क्षेत्रों में सेवाओं का इस्तेमाल करने से, आपके ऐप्लिकेशन की इंतज़ार की अवधि और कीमत पर असर पड़ सकता है.
डिफ़ॉल्ट रूप से, Firebase CLI आपके प्रोजेक्ट के कॉन्फ़िगरेशन के आधार पर, किसी क्षेत्र में फ़ंक्शन डिप्लॉय करता है. इवेंट के आधार पर ट्रिगर होने वाले फ़ंक्शन के लिए, यह आम तौर पर ट्रिगर करने वाले डेटा सोर्स के क्षेत्र (जैसे, Cloud Firestore डेटाबेस या Cloud Storage बकेट) में डिप्लॉय होता है. साथ ही, फ़ॉलबैक के तौर पर us-central1 में डिप्लॉय होता है.
डिप्लॉय करने के बाद, Firebase कंसोल में जाकर या firebase functions:list चलाकर, क्षेत्र की पुष्टि की जा सकती है. अगर आपको अपने फ़ंक्शन को किसी दूसरे इलाके में चलाना है, तो उसका इलाका बदला जा सकता है.
उपलब्धता वाले देश या इलाके
इस सेक्शन में मौजूद सूचियों में, energy_savings_leaf आइकॉन से पता चलता है कि इस इलाके में बिजली का उत्पादन, कम कार्बन उत्सर्जन के साथ किया जाता है. ज़्यादा जानकारी के लिए, Google Cloud के क्षेत्रों के लिए कार्बन-फ़्री ऊर्जा लेख पढ़ें.
टियर 1 की कीमत
Cloud Functions, टियर 1 की कीमत के साथ इन देशों/इलाकों में उपलब्ध है:
| क्षेत्र | जगह | प्रॉडक्ट के इस्तेमाल किए जा सकने वाले वर्शन | CO2 उत्सर्जन |
|---|---|---|---|
africa-south1 |
जोहानेसबर्ग | सिर्फ़ दूसरी जनरेशन | |
asia-east1 |
ताइवान | 1st gen, 2nd gen | |
asia-east2 |
हॉन्ग कॉन्ग | सिर्फ़ पहली जनरेशन | |
asia-northeast1 |
टोक्यो | 1st gen, 2nd gen | |
asia-northeast2 |
ओसाका | 1st gen, 2nd gen | |
europe-north1 |
फ़िनलैंड | सिर्फ़ दूसरी जनरेशन | energy_savings_leaf |
europe-southwest1 |
मैड्रिड | सिर्फ़ दूसरी जनरेशन | |
europe-west1 |
बेल्जियम | 1st gen, 2nd gen | energy_savings_leaf |
europe-west4 |
नीदरलैंड्स | सिर्फ़ दूसरी जनरेशन | |
europe-west8 |
मिलान | सिर्फ़ दूसरी जनरेशन | |
europe-west9 |
पेरिस | सिर्फ़ दूसरी जनरेशन | energy_savings_leaf |
me-west1 |
तेल अवीव | सिर्फ़ दूसरी जनरेशन | |
europe-west2 |
लंदन | सिर्फ़ पहली जनरेशन | |
us-central1 |
आयोवा | 1st gen, 2nd gen | energy_savings_leaf |
us-east1 |
दक्षिण कैरोलाइना | 1st gen, 2nd gen | |
us-east4 |
उत्तरी वर्जीनिया | 1st gen, 2nd gen | |
us-east5 |
कोलंबस | सिर्फ़ दूसरी जनरेशन | |
us-south1 |
डैलस | सिर्फ़ दूसरी जनरेशन | |
us-west1 |
ओरेगन | 1st gen, 2nd gen | energy_savings_leaf |
टियर 2 की कीमत
Cloud Functions, टीयर 2 की कीमत के साथ इन देशों/इलाकों में उपलब्ध है:
| क्षेत्र | जगह | प्रॉडक्ट के इस्तेमाल किए जा सकने वाले वर्शन | CO2 उत्सर्जन |
|---|---|---|---|
asia-east2 |
हॉन्ग कॉन्ग | सिर्फ़ दूसरी जनरेशन | |
asia-northeast3 |
सोल | 1st gen, 2nd gen | |
asia-southeast1 |
सिंगापुर | 1st gen, 2nd gen | |
asia-southeast2 |
जकार्ता | 1st gen, 2nd gen | |
asia-south1 |
मुंबई | सिर्फ़ दूसरी जनरेशन | |
asia-south2 |
दिल्ली, भारत | सिर्फ़ दूसरी जनरेशन | |
australia-southeast1 |
सिडनी | 1st gen, 2nd gen | |
australia-southeast2 |
मेलबर्न | सिर्फ़ दूसरी जनरेशन | |
europe-central2 |
वॉरसॉ | 1st gen, 2nd gen | |
europe-west2 |
लंदन | सिर्फ़ दूसरी जनरेशन | |
europe-west3 |
फ़्रैंकफ़र्ट | 1st gen, 2nd gen | energy_savings_leaf |
europe-west6 |
ज़्यूरिख़ | 1st gen, 2nd gen | energy_savings_leaf |
europe-west10 |
बर्लिन | सिर्फ़ दूसरी जनरेशन | |
europe-west12 |
टूरीन | सिर्फ़ दूसरी जनरेशन | |
me-central1 |
दोहा | सिर्फ़ दूसरी जनरेशन | |
me-central2 |
दम्माम | सिर्फ़ दूसरी जनरेशन | |
northamerica-northeast1 |
मॉन्ट्रियल | 1st gen, 2nd gen | energy_savings_leaf |
northamerica-northeast2 |
टोरंटो | सिर्फ़ दूसरी जनरेशन | energy_savings_leaf |
southamerica-east1 |
साओ पौलो | 1st gen, 2nd gen | energy_savings_leaf |
southamerica-west1 |
सैंटियागो, चिली | सिर्फ़ दूसरी जनरेशन | |
us-west2 |
लॉस एंजेलिस | 1st gen, 2nd gen | |
us-west3 |
सॉल्ट लेक सिटी | 1st gen, 2nd gen | |
us-west4 |
लास वेगस | 1st gen, 2nd gen |
किसी प्रोजेक्ट के किसी क्षेत्र में मौजूद फ़ंक्शन के नाम यूनीक होने चाहिए. हालांकि, इन नामों में केस-इनसेंसिटिव (अपरकेस और लोअरकेस में अंतर न करना) हो सकता है. हालांकि, अलग-अलग क्षेत्रों या प्रोजेक्ट में मौजूद फ़ंक्शन के नाम एक जैसे हो सकते हैं.
किसी क्षेत्र की जानकारी देने के सबसे सही तरीके
डिफ़ॉल्ट रूप से, Firebase CLI आपके प्रोजेक्ट के कॉन्फ़िगरेशन के आधार पर, किसी क्षेत्र में फ़ंक्शन डिप्लॉय करता है. इवेंट-ड्रिवन फ़ंक्शन के लिए, यह आम तौर पर ट्रिगर करने वाले डेटा सोर्स के क्षेत्र (जैसे, Cloud Firestore डेटाबेस या Cloud Storage बकेट) में डिप्लॉय होता है. साथ ही, फ़ॉलबैक के तौर पर us-central1 में डिप्लॉय होता है.
हमारा सुझाव है कि आप Firebase की डिफ़ॉल्ट सेटिंग पर भरोसा करने के बजाय, खास क्षेत्र सेट करें. ऐसा इसलिए, क्योंकि डिफ़ॉल्ट सेटिंग समय के साथ बदल सकती हैं. क्षेत्र सेट करते समय, हर ट्रिगर टाइप के लिए इस सेक्शन में दिए गए सुझावों का पालन करें
कोई फ़ंक्शन किस क्षेत्र में काम करे, यह सेट करने के लिए, फ़ंक्शन की परिभाषा में region पैरामीटर को सेट करें. इसके लिए, यहां दिया गया तरीका अपनाएं:
Node.js
exports.firestoreAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
Python
# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
pass
# After
@firestore_fn.on_document_created("my-collection/{docId}",
region="asia-northeast1")
def firestore_trigger_asia(event):
pass
region में कॉमा लगाकर अलग किए गए कई रीजन स्ट्रिंग पास करके, एक से ज़्यादा रीजन तय किए जा सकते हैं. यह भी ध्यान रखें कि बैकग्राउंड में ट्रिगर होने वाले कई टाइप के लिए कोई इलाका तय करते समय, आपको इलाके के साथ-साथ सही इवेंट फ़िल्टर भी तय करना होगा. ऊपर दिए गए उदाहरण में, यह Cloud Firestore document है, जो इवेंट को ट्रिगर करता है. Cloud Storage ट्रिगर के लिए, इवेंट फ़िल्टर bucket हो सकता है. Pub/Sub ट्रिगर के लिए, यह topic होगा. इसी तरह, अन्य ट्रिगर के लिए भी इवेंट फ़िल्टर अलग-अलग हो सकते हैं.
प्रॉडक्शन ट्रैफ़िक को मैनेज करने वाले फ़ंक्शन के लिए क्षेत्र बदलने के बारे में ज़्यादा जानकारी के लिए, फ़ंक्शन का क्षेत्र बदलना देखें.
एचटीटीपी और क्लाइंट-कॉलेबल फ़ंक्शन
एचटीटीपी और कॉल किए जा सकने वाले फ़ंक्शन के लिए, हमारा सुझाव है कि आप सबसे पहले अपने फ़ंक्शन को डेस्टिनेशन रीजन पर सेट करें या उस जगह के सबसे नज़दीक सेट करें जहां आपके ज़्यादातर संभावित ग्राहक मौजूद हैं. इसके बाद, अपने ओरिजनल फ़ंक्शन में बदलाव करें, ताकि उसके एचटीटीपी अनुरोध को नए फ़ंक्शन पर रीडायरेक्ट किया जा सके. दोनों फ़ंक्शन का नाम एक जैसा हो सकता है. अगर आपके एचटीटीपी फ़ंक्शन के क्लाइंट रीडायरेक्ट करने की सुविधा के साथ काम करते हैं, तो अपने ओरिजनल फ़ंक्शन को बदलकर, एचटीटीपी रीडायरेक्ट स्टेटस (301) के साथ-साथ अपने नए फ़ंक्शन का यूआरएल दिखाया जा सकता है. अगर आपके क्लाइंट रीडायरेक्ट को ठीक से मैनेज नहीं करते हैं, तो आपके पास ओरिजनल फ़ंक्शन से नए फ़ंक्शन पर अनुरोध को प्रॉक्सी करने का विकल्प होता है. इसके लिए, ओरिजनल फ़ंक्शन से नए फ़ंक्शन पर नया अनुरोध शुरू करना होगा. आखिरी चरण में, यह पक्का करें कि सभी क्लाइंट नए फ़ंक्शन को कॉल कर रहे हों.
कॉल किए जा सकने वाले फ़ंक्शन के लिए, क्लाइंट-साइड पर जगह की जानकारी चुनने की सुविधा
कॉल किए जा सकने वाले फ़ंक्शन के लिए, क्लाइंट से कॉल किए जा सकने वाले सेटअप को एचटीटीपी फ़ंक्शन के लिए तय किए गए दिशा-निर्देशों का पालन करना चाहिए. क्लाइंट किसी क्षेत्र की जानकारी भी दे सकता है. अगर फ़ंक्शन, प्रोजेक्ट के डिफ़ॉल्ट क्षेत्र के अलावा किसी अन्य क्षेत्र में चलता है, तो क्लाइंट को ऐसा करना चाहिए.
क्लाइंट पर क्षेत्र सेट करने के लिए, शुरू करते समय अपनी पसंद का क्षेत्र बताएं:
Swift
lazy var functions = Functions.functions(region:"europe-west1")
Objective-C
@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];
वेब
var functions = firebase.app().functions('europe-west1');
Android
private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");
C++
firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");
Unity
firebase.Functions.FirebaseFunctions functions;
functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");
बैकग्राउंड फ़ंक्शन
बैकग्राउंड फ़ंक्शन, कम से कम एक बार इवेंट डिलीवरी सिमैंटिक को अपनाते हैं. इसका मतलब है कि कुछ मामलों में उन्हें डुप्लीकेट इवेंट मिल सकते हैं. इसलिए, आपको ऐसे फ़ंक्शन लागू करने चाहिए जो आइडमपोटेंट हों. अगर आपका फ़ंक्शन पहले से ही आइडेंपोटेंट है, तो फ़ंक्शन को नए इलाके में उसी इवेंट ट्रिगर के साथ फिर से डिप्लॉय किया जा सकता है. साथ ही, यह पुष्टि करने के बाद कि नए फ़ंक्शन को सही तरीके से ट्रैफ़िक मिल रहा है, पुराने फ़ंक्शन को हटाया जा सकता है. इस ट्रांज़िशन के दौरान, दोनों फ़ंक्शन को इवेंट मिलेंगे. फ़ंक्शन के लिए क्षेत्र बदलने के लिए, कमांड के सुझाए गए क्रम के बारे में जानने के लिए, फ़ंक्शन का क्षेत्र बदलना देखें.
अगर आपका फ़ंक्शन फ़िलहाल आइडेंपोटेंट नहीं है या इसकी आइडेंपोटेंसी किसी क्षेत्र से बाहर काम नहीं करती है, तो हमारा सुझाव है कि फ़ंक्शन को माइग्रेट करने से पहले, आइडेंपोटेंसी को लागू करें.
इवेंट ट्रिगर के टाइप के हिसाब से, सबसे सही क्षेत्र के सुझाव अलग-अलग होते हैं:
| ट्रिगर का प्रकार | क्षेत्र के हिसाब से सुझाव |
|---|---|
| Cloud Firestore | Cloud Firestore इंस्टेंस की जगह के सबसे नज़दीकी इलाका (अगला सेक्शन देखें) |
| Realtime Database | Realtime Database इंस्टेंस वाला क्षेत्र |
| Cloud Storage | Cloud Storage बकेट की जगह के सबसे नज़दीकी क्षेत्र (अगला सेक्शन देखें) |
| अन्य | अगर फ़ंक्शन के अंदर किसी Realtime Database इंस्टेंस, Cloud Firestore इंस्टेंस या Cloud Storage बकेट के साथ इंटरैक्ट किया जा रहा है, तो हमारा सुझाव है कि आप वही क्षेत्र चुनें जो इनमें से किसी संसाधन से ट्रिगर होने वाले फ़ंक्शन के लिए चुना जाता. Firebase Hosting से कनेक्ट किए गए फ़ंक्शन किसी भी इलाके में हो सकते हैं. हालांकि, सुझावों के लिए सर्वरलेस होस्टिंग की खास जानकारी देखें. |
Cloud Firestore और Cloud Storage जगहों के आधार पर क्षेत्र चुने जा रहे हैं
फ़ंक्शन के लिए उपलब्ध क्षेत्र, हमेशा आपके Cloud Firestore डेटाबेस और Cloud Storage बकेट के लिए उपलब्ध क्षेत्रों से पूरी तरह मेल नहीं खाते.
ध्यान दें कि अगर आपका फ़ंक्शन और संसाधन (डेटाबेस इंस्टेंस या Cloud Storage बकेट) अलग-अलग जगहों पर हैं, तो आपको ज़्यादा इंतज़ार का समय और बिलिंग की लागत का अनुभव हो सकता है.
यहां Cloud Firestore और Cloud Storage के लिए, फ़ंक्शन की सुविधा वाले सबसे नज़दीकी इलाकों की मैपिंग दी गई है. ऐसा उन मामलों के लिए किया गया है जहां एक ही इलाके में यह सुविधा नहीं है:
| Cloud Firestore और Cloud Storage के लिए क्षेत्र/एक से ज़्यादा क्षेत्र | फ़ंक्शन के लिए सबसे नज़दीकी इलाका |
|---|---|
nam5 या us-central (एक से ज़्यादा क्षेत्र) |
us-central1 |
eur3 या europe-west (एक से ज़्यादा क्षेत्र) |
europe-west1 |
europe-west4 (नीदरलैंड्स) |
europe-west1 |
asia-south1 (मुंबई) |
asia-east2 |
asia-south2 (दिल्ली) |
asia-east2 |
australia-southeast2 (मेलबर्न) |
australia-southeast1 |