Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Lokasi Cloud Functions

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, tetapi Anda juga harus mempertimbangkan lokasi produk dan layanan lain yang digunakan aplikasi Anda. Penggunaan layanan di beberapa region dapat memengaruhi latensi aplikasi, serta harga.

Cloud Functions tersedia di region berikut dengan harga Tingkat 1:

  • us-central1 (Iowa)
  • us-east1 (South Carolina)
  • us-east4 (North Virginia)
  • europe-west1 (Belgia)
  • europe-west2 (London)
  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)

Cloud Functions tersedia di region berikut dengan harga Tingkat 2:

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (Sao Paulo)
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurich)
  • europe-central2 (Warsawa)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jakarta)
  • asia-northeast3 (Seoul)

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, lalu 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 melakukan proxy ke 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 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. Perhatikan juga bahwa berbagai fungsi yang terhubung dengan Firebase Hosting harus berlokasi di us-central1.

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 di mana 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
asia-south1 (Mumbai) asia-east2