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. nesileurope-west1
(Belçika) energy_savings_leaf- Yalnızca
europe-west2
(Londra) 1. nesil us-central1
(Iowa) energy_savings_leafus-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. nesileurope-central2
(Varşova)- Yalnızca
europe-west2
(Londra) 2. nesil europe-west3
(Frankfurt)europe-west6
(Zürih) energy_savings_leafnorthamerica-northeast1
(Montreal) energy_savings_leafnorthamerica-northeast2
(Toronto) energy_savings_leaf Yalnızca 2. nesilsouthamerica-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 |