Cloud Functions एक क्षेत्रीय सेवा है. इसका मतलब है कि आपके फ़ंक्शन को चलाने वाला इन्फ़्रास्ट्रक्चर, कुछ खास क्षेत्रों में मौजूद है. साथ ही, Google इसे मैनेज करता है, ताकि यह उन क्षेत्रों के सभी ज़ोन में उपलब्ध रहे.
फ़ंक्शन चलाने के लिए इलाके चुनते समय, आपको मुख्य तौर पर इन बातों का ध्यान रखना चाहिए: लेटेन्सी और उपलब्धता. आम तौर पर, अपने उपयोगकर्ताओं के आस-पास के इलाके चुने जा सकते हैं. हालांकि, आपको अन्य प्रॉडक्ट और सेवाओं की जगह की जानकारी भी देखनी चाहिए, जिनका इस्तेमाल आपका ऐप्लिकेशन करता है. एक से ज़्यादा क्षेत्रों में सेवाओं का इस्तेमाल करने से, आपके ऐप्लिकेशन की लेटेन्सी और कीमत पर असर पड़ सकता है.
डिफ़ॉल्ट रूप से, फ़ंक्शन us-central1
क्षेत्र में चलते हैं. ध्यान दें कि यह Cloud Storage बकेट जैसे इवेंट सोर्स के क्षेत्र से अलग हो सकता है.
इस पेज पर आगे, उस इलाके के बारे में बताने का तरीका जानें जहां फ़ंक्शन काम करता है.
इन देशों और इलाकों में मान्य है
इस सेक्शन में दी गई सूचियों में, energy_savings_leaf आइकॉन से पता चलता है कि इस इलाके के लिए बिजली का उत्पादन, कम कार्बन उत्सर्जन वाले स्रोत से किया जाता है. ज़्यादा जानकारी के लिए, Google Cloud क्षेत्रों के लिए कार्बन का उत्सर्जन न करने वाली ऊर्जा लेख पढ़ें.
टियर 1 की कीमत
Cloud Functions इन देशों/इलाकों में टियर 1 की कीमत पर उपलब्ध है:
क्षेत्र | जगह | प्रॉडक्ट के इस्तेमाल किए जा सकने वाले वर्शन | CO2 उत्सर्जन |
---|---|---|---|
africa-south1 |
जोहानेसबर्ग | सिर्फ़ 2nd gen | |
asia-east1 |
ताइवान | 1st gen, 2nd gen | |
asia-east2 |
हॉन्ग कॉन्ग | सिर्फ़ पहली जनरेशन के लिए | |
asia-northeast1 |
टोक्यो | 1st gen, 2nd gen | |
asia-northeast2 |
ओसाका | 1st gen, 2nd gen | |
europe-north1 |
फ़िनलैंड | सिर्फ़ 2nd gen | energy_savings_leaf |
europe-southwest1 |
मैड्रिड | सिर्फ़ 2nd gen | |
europe-west1 |
बेल्जियम | 1st gen, 2nd gen | energy_savings_leaf |
europe-west4 |
नीदरलैंड्स | सिर्फ़ 2nd gen | |
europe-west8 |
मिलान | सिर्फ़ 2nd gen | |
europe-west9 |
पेरिस | सिर्फ़ 2nd gen | energy_savings_leaf |
me-west1 |
तेल अवीव | सिर्फ़ 2nd gen | |
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 |
कोलंबस | सिर्फ़ 2nd gen | |
us-south1 |
डैलस | सिर्फ़ 2nd gen | |
us-west1 |
ओरेगन | 1st gen, 2nd gen | energy_savings_leaf |
टियर 2 की कीमत
Cloud Functions इन देशों/इलाकों में टीयर 2 की कीमत पर उपलब्ध है:
क्षेत्र | जगह | प्रॉडक्ट के इस्तेमाल किए जा सकने वाले वर्शन | CO2 उत्सर्जन |
---|---|---|---|
asia-east2 |
हॉन्ग कॉन्ग | सिर्फ़ 2nd gen | |
asia-northeast3 |
सोल | 1st gen, 2nd gen | |
asia-southeast1 |
सिंगापुर | 1st gen, 2nd gen | |
asia-southeast2 |
जकार्ता | 1st gen, 2nd gen | |
asia-south1 |
मुंबई | सिर्फ़ 2nd gen | |
asia-south2 |
दिल्ली, भारत | सिर्फ़ 2nd gen | |
australia-southeast1 |
सिडनी | 1st gen, 2nd gen | |
australia-southeast2 |
मेलबर्न | सिर्फ़ 2nd gen | |
europe-central2 |
वॉरसॉ | 1st gen, 2nd gen | |
europe-west2 |
लंदन | सिर्फ़ 2nd gen | |
europe-west3 |
फ़्रैंकफ़र्ट | 1st gen, 2nd gen | energy_savings_leaf |
europe-west6 |
ज़्यूरिख़ | 1st gen, 2nd gen | energy_savings_leaf |
europe-west10 |
बर्लिन | सिर्फ़ 2nd gen | |
europe-west12 |
टूरीन | सिर्फ़ 2nd gen | |
me-central1 |
दोहा | सिर्फ़ 2nd gen | |
me-central2 |
दम्माम | सिर्फ़ 2nd gen | |
northamerica-northeast1 |
मॉन्ट्रियल | 1st gen, 2nd gen | energy_savings_leaf |
northamerica-northeast2 |
टोरंटो | सिर्फ़ 2nd gen | energy_savings_leaf |
southamerica-east1 |
साओ पौलो | 1st gen, 2nd gen | energy_savings_leaf |
southamerica-west1 |
सैंटियागो, चिली | सिर्फ़ 2nd gen | |
us-west2 |
लॉस एंजेलिस | 1st gen, 2nd gen | |
us-west3 |
सॉल्ट लेक सिटी | 1st gen, 2nd gen | |
us-west4 |
लास वेगस | 1st gen, 2nd gen |
किसी प्रोजेक्ट के किसी क्षेत्र में मौजूद फ़ंक्शन के नाम, केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) नहीं होने चाहिए. हालांकि, अलग-अलग क्षेत्रों या अलग-अलग प्रोजेक्ट में मौजूद फ़ंक्शन के नाम एक जैसे हो सकते हैं.
किसी क्षेत्र की जानकारी देने के सबसे सही तरीके
डिफ़ॉल्ट रूप से, फ़ंक्शन us-central1
क्षेत्र में चलते हैं. ध्यान दें कि यह Cloud Storage बकेट जैसे इवेंट सोर्स के क्षेत्र से अलग हो सकता है. अगर आपको उस इलाके के बारे में बताना है जहां कोई फ़ंक्शन चलता है, तो हर फ़ंक्शन ट्रिगर टाइप के लिए, इस सेक्शन में दिए गए सुझावों का पालन करें.
किसी फ़ंक्शन के चलने की जगह सेट करने के लिए, फ़ंक्शन की परिभाषा में 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) दिखाएं. साथ ही, अपने नए फ़ंक्शन का यूआरएल भी दिखाएं. अगर आपके क्लाइंट, रीडायरेक्ट को अच्छी तरह से हैंडल नहीं करते हैं, तो ओरिजनल फ़ंक्शन से नए फ़ंक्शन पर नया अनुरोध करके, अनुरोध को प्रॉक्सी किया जा सकता है. आखिरी चरण में, यह पक्का करना होता है कि सभी क्लाइंट नए फ़ंक्शन को कॉल कर रहे हों.
कॉल किए जा सकने वाले फ़ंक्शन के लिए, क्लाइंट-साइड पर जगह की जानकारी चुनने की सुविधा
कॉल किए जा सकने वाले फ़ंक्शन के लिए, क्लाइंट से कॉल किए जा सकने वाले सेटअप को एचटीटीपी फ़ंक्शन के लिए बनी गाइडलाइन का पालन करना चाहिए. क्लाइंट, क्षेत्र की जानकारी भी दे सकता है. अगर फ़ंक्शन us-central1
के अलावा किसी अन्य क्षेत्र में चलता है, तो क्लाइंट को यह जानकारी ज़रूर देनी चाहिए.
क्लाइंट पर क्षेत्र सेट करने के लिए, शुरुआत में ही मनचाहा क्षेत्र तय करें:
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 | हमेशा us-central1 |
Cloud Storage | Cloud Storage बकेट की जगह की जानकारी के हिसाब से सबसे नज़दीकी क्षेत्र (अगला सेक्शन देखें) |
अन्य | अगर फ़ंक्शन के अंदर किसी Realtime Database इंस्टेंस, Cloud Firestore इंस्टेंस या Cloud Storage बकेट के साथ इंटरैक्ट किया जा रहा है, तो सुझाया गया क्षेत्र वही होगा जो इन संसाधनों में से किसी एक से ट्रिगर किए गए फ़ंक्शन के लिए होता है. ऐसा न होने पर, us-central1 के डिफ़ॉल्ट क्षेत्र का इस्तेमाल करें.
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 |