Cloud Functions की जगहें

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

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

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

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

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

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

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

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

  • सिर्फ़ asia-east2 (हॉन्ग कॉन्ग) 2nd gen के लिए
  • asia-northeast3 (सोल)
  • asia-southeast1 (सिंगापुर)
  • asia-southeast2 (जकार्ता)
  • सिर्फ़ asia-south1 (मुंबई) 2nd gen के लिए
  • australia-southeast1 (सिडनी)
  • सिर्फ़ australia-southeast2 (मेलबर्न) 2nd gen के लिए
  • europe-central2 (वारसा)
  • सिर्फ़ europe-west2 (London) 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");

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

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

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

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

ट्रिगर का प्रकार क्षेत्र के लिए सुझाव
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