क्लाउड फ़ंक्शंस स्थान

क्लाउड फ़ंक्शंस क्षेत्रीय है, जिसका अर्थ है कि आपके क्लाउड फ़ंक्शन को चलाने वाला बुनियादी ढांचा विशिष्ट क्षेत्रों में स्थित है और Google द्वारा उन क्षेत्रों के सभी क्षेत्रों में अनावश्यक रूप से उपलब्ध होने के लिए प्रबंधित किया जाता है।

अपने कार्यों को चलाने के लिए किन क्षेत्रों का चयन करते समय, आपका प्राथमिक विचार विलंबता और उपलब्धता होना चाहिए। आप आम तौर पर अपने उपयोगकर्ताओं के नजदीक के क्षेत्रों का चयन कर सकते हैं, लेकिन आपको उन अन्य उत्पादों और सेवाओं के स्थान पर भी विचार करना चाहिए जिनका उपयोग आपका ऐप करता है। अनेक क्षेत्रों में सेवाओं का उपयोग करने से आपके ऐप की विलंबता के साथ-साथ मूल्य निर्धारण भी प्रभावित हो सकता है।

समर्थित क्षेत्र

इस अनुभाग की सूचियों में, ऊर्जा_बचत_पत्ती आइकन इंगित करता है कि इस क्षेत्र के लिए बिजली कम कार्बन उत्सर्जन के साथ उत्पादित की जाती है। अधिक जानकारी के लिए, Google क्लाउड क्षेत्रों के लिए कार्बन मुक्त ऊर्जा देखें।

क्लाउड फ़ंक्शंस टियर 1 मूल्य निर्धारण के साथ निम्नलिखित क्षेत्रों में उपलब्ध है:

  • asia-east1 (ताइवान)
  • asia-east2 (हांगकांग) केवल प्रथम पीढ़ी
  • asia-northeast1 (टोक्यो)
  • asia-northeast2 (ओसाका)
  • europe-north1 (फ़िनलैंड) ऊर्जा_बचत_पत्ती केवल दूसरी पीढ़ी
  • europe-west1 (बेल्जियम) ऊर्जा_बचत_पत्ती
  • europe-west2 (लंदन) केवल पहली पीढ़ी
  • us-central1 (आयोवा) ऊर्जा_बचत_पत्ती
  • us-east1 (दक्षिण कैरोलिना)
  • us-east4 (उत्तरी वर्जीनिया)
  • us-west1 (ओरेगन) ऊर्जा_बचत_पत्ती

क्लाउड फ़ंक्शंस टियर 2 मूल्य निर्धारण के साथ निम्नलिखित क्षेत्रों में उपलब्ध है:

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

किसी दिए गए प्रोजेक्ट में किसी दिए गए क्षेत्र के कार्यों में अद्वितीय (केस असंवेदनशील) नाम होने चाहिए, लेकिन विभिन्न क्षेत्रों या परियोजनाओं में कार्यों का नाम समान हो सकता है।

किसी क्षेत्र को निर्दिष्ट करने के लिए सर्वोत्तम अभ्यास

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

उस क्षेत्र को सेट करने के लिए जहां कोई फ़ंक्शन चलता है, फ़ंक्शन परिभाषा में region पैरामीटर को दिखाए अनुसार सेट करें:

नोड.जे.एस

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

अजगर

# 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 में कई अल्पविराम से अलग किए गए क्षेत्र स्ट्रिंग्स को पास करके कई क्षेत्रों को निर्दिष्ट कर सकते हैं। यह भी ध्यान रखें कि, कई पृष्ठभूमि ट्रिगर प्रकारों के लिए एक क्षेत्र निर्दिष्ट करते समय, आपको क्षेत्र के साथ सही ईवेंट फ़िल्टर निर्दिष्ट करना होगा। उपरोक्त उदाहरण में, यह क्लाउड फायरस्टोर document है जो ईवेंट उत्सर्जित करता है। क्लाउड स्टोरेज ट्रिगर के लिए इवेंट फ़िल्टर bucket हो सकता है; पब/सब ट्रिगर के लिए यह topic होगा, इत्यादि।

उत्पादन ट्रैफ़िक को संभालने वाले फ़ंक्शन के क्षेत्र को बदलने के बारे में अधिक जानकारी के लिए फ़ंक्शन के क्षेत्र को बदलें देखें।

HTTP और क्लाइंट-कॉल करने योग्य फ़ंक्शन

HTTP और कॉल करने योग्य फ़ंक्शंस के लिए, हम अनुशंसा करते हैं कि आप पहले अपने फ़ंक्शन को गंतव्य क्षेत्र पर सेट करें, या जहां सबसे अधिक अपेक्षित ग्राहक स्थित हैं, उसके निकटतम सेट करें, और फिर अपने HTTP अनुरोध को नए फ़ंक्शन पर रीडायरेक्ट करने के लिए अपने मूल फ़ंक्शन को बदलें (वे समान हो सकते हैं) नाम)। यदि आपके HTTP फ़ंक्शन के क्लाइंट रीडायरेक्ट का समर्थन करते हैं, तो आप अपने नए फ़ंक्शन के URL के साथ HTTP रीडायरेक्ट स्थिति (301) वापस करने के लिए बस अपने मूल फ़ंक्शन को बदल सकते हैं। यदि आपके क्लाइंट रीडायरेक्ट को अच्छी तरह से संभाल नहीं पाते हैं, तो आप मूल फ़ंक्शन से नए फ़ंक्शन में एक नया अनुरोध शुरू करके मूल फ़ंक्शन से नए फ़ंक्शन में अनुरोध को प्रॉक्सी कर सकते हैं। अंतिम चरण यह सुनिश्चित करना है कि सभी ग्राहक नए फ़ंक्शन को कॉल कर रहे हैं।

कॉल करने योग्य कार्यों के लिए क्लाइंट-साइड स्थान चयन

कॉल करने योग्य फ़ंक्शन के संबंध में, क्लाइंट कॉल करने योग्य सेटअप को HTTP फ़ंक्शन के समान दिशानिर्देशों का पालन करना चाहिए। क्लाइंट एक क्षेत्र भी निर्दिष्ट कर सकता है, और यदि फ़ंक्शन us-central1 के अलावा किसी अन्य क्षेत्र में चलता है तो उसे ऐसा करना होगा

क्लाइंट पर क्षेत्र सेट करने के लिए, आरंभीकरण के समय वांछित क्षेत्र निर्दिष्ट करें:

तीव्र

lazy var functions = Functions.functions(region:"europe-west1")

उद्देश्य सी

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

वेब


var functions = firebase.app().functions('europe-west1');

एंड्रॉयड

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

सी++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

एकता

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

पृष्ठभूमि कार्य

पृष्ठभूमि फ़ंक्शन कम से कम एक बार ईवेंट डिलीवरी सिमेंटिक को अपनाते हैं, जिसका अर्थ है कि कुछ परिस्थितियों में उन्हें डुप्लिकेट ईवेंट प्राप्त हो सकते हैं। इसलिए, आपको निष्क्रिय होने के लिए कार्यों को लागू करना चाहिए। यदि आपका फ़ंक्शन पहले से ही निष्क्रिय है, तो आप उसी इवेंट ट्रिगर के साथ नए क्षेत्र में फ़ंक्शन को फिर से तैनात कर सकते हैं और यह सत्यापित करने के बाद कि नया फ़ंक्शन सही ढंग से ट्रैफ़िक प्राप्त कर रहा है, पुराने फ़ंक्शन को हटा सकते हैं। इस संक्रमण के दौरान, दोनों कार्यों को ईवेंट प्राप्त होंगे। फ़ंक्शंस के क्षेत्रों को बदलने के लिए आदेशों के अनुशंसित अनुक्रम के लिए फ़ंक्शन के क्षेत्र को बदलें देखें।

यदि आपका फ़ंक्शन वर्तमान में निष्क्रिय नहीं है, या इसकी निष्क्रियता क्षेत्र से आगे नहीं बढ़ती है, तो हम अनुशंसा करते हैं कि आप फ़ंक्शन को स्थानांतरित करने से पहले निष्क्रियता लागू करें।

इष्टतम क्षेत्र अनुशंसाएँ ईवेंट ट्रिगर प्रकार के अनुसार भिन्न होती हैं:

ट्रिगर प्रकार क्षेत्र अनुशंसा
क्लाउड फायरस्टोर क्लाउड फायरस्टोर इंस्टेंस स्थान का निकटतम क्षेत्र (अगला भाग देखें)
रीयलटाइम डेटाबेस सदैव us-central1
घन संग्रहण क्लाउड स्टोरेज बकेट स्थान का निकटतम क्षेत्र (अगला भाग देखें)
अन्य यदि आप फ़ंक्शन के अंदर रीयलटाइम डेटाबेस इंस्टेंस, क्लाउड फायरस्टोर इंस्टेंस, या क्लाउड स्टोरेज बकेट के साथ इंटरैक्ट कर रहे हैं, तो अनुशंसित क्षेत्र वैसा ही है जैसे कि आपके पास उन संसाधनों में से किसी एक द्वारा ट्रिगर किया गया फ़ंक्शन हो। अन्यथा, us-central1 के डिफ़ॉल्ट क्षेत्र का उपयोग करें। फायरबेस होस्टिंग से जुड़े कार्य किसी भी क्षेत्र में हो सकते हैं, लेकिन अनुशंसाओं के लिए होस्टिंग सर्वर रहित अवलोकन देखें।

क्लाउड फायरस्टोर और क्लाउड स्टोरेज स्थानों के आधार पर क्षेत्रों का चयन करना

फ़ंक्शंस के लिए उपलब्ध क्षेत्र हमेशा आपके क्लाउड फायरस्टोर डेटाबेस और आपके क्लाउड स्टोरेज बकेट के लिए उपलब्ध क्षेत्रों से सटीक रूप से मेल नहीं खाते हैं।

ध्यान दें कि यदि आपका फ़ंक्शन और आपका संसाधन (डेटाबेस इंस्टेंस या क्लाउड स्टोरेज बकेट) अलग-अलग स्थानों पर हैं, तो आप संभावित रूप से बढ़ी हुई विलंबता और बिलिंग लागत का अनुभव कर सकते हैं।

यहां क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए निकटतम फ़ंक्शन-समर्थित क्षेत्रों की मैपिंग दी गई है, उन मामलों के लिए जहां समान क्षेत्र समर्थित नहीं है:

क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए क्षेत्र/बहु-क्षेत्र कार्यों के लिए निकटतम क्षेत्र
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