Cloud Functions की जगहें

Cloud Functions रीजनल है. इसका मतलब है कि आपके फ़ंक्शन को चलाने वाला इन्फ़्रास्ट्रक्चर, कुछ खास इलाकों में मौजूद होता है. साथ ही, Google इसे उन इलाकों के सभी ज़ोन में बिना किसी शुल्क के उपलब्ध कराने के लिए मैनेज करता है.

किन क्षेत्रों में फ़ंक्शन चलाना है, यह चुनते समय सबसे पहले इंतज़ार का समय और उपलब्धता पर ध्यान दिया जाना चाहिए. आम तौर पर, अपने उपयोगकर्ताओं के आस-पास के इलाके चुने जा सकते हैं. हालांकि, आपको उन अन्य प्रॉडक्ट और सेवाओं की जगह की जानकारी को भी ध्यान में रखना चाहिए जिनका इस्तेमाल आपका ऐप्लिकेशन करता है. कई क्षेत्रों में सेवाएं इस्तेमाल करने से, आपके ऐप्लिकेशन के लोड होने में लगने वाले समय के साथ-साथ, कीमत पर भी असर पड़ सकता है.

डिफ़ॉल्ट रूप से, फ़ंक्शन us-central1 क्षेत्र में चलते हैं. ध्यान दें कि यह इवेंट सोर्स के क्षेत्र से अलग हो सकता है, जैसे कि Cloud Storage बकेट. इस पेज पर बाद में, उस इलाके के बारे में बताने का तरीका जानें जहां फ़ंक्शन चलता है.

इन देशों और इलाकों में मान्य है

इस सेक्शन में दी गई सूचियों में, energy_savings_leaf आइकॉन से पता चलता है कि इस इलाके में बिजली कम कार्बन उत्सर्जन करती है. ज़्यादा जानकारी के लिए, Google Cloud के क्षेत्रों में कार्बन-फ़्री ऊर्जा का इस्तेमाल लेख पढ़ें.

टियर 1 की कीमत के साथ, Cloud Functions इन देशों/इलाकों में उपलब्ध है:

  • asia-east1 (ताइवान)
  • सिर्फ़ asia-east2 (हॉन्ग कॉन्ग) 1st gen
  • asia-northeast1 (टोक्यो)
  • asia-northeast2 (ओसाका)
  • europe-north1 (फ़िनलैंड) energy_savings_leaf सिर्फ़ 2nd gen
  • europe-west1 (बेल्जियम) energy_savings_leaf
  • सिर्फ़ europe-west2 (लंदन) 1st gen
  • us-central1 (आयोवा) energy_savings_leaf
  • us-east1 (दक्षिण कैरोलाइना)
  • us-east4 (उत्तरी वर्जीनिया)
  • us-west1 (ओरेगन) energy_savings_leaf

टियर 2 की कीमत के साथ, Cloud Functions इन देशों/इलाकों में उपलब्ध है:

  • सिर्फ़ asia-east2 (हॉन्ग कॉन्ग) 2nd gen
  • asia-northeast3 (सोल)
  • asia-southeast1 (सिंगापुर)
  • asia-southeast2 (जकार्ता)
  • सिर्फ़ asia-south1 (मुंबई) 2nd gen
  • australia-southeast1 (सिडनी)
  • सिर्फ़ australia-southeast2 (मेलबर्न) 2nd gen
  • europe-central2 (वारसॉ)
  • सिर्फ़ europe-west2 (लंदन) 2nd gen
  • europe-west3 (फ़्रैंकफ़र्ट)
  • europe-west6 (ज़्यूरिख) energy_savings_leaf
  • northamerica-northeast1 (मॉन्ट्रियल) energy_savings_leaf
  • northamerica-northeast2 (टोरंटो) energy_savings_leaf सिर्फ़ 2nd gen
  • southamerica-east1 (साओ पाओलो) energy_savings_leaf
  • southamerica-west1 (सैंटियागो, चिली) सिर्फ़ 2nd gen
  • us-west2 (लॉस एंजेलिस)
  • us-west3 (साल्ट लेक सिटी)
  • us-west4 (लास वेगास)

किसी प्रोजेक्ट में, किसी इलाके के फ़ंक्शन के यूनीक (केस-इनसेंसिटिव) नाम होने चाहिए. हालांकि, हो सकता है कि अलग-अलग क्षेत्रों या सभी प्रोजेक्ट में मौजूद फ़ंक्शन के नाम एक जैसे हों.

क्षेत्र तय करने के सबसे सही तरीके

डिफ़ॉल्ट रूप से, फ़ंक्शन 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");

बैकग्राउंड के फ़ंक्शन

बैकग्राउंड फ़ंक्शन, कम से कम एक बार इवेंट डिलीवरी सिमैंटिक का इस्तेमाल करते हैं. इसका मतलब है कि कुछ मामलों में, उन्हें डुप्लीकेट इवेंट मिल सकते हैं. इसलिए, आपको फ़ंक्शन को idempoent होने के लिए लागू करना चाहिए. अगर आपका फ़ंक्शन पहले से ही तय है, तो आप उसी इवेंट ट्रिगर के साथ नए क्षेत्र में फ़ंक्शन को फिर से डिप्लॉय कर सकते हैं. साथ ही, यह पुष्टि करने के बाद कि नया फ़ंक्शन सही तरीके से ट्रैफ़िक पा रहा है, पुराने फ़ंक्शन को हटा सकते हैं. इस ट्रांज़िशन के दौरान, दोनों फ़ंक्शन को इवेंट मिलेंगे. फ़ंक्शन के इलाके बदलने के लिए, कमांड के सुझाए गए क्रम के बारे में जानने के लिए फ़ंक्शन का इलाका बदलना देखें.

अगर फ़िलहाल आपका फ़ंक्शन अलग-अलग नहीं है या फिर इसके इस्तेमाल में बदलाव करने की ज़रूरत क्षेत्र के बाहर नहीं है, तो हमारा सुझाव है कि आप फ़ंक्शन को ट्रांसफ़र करने से पहले, आइडैंपोटेंसी लागू करें.

बेहतर क्षेत्र के सुझाव, इवेंट ट्रिगर के टाइप के हिसाब से अलग-अलग होते हैं:

ट्रिगर का प्रकार इलाके का सुझाव
Cloud Firestore Cloud Firestore इंस्टेंस जगह के लिए सबसे नज़दीकी क्षेत्र (अगला सेक्शन देखें)
Realtime Database हमेशा us-central1
Cloud Storage Cloud Storage बकेट लोकेशन का सबसे नज़दीकी क्षेत्र (अगला सेक्शन देखें)
अन्य अगर आप फ़ंक्शन के अंदर किसी रीयल टाइम डेटाबेस इंस्टेंस, Cloud Firestore इंस्टेंस या Cloud Storage बकेट के साथ इंटरैक्ट कर रहे हैं, तो सुझाया गया इलाका वैसा ही होता है जैसा कि आपने उन संसाधनों में से किसी एक से ट्रिगर किया गया फ़ंक्शन था. अगर ऐसा नहीं है, तो us-central1 के डिफ़ॉल्ट क्षेत्र का इस्तेमाल करें. Firebase होस्टिंग से कनेक्ट किए गए फ़ंक्शन, किसी भी इलाके में हो सकते हैं. हालांकि, सुझावों के लिए बिना सर्वर वाले होस्टिंग की खास जानकारी देखें.

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