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 |
ताइवान | पहली पीढ़ी, दूसरी पीढ़ी | |
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 |
सॉल्ट लेक सिटी | पहली पीढ़ी, दूसरी पीढ़ी | |
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 |