Cloud Functions bersifat regional. Artinya, infrastruktur yang menjalankan Cloud Function 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.
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.
Cloud Functions tersedia di region berikut dengan harga Paket 1:
asia-east1
(Taiwan)asia-east2
(Hong Kong) khusus generasi ke-1asia-northeast1
(Tokyo)asia-northeast2
(Osaka)europe-north1
(Finlandia) energy_savings_leaf Khusus generasi ke-2europe-west1
(Belgia) energy_savings_leafeurope-west2
(London) khusus generasi ke-1us-central1
(Iowa) energy_savings_leafus-east1
(South Carolina)us-east4
(North Virginia)us-west1
(Oregon) energy_savings_leaf
Cloud Functions tersedia di region berikut dengan harga Paket 2:
asia-east2
(Hong Kong) khusus generasi ke-2asia-northeast3
(Seoul)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south1
(Mumbai) khusus generasi ke-2australia-southeast1
(Sydney)australia-southeast2
(Melbourne) khusus generasi ke-2europe-central2
(Warsawa)europe-west2
(London) khusus generasi ke-2europe-west3
(Frankfurt)europe-west6
(Zurich) energy_savings_leafnorthamerica-northeast1
(Montreal) energy_savings_leafnorthamerica-northeast2
(Toronto) energy_savings_leaf khusus generasi ke-2southamerica-east1
(Sao Paulo) energy_savings_leafsouthamerica-west1
(Santiago, Cile) khusus generasi ke-2us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
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 dalam mengubah 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 mengubah 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:
exports.myStorageFunction = functions
.region('europe-west1')
.storage
.object()
.onFinalize((object) => {
// ...
});
Anda dapat menentukan beberapa region dengan meneruskan beberapa string region yang dipisahkan koma di functions.region()
. Lihat bagian mengubah region fungsi untuk mengetahui informasi selengkapnya tentang prosedur yang direkomendasikan.
Fungsi callable 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/Multiregion 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 |