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

Lokalizacje Cloud Functions

Funkcje Chmura jest regionalny, co oznacza infrastrukturę, która biegnie czynność chmura znajduje się w określonych regionach i jest zarządzany przez Google będzie dostępny w całej nadmiarowo wszystkich stref w obrębie tych regionów .

Wybierając regiony, w których mają być uruchamiane funkcje, należy wziąć pod uwagę przede wszystkim opóźnienie i dostępność. Generalnie można wybrać regiony blisko swoich użytkowników, ale należy również rozważyć lokalizację innych produktów i usług , że twój zastosowań aplikacji. Korzystanie z usług w wielu regionach może mieć wpływ na opóźnienia aplikacji, jak również ceny .

Funkcje chmura jest dostępny w następujących regionach Tier 1 cenach :

  • us-central1 (Iowa)
  • us-east1 (Karolina Południowa)
  • us-east4 (Northern Virginia)
  • europe-west1 (Belgia)
  • europe-west2 (Londyn)
  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)

Funkcje chmura jest dostępny w następujących regionach Poziom 2 cen :

  • 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 (Zurych)
  • europe-central2 (Warszawa)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-northeast3 (Seul)

Funkcje w danym regionie w danym projekcie muszą mieć unikalne nazwy (bez uwzględniania wielkości liter), ale funkcje w różnych regionach lub projektach mogą mieć tę samą nazwę.

Najlepsze praktyki dotyczące zmiany regionu

Domyślnie funkcje działają w us-central1 regionie. Pamiętaj, że może się to różnić od regionu źródła zdarzenia, takiego jak zasobnik Cloud Storage. Jeśli musisz zmienić region, w którym działa funkcja, postępuj zgodnie z zaleceniami w tej sekcji dla każdego typu wyzwalacza funkcji.

Aby ustawić region, w którym uruchamiany jest funkcja ustaw region parametr w definicji funkcji w następujący sposób:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

Można określić wiele regionów przekazując wiele oddzielonych przecinkami regionów sznurki w functions.region() . Zobacz zmienić obszar funkcją jest , aby uzyskać więcej informacji na temat zalecanych procedur.

Funkcje HTTP i możliwe do wywołania przez klienta

W przypadku funkcji HTTP i funkcji wywoływanych zalecamy najpierw ustawić funkcję na region docelowy lub najbliżej miejsca, w którym znajdują się najbardziej oczekiwani klienci, a następnie zmienić pierwotną funkcję, aby przekierować żądanie HTTP do nowej funkcji (mogą mieć to samo Nazwa). Jeśli klienci Twojej funkcji HTTP obsługują przekierowania, możesz po prostu zmienić oryginalną funkcję, aby zwracała stan przekierowania HTTP (301) wraz z adresem URL nowej funkcji. Jeśli klienci nie dobrze obsłużyć przekierowania, można proxy żądania od pierwotnej funkcji do nowych funkcji poprzez inicjowanie nowego żądania od pierwotnej funkcji do nowej funkcji, którą. Ostatnim krokiem jest upewnienie się, że wszyscy klienci wywołują nową funkcję.

Wybór lokalizacji po stronie klienta dla funkcji wywoływanych

Jeśli chodzi o funkcję wywoływalną, konfiguracje wywoływane przez klienta powinny być zgodne z tymi samymi wytycznymi, co funkcje HTTP. Klient może również określić region, a musi to zrobić, jeśli funkcja działa w dowolnym miejscu innym niż us-central1 .

Aby ustawić regiony na kliencie, określ żądany region podczas inicjalizacji:

Szybki

lazy var functions = Functions.functions(region:"europe-west1")

Cel C

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

Sieć


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

Jedność

firebase.Functions.FirebaseFunctions functions;

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

Funkcje w tle

Funkcje działające w tle przyjmują semantykę dostarczania co najmniej jednego zdarzenia, co oznacza, że ​​w pewnych okolicznościach mogą odbierać zduplikowane zdarzenia. Tak więc, należy wdrożyć funkcje być idempotent . Jeśli Twoja funkcja jest już idempotentna, możesz ponownie wdrożyć funkcję w nowym regionie z tym samym wyzwalaczem zdarzenia i usunąć starą funkcję po sprawdzeniu, czy nowa funkcja prawidłowo odbiera ruch. Podczas tego przejścia obie funkcje będą otrzymywać zdarzenia. Zobacz zmienić obszar funkcją jest dla zalecanej sekwencji poleceń do zmiany regionów dla funkcji.

Jeśli funkcja nie jest obecnie idempotentna lub jej idempotentność nie wykracza poza region, zalecamy najpierw zaimplementować idempotentność przed przeniesieniem funkcji.

Rekomendacje dotyczące optymalnego regionu różnią się w zależności od typu wyzwalacza zdarzenia:

Typ wyzwalacza Rekomendacja regionu
Cloud Firestore Region najbliższy lokalizacji instancji Cloud Firestore (patrz następna sekcja)
Baza danych czasu rzeczywistego Zawsze us-central1
Magazyn w chmurze Region najbliższy lokalizacji zasobnika Cloud Storage (patrz następna sekcja)
Inni Jeśli wchodzisz w interakcję z instancją Bazy danych czasu rzeczywistego, instancją Cloud Firestore lub zasobnikiem Cloud Storage wewnątrz funkcji, zalecany region jest taki sam, jak gdybyś miał funkcję wyzwoloną przez jeden z tych zasobów. W przeciwnym razie, należy użyć domyślny region us-central1 . Należy również zauważyć, że funkcje podłączone do Firebase Hosting musi znajdować się w us-central1 .

Wybieranie regionów na podstawie lokalizacji Cloud Firestore i Cloud Storage

Dostępne regiony dla funkcji nie zawsze dokładnie odpowiadają regionom dostępnym dla Twojej bazy danych Cloud Firestore i zasobników Cloud Storage.

Zauważ, że jeśli funkcja i Twój zasób (instancja bazy danych lub Cloud Storage) znajdują się w różnych miejscach, a następnie można potencjalnie doświadczenie zwiększone opóźnienie i koszty rozliczeniowe .

Oto odwzorowanie najbliższych funkcje obsługiwane w regionach cloud FireStore i Cloud Storage, w przypadkach, w których ten sam obszar nie jest obsługiwany:

Region/wiele regionów dla Cloud Firestore i Cloud Storage Najbliższy region funkcji
nam5 lub us-central (multi-region) us-central1
eur3 lub europe-west (multi-region) europe-west1
asia-south1 (Mumbai) asia-east2