Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Lokasi Cloud Functions

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Cloud Functions bersifat regional , yang berarti 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 wilayah untuk menjalankan fungsi Anda, pertimbangan utama Anda harus latensi dan ketersediaan. Anda biasanya dapat memilih wilayah yang dekat dengan pengguna Anda, tetapi Anda juga harus mempertimbangkan lokasi produk dan layanan lain yang digunakan aplikasi Anda. Menggunakan layanan di beberapa wilayah dapat memengaruhi latensi aplikasi Anda, serta harga .

Cloud Functions tersedia di region berikut dengan harga Tingkat 1 :

  • us-central1 (Iowa)
  • us-east1 (Carolina Selatan)
  • us-east4 (Virginia Utara)
  • us-west1 (Oregon)
  • europe-west1 (Belgia)
  • europe-west2 (London)
  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 laut2 (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 wilayah tertentu dalam proyek tertentu harus memiliki nama unik (tidak peka huruf besar/kecil), tetapi fungsi lintas wilayah atau lintas proyek mungkin memiliki nama yang sama.

Praktik terbaik untuk mengubah wilayah

Secara default, fungsi berjalan di wilayah us-central1 . Perhatikan bahwa ini mungkin berbeda dari region sumber peristiwa, seperti bucket Cloud Storage. Jika Anda perlu mengubah wilayah tempat fungsi berjalan, ikuti rekomendasi di bagian ini untuk setiap jenis pemicu fungsi.

Untuk menyetel wilayah tempat suatu 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 mengubah wilayah fungsi untuk informasi lebih lanjut tentang prosedur yang disarankan.

Fungsi HTTP dan klien yang dapat dipanggil

Untuk HTTP dan fungsi yang dapat dipanggil, kami menyarankan Anda menyetel fungsi Anda terlebih dahulu ke wilayah tujuan, atau paling dekat dengan tempat pelanggan yang paling diharapkan berada, lalu ubah fungsi asli Anda untuk mengalihkan permintaan HTTP ke fungsi baru (mereka dapat memiliki fungsi yang sama nama). Jika klien fungsi HTTP Anda mendukung pengalihan, Anda cukup mengubah fungsi asli Anda untuk mengembalikan status pengalihan HTTP (301) bersama dengan URL fungsi baru Anda. Jika klien Anda tidak menangani pengalihan dengan baik, Anda dapat mem- proxy permintaan dari fungsi asli ke fungsi baru dengan memulai permintaan baru dari fungsi asli ke fungsi baru. Langkah terakhir adalah memastikan bahwa semua klien memanggil fungsi baru.

Pemilihan lokasi sisi klien untuk fungsi yang dapat dipanggil

Mengenai fungsi yang dapat dipanggil, penyiapan klien yang dapat dipanggil harus mengikuti panduan yang sama seperti fungsi HTTP. Klien juga dapat menentukan wilayah, dan harus melakukannya jika fungsi berjalan di wilayah mana pun selain us-central1 .

Untuk mengatur wilayah pada klien, tentukan wilayah yang diinginkan pada inisialisasi:

Cepat

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");

Persatuan

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

Fungsi latar belakang

Fungsi latar belakang mengadopsi semantik pengiriman acara setidaknya sekali, yang berarti bahwa dalam beberapa keadaan mereka mungkin menerima acara duplikat. Jadi, Anda harus mengimplementasikan fungsi menjadi idempoten . Jika fungsi Anda sudah idempoten, maka Anda dapat menerapkan kembali fungsi di wilayah baru dengan pemicu peristiwa yang sama dan menghapus fungsi lama setelah Anda memverifikasi bahwa fungsi baru menerima lalu lintas dengan benar. Selama transisi ini, kedua fungsi akan menerima acara. Lihat mengubah wilayah fungsi untuk urutan perintah yang disarankan untuk mengubah wilayah fungsi.

Jika fungsi Anda saat ini tidak idempoten, atau idempotensinya tidak melampaui wilayah, maka kami menyarankan Anda untuk mengimplementasikan idempotensi terlebih dahulu sebelum memindahkan fungsi tersebut.

Rekomendasi region yang optimal berbeda menurut jenis pemicu peristiwa:

Tipe Pemicu Rekomendasi Wilayah
Cloud Firestore Region terdekat dengan lokasi instance Cloud Firestore (lihat bagian berikutnya)
Basis Data Waktu Nyata Selalu us-central1
Penyimpanan awan Region terdekat dengan lokasi bucket Cloud Storage (lihat bagian berikutnya)
Yang lain Jika Anda berinteraksi dengan instance Realtime Database, instance Cloud Firestore, atau bucket Cloud Storage di dalam fungsi, region yang direkomendasikan sama seperti jika Anda memiliki fungsi yang dipicu oleh salah satu resource tersebut. Jika tidak, gunakan wilayah default us-central1 . Perhatikan juga bahwa fungsi yang terhubung ke Firebase Hosting harus berada 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 Anda.

Perhatikan bahwa jika fungsi dan resource Anda (instans database atau bucket Cloud Storage) berada di lokasi yang berbeda, Anda berpotensi mengalami peningkatan latensi dan biaya penagihan .

Berikut adalah pemetaan region yang didukung fungsi terdekat untuk Cloud Firestore dan Cloud Storage, untuk kasus di mana region yang sama tidak didukung:

Region/Multi-region untuk Cloud Firestore dan Cloud Storage Wilayah terdekat untuk fungsi
nam5 atau us-central (multi-region) us-central1
eur3 atau europe-west (multi-wilayah) europe-west1
asia-south1 (Mumbai) asia-east2