Cloud Functions bersifat regional. Artinya, infrastruktur yang menjalankan fungsi Anda terletak di region tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam region tersebut.
Saat memilih region untuk menjalankan fungsi, pertimbangan utama Anda haruslah latensi dan ketersediaan. Secara umum, Anda bisa memilih region yang dekat dengan pengguna Anda. Namun, pertimbangkan juga lokasi produk dan layanan lain yang digunakan aplikasi Anda. Penggunaan layanan di beberapa region dapat memengaruhi latensi dan harga aplikasi.
Secara default, fungsi dijalankan di region us-central1
. Perhatikan bahwa region ini mungkin berbeda dengan region sumber peristiwa, seperti bucket Cloud Storage.
Pelajari cara
menentukan region tempat fungsi dijalankan
nanti di halaman ini.
Region yang didukung
Dalam daftar di bagian ini, ikon energy_savings_leaf menunjukkan bahwa listrik untuk region ini dihasilkan dengan emisi karbon yang rendah. Untuk informasi selengkapnya, lihat Energi bebas karbon untuk region Google Cloud.
Harga Paket 1
Cloud Functions tersedia di region berikut dengan harga Paket 1:
Wilayah | Lokasi | Versi produk yang didukung | Emisi CO2 |
---|---|---|---|
asia-east1 |
Taiwan | Generasi ke-1, generasi ke-2 | |
asia-east2 |
Hong Kong | Hanya generasi ke-1 | |
asia-northeast1 |
Tokyo | Generasi ke-1, generasi ke-2 | |
asia-northeast2 |
Osaka | Generasi ke-1, generasi ke-2 | |
europe-north1 |
Finlandia | Hanya generasi ke-2 | energy_savings_leaf |
europe-southwest1 |
Madrid | Hanya generasi ke-2 | |
europe-west1 |
Belgia | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
europe-west4 |
Belanda | Hanya generasi ke-2 | |
europe-west8 |
Milan | Hanya generasi ke-2 | |
europe-west9 |
Paris | Hanya generasi ke-2 | energy_savings_leaf |
me-west1 |
Tel Aviv | Hanya generasi ke-2 | |
europe-west2 |
London | Hanya generasi ke-1 | |
us-central1 |
Iowa | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
us-east1 |
Carolina Selatan | Generasi ke-1, generasi ke-2 | |
us-east4 |
Northern Virginia | Generasi ke-1, generasi ke-2 | |
us-east5 |
Columbus | Hanya generasi ke-2 | |
us-south1 |
Dallas | Hanya generasi ke-2 | |
us-west1 |
Oregon | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
Harga Paket 2
Cloud Functions tersedia di region berikut dengan harga Paket 2:
Wilayah | Lokasi | Versi produk yang didukung | Emisi CO2 |
---|---|---|---|
asia-east2 |
Hong Kong | Hanya generasi ke-2 | |
asia-northeast3 |
Seoul | Generasi ke-1, generasi ke-2 | |
asia-southeast1 |
Singapura | Generasi ke-1, generasi ke-2 | |
asia-southeast2 |
Jakarta | Generasi ke-1, generasi ke-2 | |
asia-south1 |
Mumbai | Hanya generasi ke-2 | |
asia-south2 |
Delhi, India | Hanya generasi ke-2 | |
australia-southeast1 |
Sydney | Generasi ke-1, generasi ke-2 | |
australia-southeast2 |
Melbourne | Hanya generasi ke-2 | |
europe-central2 |
Warsawa | Generasi ke-1, generasi ke-2 | |
europe-west2 |
London | Hanya generasi ke-2 | |
europe-west3 |
Frankfurt | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
europe-west6 |
Zurich | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
europe-west10 |
Berlin | Hanya generasi ke-2 | |
europe-west12 |
Turin | Hanya generasi ke-2 | |
me-central1 |
Doha | Hanya generasi ke-2 | |
me-central2 |
Dammam | Hanya generasi ke-2 | |
northamerica-northeast1 |
Montreal | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
northamerica-northeast2 |
Toronto | Hanya generasi ke-2 | energy_savings_leaf |
southamerica-east1 |
Sao Paulo | Generasi ke-1, generasi ke-2 | energy_savings_leaf |
southamerica-west1 |
Santiago, Cile | Hanya generasi ke-2 | |
us-west2 |
Los Angeles | Generasi ke-1, generasi ke-2 | |
us-west3 |
Salt Lake City | Generasi ke-1, generasi ke-2 | |
us-west4 |
Las Vegas | Generasi ke-1, generasi ke-2 |
Fungsi di region tertentu pada project tertentu harus memiliki nama unik (tidak peka huruf besar/kecil), tetapi fungsi lintas region atau lintas project dapat menggunakan nama yang sama.
Praktik terbaik untuk menentukan region
Secara default, fungsi dijalankan di region us-central1
. Perhatikan bahwa region ini mungkin berbeda dengan region sumber peristiwa, seperti bucket Cloud Storage. Jika perlu menentukan region tempat fungsi dijalankan, ikuti rekomendasi di bagian ini untuk setiap jenis pemicu fungsi.
Untuk menyetel region tempat fungsi dijalankan, setel parameter region
dalam definisi fungsi seperti yang ditunjukkan:
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
Anda dapat menentukan beberapa region dengan meneruskan beberapa string region yang
dipisahkan koma di region
. Perhatikan juga bahwa saat menentukan region untuk banyak
jenis pemicu latar belakang, Anda harus menentukan filter peristiwa yang benar
bersama dengan regionnya. Pada contoh di atas, ini adalah Cloud Firestore document
yang memunculkan peristiwa. Untuk pemicu Cloud Storage, filter peristiwa
dapat berupa bucket
; untuk pemicu Pub/Sub, filternya adalah topic
, dan seterusnya.
Lihat bagian mengubah region fungsi untuk mengetahui informasi selengkapnya tentang cara mengubah region untuk fungsi yang menangani traffic produksi.
Fungsi yang dapat dipanggil klien dan HTTP
Untuk fungsi callable dan HTTP, sebaiknya setel ke region tujuan terlebih dahulu, atau region yang terdekat dengan lokasi sebagian besar pelanggan yang ditarget. Selanjutnya, ubah fungsi asal untuk mengalihkan permintaan HTTP-nya ke fungsi baru (keduanya boleh menggunakan nama yang sama). Jika klien fungsi HTTP Anda mendukung pengalihan, Anda dapat mengubah fungsi asal dengan mudah untuk menampilkan status pengalihan HTTP (301) beserta URL fungsi yang baru. Jika klien tidak menangani pengalihan dengan baik, Anda dapat mem-proxy permintaan dari fungsi asal ke fungsi baru dengan menginisiasi permintaan baru dari fungsi asal ke fungsi baru. Langkah terakhir adalah memastikan bahwa semua klien memanggil fungsi baru.
Pilihan lokasi sisi klien untuk fungsi callable
Terkait fungsi callable, penyiapan fungsi callable klien harus mengikuti panduan yang sama dengan fungsi HTTP. Klien juga dapat menentukan region, dan harus melakukannya jika fungsi berjalan di region mana pun selain us-central1
.
Untuk menyetel region pada klien, tentukan region yang diinginkan saat inisialisasi:
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");
Fungsi latar belakang
Fungsi latar belakang mengadopsi semantik penayangan peristiwa setidaknya-sekali, yang berarti dalam keadaan tertentu, fungsi tersebut dapat menerima peristiwa duplikat. Jadi, Anda harus mengimplementasikan fungsi agar idempoten. Jika fungsi sudah idempoten, Anda dapat men-deploy ulang fungsi tersebut di region baru dengan pemicu peristiwa yang sama, dan menghapus fungsi lama setelah memverifikasi bahwa fungsi baru sudah menerima traffic dengan benar. Selama transisi ini, kedua fungsi akan menerima peristiwa. Lihat mengubah region fungsi untuk mengetahui urutan perintah yang direkomendasikan dalam mengubah region fungsi.
Jika fungsi Anda saat ini tidak idempoten, atau idempotensinya tidak melampaui region, sebaiknya terapkan idempotensi terlebih dulu sebelum memindahkan fungsi.
Rekomendasi region yang optimal berbeda-beda berdasarkan jenis pemicu peristiwa:
Jenis Pemicu | Rekomendasi Region |
---|---|
Cloud Firestore | Region terdekat dengan lokasi instance Cloud Firestore (lihat bagian selanjutnya) |
Realtime Database | Selalu us-central1 |
Cloud Storage | Region terdekat dengan lokasi bucket Cloud Storage (lihat bagian selanjutnya) |
Lainnya | Jika Anda berinteraksi dengan instance Realtime Database, instance Cloud Firestore, atau bucket Cloud Storage di dalam fungsi, region yang direkomendasikan akan sama seolah-olah Anda memiliki fungsi yang dipicu oleh salah satu resource tersebut. Jika tidak, gunakan region default us-central1 .
Fungsi yang terhubung ke Firebase Hosting dapat berada di region mana pun. Namun, lihat ringkasan serverless hosting untuk mendapatkan rekomendasi. |
Memilih region berdasarkan lokasi Cloud Firestore dan Cloud Storage
Region yang tersedia untuk fungsi tidak selalu sama persis dengan region yang tersedia untuk database Cloud Firestore dan bucket Cloud Storage.
Perlu diperhatikan, jika fungsi dan resource Anda (instance database atau bucket Cloud Storage) berada di lokasi berbeda, Anda berpotensi mengalami peningkatan latensi dan biaya penagihan.
Berikut adalah pemetaan region terdekat yang didukung fungsi untuk Cloud Firestore dan Cloud Storage, untuk kasus jika region yang sama tidak didukung:
Region/Multi-region untuk Cloud Firestore dan Cloud Storage | Region terdekat untuk fungsi |
---|---|
nam5 atau us-central (multiregion) |
us-central1 |
eur3 atau europe-west (multiregion) |
europe-west1 |
europe-west4 (Belanda) |
europe-west1 |
asia-south1 (Mumbai) |
asia-east2 |
asia-south2 (Delhi) |
asia-east2 |
australia-southeast2 (Melbourne) |
australia-southeast1 |