Buka konsol

Lokasi Cloud Functions

Cloud Functions bersifat regional, artinya, infrastruktur yang menjalankan Cloud Functions 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:

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

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 Storage. Jika Anda 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 yang dapat dipanggil klien dan HTTP

Untuk fungsi yang dapat dipanggil dan HTTP, sebaiknya setel fungsi Anda ke region tujuan terlebih dahulu, atau region yang terdekat dengan tempat beradanya sebagian besar pelanggan yang diharapkan, 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 Anda 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 yang dapat dipanggil

Terkait fungsi yang dapat dipanggil, penyiapan fungsi yang dapat dipanggil 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:"us-central1")

Objective-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"us-central1"];

Web


var functions = firebase.app().functions('us-central1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("us-central1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("us-central1");

Unity

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("us-central1");

Fungsi background

Fungsi background 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 Anda sudah idempoten, Anda dapat menerapkan 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 bagian 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
Storage Region terdekat dengan lokasi bucket Storage (lihat bagian selanjutnya)
Lainnya Jika Anda berinteraksi dengan instance Realtime Database, instance Cloud Firestore, atau bucket Strorage 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 Storage

Region yang tersedia untuk fungsi tidak 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 Storage) berada di lokasi berbeda, Anda berpotensi mengalami peningkatan latensi dan biaya penagihan.

Berikut ini adalah pemetaan region terdekat yang didukung fungsi untuk Cloud Firestore dan Cloud Storage:

Region/Multi-region untuk Cloud Firestore dan Storage Region terdekat untuk fungsi
nam5 atau us-central (multi-region) us-central1
us-east1 (Carolina Selatan) us-east1
us-east4 (Virginia Utara) us-east4
northamerica-northeast1 (Montreal) us-central1
eur3 atau europe-west (multi-region) europe-west1
europe-west2 (London) europe-west2
europe-west3 (Frankfurt) europe-west1
asia-northeast1 (Tokyo) asia-northeast1
asia-south1 (Mumbai) asia-east2
australia-southeast1 (Sydney) asia-northeast1
southamerica-east1 (Sao Paulo) us-east1