Cloud Functions bölgeseldir. Yani işlevinizi çalıştıran altyapı belirli bölgelerde bulunur ve Google tarafından bu bölgelerdeki tüm bölgelerde yedek olarak kullanılabilir şekilde yönetilir.
İşlevlerinizin hangi bölgelerde çalışacağını seçerken öncelikle gecikme ve kullanılabilirlik faktörlerini göz önünde bulundurmanız gerekir. 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. Birden fazla bölgede hizmet kullanmak, uygulamanızın gecikmesini ve fiyatlandırmasını etkileyebilir.
İşlevler varsayılan olarak 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ığı bölgeyi nasıl belirteceğinizi bu sayfanın ilerleyen bölümlerinde öğrenebilirsiniz.
Desteklenen bölgeler
Bu bölümdeki listelerde energy_savings_leaf simgesi, bu bölgedeki elektriğin düşük karbon emisyonuyla üretildiğini gösterir. Daha fazla bilgi için Google Cloud bölgeleri için karbonsuz enerji başlıklı makaleyi inceleyin.
1. Katman fiyatlandırması
Cloud Functions, aşağıdaki bölgelerde 1. Katman fiyatlandırması ile kullanılabilir:
Bölge | Konum | Desteklenen ürün sürümleri | CO2 emisyonu |
---|---|---|---|
asia-east1 |
Tayvan | 1. nesil, 2. nesil | |
asia-east2 |
Hong Kong | Yalnızca 1. nesil | |
asia-northeast1 |
Tokyo | 1. nesil, 2. nesil | |
asia-northeast2 |
Osaka | 1. nesil, 2. nesil | |
europe-north1 |
Finlandiya | Yalnızca 2. nesil | energy_savings_leaf |
europe-southwest1 |
Madrid | Yalnızca 2. nesil | |
europe-west1 |
Belçika | 1. nesil, 2. nesil | energy_savings_leaf |
europe-west4 |
Hollanda | Yalnızca 2. nesil | |
europe-west8 |
Milano | Yalnızca 2. nesil | |
europe-west9 |
Paris | Yalnızca 2. nesil | energy_savings_leaf |
me-west1 |
Tel Aviv | Yalnızca 2. nesil | |
europe-west2 |
Londra | Yalnızca 1. nesil | |
us-central1 |
Iowa | 1. nesil, 2. nesil | energy_savings_leaf |
us-east1 |
Güney Carolina | 1. nesil, 2. nesil | |
us-east4 |
Kuzey Virginia | 1. nesil, 2. nesil | |
us-east5 |
Columbus | Yalnızca 2. nesil | |
us-south1 |
Dallas | Yalnızca 2. nesil | |
us-west1 |
Oregon | 1. nesil, 2. nesil | energy_savings_leaf |
2. Katman fiyatlandırması
Cloud Functions, 2. Katman fiyatlandırması ile aşağıdaki bölgelerde kullanılabilir:
Bölge | Konum | Desteklenen ürün sürümleri | CO2 emisyonu |
---|---|---|---|
asia-east2 |
Hong Kong | Yalnızca 2. nesil | |
asia-northeast3 |
Seul | 1. nesil, 2. nesil | |
asia-southeast1 |
Singapur | 1. nesil, 2. nesil | |
asia-southeast2 |
Cakarta | 1. nesil, 2. nesil | |
asia-south1 |
Mumbai | Yalnızca 2. nesil | |
asia-south2 |
Delhi, Hindistan | Yalnızca 2. nesil | |
australia-southeast1 |
Sidney | 1. nesil, 2. nesil | |
australia-southeast2 |
Melbourne | Yalnızca 2. nesil | |
europe-central2 |
Varşova | 1. nesil, 2. nesil | |
europe-west2 |
Londra | Yalnızca 2. nesil | |
europe-west3 |
Frankfurt | 1. nesil, 2. nesil | energy_savings_leaf |
europe-west6 |
Zürih | 1. nesil, 2. nesil | energy_savings_leaf |
europe-west10 |
Berlin | Yalnızca 2. nesil | |
europe-west12 |
Turin | Yalnızca 2. nesil | |
me-central1 |
Doha | Yalnızca 2. nesil | |
me-central2 |
Dammam | Yalnızca 2. nesil | |
northamerica-northeast1 |
Montreal | 1. nesil, 2. nesil | energy_savings_leaf |
northamerica-northeast2 |
Toronto | Yalnızca 2. nesil | energy_savings_leaf |
southamerica-east1 |
Sao Paulo | 1. nesil, 2. nesil | energy_savings_leaf |
southamerica-west1 |
Santiago, Şili | Yalnızca 2. nesil | |
us-west2 |
Los Angeles | 1. nesil, 2. nesil | |
us-west3 |
Salt Lake City | 1. nesil, 2. nesil | |
us-west4 |
Las Vegas | 1. nesil, 2. nesil |
Belirli bir projedeki belirli bir bölgedeki işlevlerin benzersiz (büyük/küçük harf duyarlı olmayan) adları olmalıdır ancak bölgeler veya projeler genelindeki işlevler aynı adı paylaşabilir.
Bölge belirtmeyle ilgili en iyi uygulamalar
İşlevler varsayılan olarak 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ığı bölgeyi belirtmeniz gerekiyorsa her işlev tetikleyici 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ında region
parametresini aşağıdaki 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
parametresinde 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 bir bölge belirtirken bölgeyle birlikte doğru etkinlik filtresini de belirtmeniz gerektiğini unutmayın. Yukarıdaki örnekte, etkinliği yayınlayan Cloud Firestore document
bu öğedir. Cloud Storage tetikleyici için etkinlik filtresi bucket
olabilir; Pub/Sub tetikleyici için topic
olur ve bu şekilde devam eder.
Ü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 başlıklı makaleyi inceleyin.
HTTP ve istemci tarafından çağrılabilir işlevler
HTTP ve çağrılabilir işlevler için önce işlevinizi hedef bölgeye veya beklenen çoğu müşterinin bulunduğu yere en yakın bölgeye ayarlamanızı, ardından orijinal işlevinizi HTTP isteğini yeni işleve yönlendirecek şekilde değiştirmenizi öneririz (aynı ada sahip olabilirler). HTTP işlevinizin istemcileri yönlendirmeleri destekliyorsa orijinal işlevinizi, yeni işlevinizin URL'si ile birlikte bir HTTP yönlendirme durumu (301) döndürecek şekilde değiştirebilirsiniz. Müşterileriniz yönlendirmeleri iyi şekilde işlemiyorsa orijinal işlevden yeni işleve yeni bir istek başlatarak isteği orijinal işlevden yeni işleve proxy olarak gönderebilirsiniz. Son adım, tüm istemcilerin yeni işlevi çağırdığında emin olmaktır.
Çağırılabilir işlevler için istemci tarafı yer seçimi
Çağırılabilir işlevle ilgili olarak, istemci çağrılabilir ayarları HTTP işlevleriyle aynı kurallara uymalıdır. İstemci bir bölge de belirtebilir ve işlev us-central1
dışındaki bir bölgede çalışıyorsa bunu yapmalıdır.
İstemcide bölgeleri ayarlamak için başlatma sırasında istediğiniz 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 kullanır. Bu, bazı durumlarda yinelenen etkinlikler alabileceği anlamına gelir. Bu nedenle, işlevleri tekil olacak şekilde uygulamanız gerekir. İşleviniz zaten tekil ise işlevi yeni bölgede aynı etkinlik tetikleyiciyle yeniden dağıtabilir ve yeni işlevin trafiği doğru şekilde aldığını doğruladıktan sonra eski işlevi kaldırabilirsiniz. Bu geçiş sırasında her iki işlev de etkinlik alır. İşlevlerin bölgelerini değiştirmek için önerilen komut sırası için bir işlevin bölgesini değiştirme başlıklı makaleyi inceleyin.
İşleviniz şu anda tekil değilse veya tekilliği bölgenin ötesine geçmiyorsa işlevi taşımadan önce tekilliği 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 örneğinin bulunduğu konuma en yakın bölge (sonraki bölüme bakın) |
Realtime Database | Her zaman us-central1 |
Cloud Storage | Cloud Storage paket konumuna en yakın bölge (sonraki bölüme bakın) |
Diğer | Fonksiyon içinde bir Realtime Database örneği, Cloud Firestore örneği veya Cloud Storage paketiyle etkileşime geçiyorsanız önerilen bölge, bu kaynaklardan biri tarafından tetiklenen bir işleviniz olduğunda önerilen bölgeyle aynıdır. 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 sunucusuz barındırmaya genel bakış bölümüne bakın. |
Cloud Firestore ve Cloud Storage konumlarına göre bölgeleri seçme
İşlevler için kullanılabilen bölgeler her zaman Cloud Firestore veritabanınız ve Cloud Storage paketleriniz için kullanılabilen bölgelerle 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şabileceğinizi unutmayın.
Aynı bölgenin desteklenmediği durumlarda Cloud Firestore ve Cloud Storage için en yakın işlevlerin desteklenen bölgelerini aşağıda bulabilirsiniz:
Cloud Firestore ve Cloud Storage için Bölge/Çok bölgeli | İşlevler için 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 |