Cloud Functions bölgeseldir. Bu nedenle, işlevinizi çalıştıran altyapı belirli bölgelerde bulunur ve bu bölgelerdeki tüm alanlarda yedekli olarak kullanılabilmesi için Google tarafından yönetilir.
İşlevlerinizi hangi bölgelerde çalıştıracağınızı seçerken öncelikli olarak gecikme ve kullanılabilirlik konularını göz önünde bulundurmalısınız. 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ölgedeki hizmetleri kullanmak, uygulamanızın gecikmesini ve fiyatlandırmasını etkileyebilir.
Varsayılan olarak işlevler us-central1
bölgesinde çalışır. Bunun, bir etkinlik kaynağının (ör. Cloud Storage paketi) bölgesinden farklı olabileceğini unutmayın.
Bir işlevin çalışacağı bölgeyi nasıl belirleyeceğ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, 1. Katman fiyatlandırması ile aşağıdaki bölgelerde kullanılabilir:
Bölge | Konum | Desteklenen ürün sürümleri | CO2 emisyonu |
---|---|---|---|
africa-south1 |
Johannesburg | Yalnızca 2. nesil | |
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 harfe duyarsız) adları olmalıdır. Ancak bölgeler arası veya projeler arası 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, bir etkinlik kaynağının (ör. Cloud Storage paketi) 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 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 de belirtmeniz gerektiğini unutmayın. Yukarıdaki örnekte, etkinliği yayan Cloud Firestore document
budur. Cloud Storage tetikleyicisi için etkinlik filtresi bucket
olabilir. Pub/Sub tetikleyicisi için ise topic
olabilir.
Üretim trafiğini işleyen bir işlevin bölgesini değiştirme hakkında daha fazla bilgi için İşlevin bölgesini değiştirme başlıklı makaleyi inceleyin.
HTTP ve istemci tarafından çağrılabilen işlevler
HTTP ve çağrılabilir işlevler için öncelikle işlevinizi hedef bölgeye veya en çok beklenen 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'siyle birlikte HTTP yönlendirme durumu (301) döndürecek şekilde değiştirmeniz yeterlidir. İstemcileriniz yönlendirmeleri iyi yönetmiyorsa orijinal işlevden yeni işleve yeni bir istek başlatarak orijinal işlevden yeni işleve isteği proxy yapabilirsiniz. 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şlevlerle ilgili olarak, istemci tarafından çağrılabilir kurulumlar HTTP işlevleriyle aynı yönergeleri izlemelidir. İ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 teslimi semantiğini kullanır. Bu nedenle, bazı durumlarda yinelenen etkinlikler alabilirler. Bu nedenle, işlevleri idempotent olacak şekilde uygulamanız gerekir. İşleviniz zaten idempotent ise işlevi aynı etkinlik tetikleyicisiyle yeni bölgede 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 alacak. İşlevlerin bölgelerini değiştirmek için önerilen komut sırası hakkında bilgi edinmek üzere işlevin bölgesini değiştirme başlıklı makaleyi inceleyin.
İşleviniz şu anda idempotent değilse veya idempotency özelliği bölgenin ötesine uzanmıyorsa işlevi taşımadan önce idempotency özelliğini uygulamanızı öneririz.
En uygun bölge önerileri, etkinlik tetikleyici türüne göre değişir:
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 paket konumuna en yakın bölge (sonraki bölüme bakın) |
Diğer | İşlevin içinde bir Realtime Database örneği, bir Cloud Firestore örneği veya bir Cloud Storage paketiyle etkileşimde bulunuyorsanız önerilen bölge, bu kaynaklardan biri tarafından tetiklenen bir işleviniz varmış gibi aynıdır. Aksi takdirde, us-central1 'nın varsayılan bölgesini kullanın.
Firebase Hosting'ya 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ölge seçme
İşlevler için kullanılabilen bölgeler, Cloud Firestore veritabanınız ve Cloud Storage paketleriniz için kullanılabilen 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/ç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 |