Catch up on everthing we announced at this year's Firebase Summit. Learn more

Cloud Functions-Standorte

Cloud - Funktionen ist die regionale, die die Infrastruktur bedeutet , dass Ihre läuft Cloud - Funktion befindet sich in bestimmten Regionen und wird von Google redundant über zur Verfügung stehen alle Zonen innerhalb dieser Regionen .

Bei der Auswahl der Regionen, in denen Ihre Funktionen ausgeführt werden sollen, sollten Sie in erster Linie Latenz und Verfügbarkeit berücksichtigen. Sie können in der Regel wählen Regionen an den Benutzer zu schließen, aber Sie sollten auch die Lage der erwägen anderen Produkte und Dienstleistungen , dass Ihr App verwendet. Mit Diensten über mehrere Regionen können Ihre App-Latenz, sowie Auswirkungen auf Preise .

Cloud - Funktionen sind in den folgenden Regionen verfügbar Tier 1 Preise :

  • us-central1 (Iowa)
  • us-east1 (South Carolina)
  • us-east4 (Northern Virginia)
  • europe-west1 (Belgien)
  • europe-west2 (London)
  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)

Cloud - Funktionen sind in den folgenden Regionen verfügbar Tier 2 Preise :

  • 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 (Zürich)
  • europe-central2 (Warschau)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Jakarta)
  • asia-northeast3 (Seoul)

Funktionen in einer bestimmten Region in einem bestimmten Projekt müssen eindeutige Namen (ohne Beachtung der Groß-/Kleinschreibung) haben, aber Funktionen über Regionen oder Projekte hinweg können denselben Namen haben.

Best Practices für den Wechsel der Region

Standardmäßig werden Funktionen in der us-central1 Region. Beachten Sie, dass sich dies von der Region einer Ereignisquelle, z. B. eines Cloud Storage-Buckets, unterscheiden kann. Wenn Sie den Bereich ändern müssen, in dem eine Funktion ausgeführt wird, befolgen Sie die Empfehlungen in diesem Abschnitt für jeden Funktionsauslösertyp.

Um den Bereich gesetzt , wo eine Funktion läuft, wobei die Satz - region - Parameter in der Funktionsdefinition , wie gezeigt:

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

Sie können mehrere Regionen angeben , indem mehr durch Komma getrennte Region Strings vorbei functions.region() . Siehe eine Funktion Region ändern zu empfohlenen Verfahren für weitere Informationen.

HTTP- und Client-aufrufbare Funktionen

Für HTTP und aufrufbare Funktionen empfehlen wir, dass Sie Ihre Funktion zuerst auf die Zielregion oder am nächsten zu dem Ort setzen, an dem sich die meisten erwarteten Kunden befinden, und dann Ihre ursprüngliche Funktion so zu ändern, dass ihre HTTP-Anforderung an die neue Funktion umgeleitet wird (sie können die gleiche haben Name). Wenn Clients Ihrer HTTP-Funktion Weiterleitungen unterstützen, können Sie einfach Ihre ursprüngliche Funktion ändern, um einen HTTP-Weiterleitungsstatus (301) zusammen mit der URL Ihrer neuen Funktion zurückzugeben. Wenn Sie Ihre Kunden behandeln Umleitungen nicht gut, können Sie Proxy die Anfrage von der ursprünglichen Funktion der neuen Funktion durch eine neue Anforderung von der ursprünglichen Funktion der neuen Funktion zu initiieren. Der letzte Schritt besteht darin, sicherzustellen, dass alle Clients die neue Funktion aufrufen.

Clientseitige Standortauswahl für aufrufbare Funktionen

In Bezug auf die aufrufbare Funktion sollten aufrufbare Client-Setups dieselben Richtlinien befolgen wie HTTP-Funktionen. Der Kunde kann auch einen Bereich angeben, und muß dies tun , wenn die Funktion läuft in jedem anderen Bereich als us-central1 .

Um Regionen auf dem Client festzulegen, geben Sie die gewünschte Region bei der Initialisierung an:

Schnell

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

Ziel c

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

Netz


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

Einheit

firebase.Functions.FirebaseFunctions functions;

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

Hintergrundfunktionen

Hintergrundfunktionen verwenden eine Semantik der mindestens einmaligen Ereigniszustellung, was bedeutet, dass sie unter Umständen doppelte Ereignisse empfangen können. Also, sollten Sie Funktionen implementieren sein idempotent . Wenn Ihre Funktion bereits idempotent ist, können Sie die Funktion mit demselben Ereignisauslöser in der neuen Region erneut bereitstellen und die alte Funktion entfernen, nachdem Sie überprüft haben, dass die neue Funktion ordnungsgemäß Datenverkehr empfängt. Während dieses Übergangs empfangen beide Funktionen Ereignisse. Siehe eine Funktion Region ändern für die empfohlene Reihenfolge der Befehle Regionen für Funktionen zu ändern.

Wenn Ihre Funktion derzeit nicht idempotent ist oder ihre Idempotenz nicht über die Region hinausgeht, empfehlen wir Ihnen, zuerst Idempotenz zu implementieren, bevor Sie die Funktion verschieben.

Empfehlungen für optimale Regionen unterscheiden sich je nach Ereignisauslösertyp:

Triggertyp Regionsempfehlung
Cloud Firestore Nächste Region zum Standort der Cloud Firestore-Instanz (siehe nächster Abschnitt)
Echtzeit-Datenbank Immer us-central1
Cloud-Speicher Nächste Region zum Cloud Storage-Bucket-Standort (siehe nächster Abschnitt)
Andere Wenn Sie innerhalb der Funktion mit einer Realtime Database-Instanz, einer Cloud Firestore-Instanz oder einem Cloud Storage-Bucket interagieren, ist die empfohlene Region dieselbe, als ob eine Funktion von einer dieser Ressourcen ausgelöst würde. Andernfalls verwenden Sie die Standard - Region von us-central1 . Beachten Sie auch , dass auf Firebase verbunden Funktionen Hosting muss befinden us-central1 .

Regionen basierend auf Cloud Firestore- und Cloud Storage-Standorten auswählen

Die verfügbaren Regionen für Funktionen stimmen nicht immer genau mit den Regionen überein, die für Ihre Cloud Firestore-Datenbank und Ihre Cloud Storage-Buckets verfügbar sind.

Beachten Sie, dass , wenn Ihre Funktion und Ihre Ressource (Datenbankinstanz oder Cloud Storage - Bucket) an verschiedenen Orten sind, dann könnten Sie möglicherweise erhöhte Erfahrung Latenz und Abrechnungskosten .

Hier ist eine Zuordnung der engstenen Funktionen unterstützte Regionen für Cloud Firestor und Cloud - Speicher, für Fälle , in denen die gleiche Region wird nicht unterstützt:

Region/Multiregion für Cloud Firestore und Cloud Storage Nächste Region für Funktionen
nam5 oder us-central (multi-region) us-central1
eur3 oder europe-west (Multi-Region) europe-west1
asia-south1 (Mumbai) asia-east2