Cloud Functions konumları

Cloud Functions bölgeseldir. Yani işlevinizi çalıştıran altyapı belirli bölgelerde bulunur ve bu bölgelerdeki tüm alt bölgelerde yedekli olarak kullanılabilmesi için Google tarafından yönetilir.

İşlevlerinizin hangi bölgelerde çalıştırılacağını seçerken göz önünde bulundurmanız gereken birincil unsurlar gecikme ve kullanılabilirlik olmalıdır. Genellikle kullanıcılarınıza yakın bölgeleri seçebilirsiniz ancak uygulamanızın kullandığı diğer ürün ve hizmetlerin konumunu da göz önünde bulundurmanız gerekir. Hizmetleri birden fazla bölgede kullanmak uygulamanızın gecikmesini ve fiyatlandırmasını etkileyebilir.

Varsayılan olarak, işlevler us-central1 bölgesinde çalışır. Bunun Cloud Storage paketi gibi bir etkinlik kaynağının bölgesinden farklı olabileceğini unutmayın. Bu sayfanın sonraki kısımlarında, bir işlevin çalıştırılacağı bölgeyi nasıl belirteceğinizi öğrenin.

Desteklenen bölgeler

Bu bölümdeki listelerdeki energy_savings_leaf simgesi bu bölgede elektriğin düşük karbon emisyonuyla üretildiğini gösterir. Daha fazla bilgi edinmek için Google Cloud bölgeleri için karbonsuz enerji başlıklı makaleyi inceleyin.

Cloud Functions, aşağıdaki bölgelerde 1. Katman fiyatlandırmasıyla kullanılabilir:

  • asia-east1 (Tayvan)
  • Yalnızca asia-east2 (Hong Kong) 1. nesil
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandiya) energy_savings_leaf Yalnızca 2. nesil
  • europe-west1 (Belçika) energy_savings_leaf
  • Yalnızca europe-west2 (Londra) 1. nesil
  • us-central1 (Iowa) energy_savings_leaf
  • us-east1 (Güney Carolina)
  • us-east4 (Kuzey Virginia)
  • us-west1 (Oregon) energy_savings_leaf

Cloud Functions, aşağıdaki bölgelerde 2. Katman fiyatlandırmasıyla kullanılabilir:

  • Yalnızca asia-east2 (Hong Kong) 2. nesil
  • asia-northeast3 (Seul)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Cakarta)
  • Yalnızca asia-south1 (Mumbai) 2. nesil
  • australia-southeast1 (Sidney)
  • australia-southeast2 (Melbourne) yalnızca 2. nesil
  • europe-central2 (Varşova)
  • Yalnızca europe-west2 (Londra) 2. nesil
  • europe-west3 (Frankfurt)
  • europe-west6 (Zürih) energy_savings_leaf
  • northamerica-northeast1 (Montreal) energy_savings_leaf
  • northamerica-northeast2 (Toronto) energy_savings_leaf Yalnızca 2. nesil
  • southamerica-east1 (Sao Paulo) energy_savings_leaf
  • Yalnızca southamerica-west1 (Santiago, Şili) 2. nesil
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Belirli bir projede, belirli bir bölgede bulunan işlevler benzersiz (büyük/küçük harfe duyarlı olmayan) adlara sahip olmalıdır ancak bölgeler veya projeler genelindeki işlevler aynı adı paylaşabilir.

Bölge belirtmeyle ilgili en iyi uygulamalar

Varsayılan olarak, işlevler us-central1 bölgesinde çalışır. Bunun Cloud Storage paketi gibi bir etkinlik kaynağının bölgesinden farklı olabileceğini unutmayın. Bir işlevin çalıştırılacağı bölgeyi belirtmeniz gerekiyorsa her bir işlev tetikleyicisi türü için bu bölümdeki önerileri uygulayın.

Bir işlevin çalışacağı bölgeyi ayarlamak için işlev tanımındaki region parametresini aşağıda gösterildiği gibi ayarlayın:

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 içinde, virgülle ayrılmış birden fazla bölge dizesi ileterek birden fazla bölge belirtebilirsiniz. Ayrıca birçok arka plan tetikleyici türü için bölge belirtirken bölgeyle birlikte doğru etkinlik filtresini belirtmeniz gerektiğini de unutmayın. Yukarıdaki örnekte, etkinliği yayınlayan Cloud Firestore document kullanılmıştır. Cloud Storage tetikleyicisi için etkinlik filtresi bucket; Pub/Sub tetikleyicisi için topic vb. olabilir.

Üretim trafiğini yöneten bir işlevin bölgesini değiştirme hakkında daha fazla bilgi için bir işlevin bölgesini değiştirme bölümüne bakın.

HTTP ve istemci tarafından çağrılabilen işlevler

HTTP ve çağrılabilir işlevler için işlevinizi önce hedef bölgeye veya beklenen en çok müşterinin bulunduğu yere en yakın yere ayarlamanızı, ardından orijinal işlevinizi HTTP isteğini yeni işleve (aynı ada sahip olabilirler) yönlendirecek şekilde değiştirmenizi öneririz. HTTP işlevinizin istemcileri yönlendirmeleri destekliyorsa orijinal işlevinizi, yeni işlevinizin URL'siyle birlikte bir HTTP yönlendirme durumu (301) döndürecek şekilde değiştirebilirsiniz. İstemcileriniz yönlendirmeleri sorunsuz şekilde işleyemezse orijinal işlevden yeni işleve yeni bir istek başlatarak orijinal işlevden yeni işleve yönelik isteği proxy'e dönüştürebilirsiniz. Son adım, tüm istemcilerin yeni işlevi çağırdığından emin olmaktır.

Çağrılabilir işlevler için istemci tarafında konum seçimi

Çağrılabilir işlevle ilgili olarak istemci çağrılabilir kurulumları, HTTP işlevleriyle aynı kurallara uymalıdır. İstemci ayrıca bir bölge de belirtebilir ve işlev us-central1 dışında bir bölgede çalışıyorsa bunu yapmalıdır.

İstemcide bölgeleri ayarlamak için ilk kullanıma hazırlama sırasında istenen bölgeyi belirtin:

Swift

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

Objective-C

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

Web


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");

Arka plan işlevleri

Arka plan işlevleri, en az bir kez etkinlik yayınlama semantiği benimser. Bu, bazı durumlarda yinelenen etkinlikler alabilecekleri anlamına gelir. Dolayısıyla, işlevleri özgür olacak şekilde uygulamanız gerekir. İşleviniz zaten eş değerdeyse yeni işlevin doğru şekilde trafik aldığını doğruladıktan sonra eski işlevi aynı etkinlik tetikleyiciyle yeni bölgede yeniden dağıtabilirsiniz. Bu geçiş sırasında her iki işlev de etkinlik alacak. İşlevlerin bölgelerini değiştirmek için önerilen komut dizisi için bir işlevin bölgesini değiştirme bölümüne bakın.

İşleviniz şu anda eşgüçlü değilse veya idempotsiyonu bölgenin dışına uzanmıyorsa, işlevi taşımadan önce aciliyeti uygulamanızı öneririz.

Optimum bölge önerileri, etkinlik tetikleyici türüne göre farklılık gösterir:

Tetikleyici Türü Bölge Önerisi
Cloud Firestore Cloud Firestore örnek konumuna en yakın bölge (sonraki bölüme bakın)
Realtime Database Her zaman us-central1
Cloud Storage Cloud Storage paketi konumuna en yakın bölge (sonraki bölüme bakın)
Diğer Bir Realtime Database örneği, bir Cloud Firestore örneği veya işlevin içindeki bir Cloud Storage paketiyle etkileşimde bulunuyorsanız önerilen bölge, bu kaynaklardan biri tarafından tetiklenen bir işlevin bulunduğu gibidir. Aksi takdirde, varsayılan us-central1 bölgesini kullanın. Firebase Hosting'e bağlı işlevler herhangi bir bölgede olabilir. Ancak öneriler için barındırma sunucusuz işlevlerine göz atın.

Cloud Firestore ve Cloud Storage konumlarına göre bölge seçme

İşlevlerin kullanabileceği bölgeler, Cloud Firestore veritabanınız ve Cloud Storage paketleriniz için mevcut olan bölgelerle her zaman tam olarak eşleşmez.

İşleviniz ve kaynağınız (veritabanı örneği veya Cloud Storage paketi) farklı konumlardaysa gecikme ve faturalandırma maliyetlerinde artışla karşılaşabilirsiniz.

Aynı bölgenin desteklenmediği durumlarda Cloud Firestore ve Cloud Storage için işlevlerin desteklendiği en yakın bölgelerin eşlemesini aşağıda bulabilirsiniz:

Cloud Firestore ve Cloud Storage için Bölge/Çoklu Bölge İşlevlere en yakın bölge
nam5 veya us-central (çoklu bölge) us-central1
eur3 veya europe-west (çoklu bölge) europe-west1
europe-west4 (Hollanda) europe-west1
asia-south1 (Mumbai) asia-east2
asia-south2 (Delhi) asia-east2
australia-southeast2 (Melbourne) australia-southeast1