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