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

Cloud Functions bersifat regional , artinya infrastruktur yang menjalankan Cloud Function Anda berada di wilayah tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam wilayah tersebut .

Saat memilih region mana untuk menjalankan fungsi Anda, pertimbangan utama Anda adalah latensi dan ketersediaan. Biasanya Anda dapat memilih wilayah yang dekat dengan pengguna, tetapi Anda juga harus mempertimbangkan lokasi produk dan layanan lain yang digunakan aplikasi Anda. Menggunakan layanan di berbagai wilayah dapat memengaruhi latensi aplikasi Anda, serta harga .

Daerah yang didukung

Pada daftar di bagian ini, ikon daun_hemat energi menunjukkan bahwa listrik untuk wilayah ini diproduksi dengan emisi rendah karbon. Untuk informasi selengkapnya, lihat Energi bebas karbon untuk wilayah Google Cloud .

Cloud Functions tersedia di wilayah berikut dengan harga Tier 1 :

  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 laut2 (Osaka)
  • europe-west1 (Belgia) energy_savings_leaf
  • europe-west2 (London)
  • us-central1 (Iowa) energy_savings_leaf
  • us-east1 (Carolina Selatan)
  • us-east4 (Virginia Utara)
  • us-west1 (Oregon) energy_savings_leaf

Cloud Functions tersedia di region berikut dengan harga Tier 2 :

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

Fungsi di wilayah tertentu dalam proyek tertentu harus memiliki nama yang unik (peka huruf besar/kecil), tetapi fungsi lintas wilayah atau lintas proyek dapat menggunakan nama yang sama.

Praktik terbaik untuk mengubah region

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

Untuk mengatur wilayah tempat fungsi berjalan, atur 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 selengkapnya tentang prosedur yang direkomendasikan.

HTTP dan fungsi yang dapat dipanggil klien

Untuk HTTP dan fungsi yang dapat dipanggil, kami merekomendasikan agar Anda terlebih dahulu menyetel fungsi Anda ke wilayah tujuan, atau yang paling dekat dengan lokasi sebagian besar pelanggan yang diharapkan, lalu mengubah fungsi asli Anda untuk mengalihkan permintaan HTTP-nya ke fungsi baru (keduanya dapat memiliki fungsi yang sama nama). Jika klien fungsi HTTP Anda mendukung pengalihan, Anda cukup mengubah fungsi asli untuk mengembalikan status pengalihan HTTP (301) bersama dengan URL fungsi baru Anda. Jika klien Anda tidak menangani pengalihan dengan baik, Anda dapat memproksi 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 yang dapat dipanggil klien harus mengikuti pedoman yang sama seperti fungsi HTTP. Klien juga dapat menentukan wilayah, dan harus melakukannya jika fungsi berjalan di wilayah selain us-central1 .

Untuk menyetel region pada klien, tentukan region yang diinginkan saat 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 peristiwa setidaknya sekali, yang berarti bahwa dalam keadaan tertentu mereka mungkin menerima peristiwa duplikat. Jadi, Anda harus mengimplementasikan fungsi menjadi idempoten . Jika fungsi Anda sudah idempoten, Anda dapat menerapkan ulang fungsi tersebut di region baru dengan pemicu peristiwa yang sama dan menghapus fungsi lama setelah Anda memverifikasi bahwa fungsi baru tersebut menerima lalu lintas dengan benar. Selama transisi ini, kedua fungsi akan menerima peristiwa. Lihat mengubah wilayah fungsi untuk urutan perintah yang disarankan guna mengubah wilayah untuk fungsi.

Jika fungsi Anda saat ini bukan idempoten, atau idempotensinya tidak melampaui wilayah, sebaiknya Anda mengimplementasikan idempoten terlebih dahulu sebelum memindahkan fungsi.

Rekomendasi region yang optimal berbeda menurut jenis pemicu peristiwa:

Jenis Pemicu Rekomendasi Wilayah
Toko Api Awan 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 selanjutnya)
Yang lain Jika Anda berinteraksi dengan instance Realtime Database, instance Cloud Firestore, atau bucket Cloud Storage di dalam fungsi, region yang direkomendasikan akan sama seperti jika Anda memiliki fungsi yang dipicu oleh salah satu resource tersebut. Jika tidak, gunakan region 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 sumber daya Anda (instance database atau bucket Cloud Storage) berada di lokasi yang berbeda, Anda berpotensi mengalami peningkatan latensi dan biaya penagihan .

Berikut adalah pemetaan region terdekat yang mendukung fungsi 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
australia-southeast2 (Melbourne) australia-southeast1