Cloud Functions की जगहें

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

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

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

यह सुविधा इन देशों और इलाकों में उपलब्ध है

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

टियर 1 की कीमत

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

क्षेत्र जगह प्रॉडक्ट के ऐसे वर्शन जिन पर यह सुविधा काम करती है CO2 उत्सर्जन
asia-east1 ताइवान 1st gen, 2nd gen
asia-east2 हॉन्ग कॉन्ग सिर्फ़ पहली पीढ़ी के लिए
asia-northeast1 टोक्यो 1st gen, 2nd gen
asia-northeast2 ओसाका 1st gen, 2nd gen
europe-north1 फ़िनलैंड सिर्फ़ 2nd gen energy_savings_leaf
europe-southwest1 मैड्रिड सिर्फ़ 2nd gen
europe-west1 बेल्जियम 1st gen, 2nd gen energy_savings_leaf
europe-west4 नीदरलैंड्स सिर्फ़ 2nd gen
europe-west8 मिलान सिर्फ़ 2nd gen
europe-west9 पैरिस सिर्फ़ 2nd gen energy_savings_leaf
me-west1 तेल अवीव सिर्फ़ 2nd gen
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 कोलंबस सिर्फ़ 2nd gen
us-south1 डलास सिर्फ़ 2nd gen
us-west1 ऑरेगॉन 1st gen, 2nd gen energy_savings_leaf

टियर 2 की कीमत

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

क्षेत्र जगह प्रॉडक्ट के ऐसे वर्शन जिन पर यह सुविधा काम करती है CO2 उत्सर्जन
asia-east2 हॉन्ग कॉन्ग सिर्फ़ 2nd gen
asia-northeast3 सियोल 1st gen, 2nd gen
asia-southeast1 सिंगापुर 1st gen, 2nd gen
asia-southeast2 जकार्ता 1st gen, 2nd gen
asia-south1 मुंबई सिर्फ़ 2nd gen
asia-south2 दिल्ली, भारत सिर्फ़ 2nd gen
australia-southeast1 सिडनी 1st gen, 2nd gen
australia-southeast2 मेलबोर्न सिर्फ़ 2nd gen
europe-central2 वार्सा 1st gen, 2nd gen
europe-west2 लंदन सिर्फ़ 2nd gen
europe-west3 फ़्रैंकफ़र्ट 1st gen, 2nd gen energy_savings_leaf
europe-west6 ज़ूरिख़ 1st gen, 2nd gen energy_savings_leaf
europe-west10 बर्लिन सिर्फ़ 2nd gen
europe-west12 टूरीन सिर्फ़ 2nd gen
me-central1 दोहा सिर्फ़ 2nd gen
me-central2 दम्मम सिर्फ़ 2nd gen
northamerica-northeast1 मॉन्ट्रियल 1st gen, 2nd gen energy_savings_leaf
northamerica-northeast2 टोरंटो सिर्फ़ 2nd gen energy_savings_leaf
southamerica-east1 साओ पौलो 1st gen, 2nd gen energy_savings_leaf
southamerica-west1 सैंटियागो, चिली सिर्फ़ 2nd gen
us-west2 लॉस एंजिलीस 1st gen, 2nd gen
us-west3 सॉल्ट लेक सिटी 1st gen, 2nd gen
us-west4 लास वेगस 1st gen, 2nd gen

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

किसी इलाके की जानकारी देने के सबसे सही तरीके

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

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

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

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

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

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