Cloud Functions की जगहें

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