Lokasi Cloud Functions

Cloud Functions bersifat regional. Artinya, infrastruktur yang menjalankan fungsi 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.

Secara default, fungsi dijalankan di region us-central1. Perhatikan bahwa region ini mungkin berbeda dengan region sumber peristiwa, seperti bucket Cloud Storage. Pelajari cara menentukan region tempat fungsi dijalankan nanti di halaman ini.

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.

Harga Paket 1

Cloud Functions tersedia di region berikut dengan harga Paket 1:

Region Lokasi Versi produk yang didukung Emisi CO2
asia-east1 Taiwan Generasi ke-1, generasi ke-2
asia-east2 Hong Kong Hanya generasi ke-1
asia-northeast1 Tokyo Generasi ke-1, generasi ke-2
asia-northeast2 Osaka Generasi ke-1, generasi ke-2
europe-north1 Finlandia Hanya generasi ke-2 energy_savings_leaf
europe-southwest1 Madrid Hanya generasi ke-2
europe-west1 Belgia Generasi ke-1, generasi ke-2 energy_savings_leaf
europe-west4 Belanda Hanya generasi ke-2
europe-west8 Milan Hanya generasi ke-2
europe-west9 Paris Hanya generasi ke-2 energy_savings_leaf
me-west1 Tel Aviv Hanya generasi ke-2
europe-west2 London Hanya generasi ke-1
us-central1 Iowa Generasi ke-1, generasi ke-2 energy_savings_leaf
us-east1 Carolina Selatan Generasi ke-1, generasi ke-2
us-east4 Northern Virginia Generasi ke-1, generasi ke-2
us-east5 Columbus Hanya generasi ke-2
us-south1 Dallas Hanya generasi ke-2
us-west1 Oregon Generasi ke-1, generasi ke-2 energy_savings_leaf

Harga Paket 2

Cloud Functions tersedia di region berikut dengan harga Paket 2:

Region Lokasi Versi produk yang didukung Emisi CO2
asia-east2 Hong Kong Hanya generasi ke-2
asia-northeast3 Seoul Generasi ke-1, generasi ke-2
asia-southeast1 Singapura Generasi ke-1, generasi ke-2
asia-southeast2 Jakarta Generasi ke-1, generasi ke-2
asia-south1 Mumbai Hanya generasi ke-2
asia-south2 Delhi, India Hanya generasi ke-2
australia-southeast1 Sydney Generasi ke-1, generasi ke-2
australia-southeast2 Melbourne Hanya generasi ke-2
europe-central2 Warsawa Generasi ke-1, generasi ke-2
europe-west2 London Hanya generasi ke-2
europe-west3 Frankfurt Generasi ke-1, generasi ke-2 energy_savings_leaf
europe-west6 Zurich Generasi ke-1, generasi ke-2 energy_savings_leaf
europe-west10 Berlin Hanya generasi ke-2
europe-west12 Turin Hanya generasi ke-2
me-central1 Doha Hanya generasi ke-2
me-central2 Dammam Hanya generasi ke-2
northamerica-northeast1 Montreal Generasi ke-1, generasi ke-2 energy_savings_leaf
northamerica-northeast2 Toronto Hanya generasi ke-2 energy_savings_leaf
southamerica-east1 Sao Paulo Generasi ke-1, generasi ke-2 energy_savings_leaf
southamerica-west1 Santiago, Cile Hanya generasi ke-2
us-west2 Los Angeles Generasi ke-1, generasi ke-2
us-west3 Salt Lake City Generasi ke-1, generasi ke-2
us-west4 Las Vegas Generasi ke-1, generasi ke-2

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 untuk menentukan 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 menentukan 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:

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Python

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

Anda dapat menentukan beberapa region dengan meneruskan beberapa string region yang dipisahkan koma di region. Perhatikan juga bahwa saat menentukan region untuk banyak jenis pemicu latar belakang, Anda harus menentukan filter peristiwa yang benar bersama dengan regionnya. Pada contoh di atas, ini adalah Cloud Firestore document yang memunculkan peristiwa. Untuk pemicu Cloud Storage, filter peristiwa dapat berupa bucket; untuk pemicu Pub/Sub, filternya adalah topic, dan seterusnya.

Lihat bagian mengubah region fungsi untuk mengetahui informasi selengkapnya tentang cara mengubah region untuk fungsi yang menangani traffic produksi.

Fungsi yang dapat dipanggil 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/Multi-region 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