Cloud Functions-Standorte

Cloud Functions ist regional. Das bedeutet, dass sich die Infrastruktur, in der Ihre Funktion ausgeführt wird, in bestimmten Regionen befindet und von Google verwaltet wird, damit sie in allen Zonen innerhalb dieser Regionen redundant verfügbar ist.

Bei der Auswahl der Regionen, in denen Ihre Funktionen ausgeführt werden sollen, Latenz und Verfügbarkeit sollten. Sie können Sie wählen in der Regel Regionen in der Nähe Ihrer Nutzer aus. sollten Sie auch den Standort der andere Produkte und Dienste die Ihre App verwendet. Die regionsübergreifende Nutzung von Diensten kann sich auf die Latenz Ihrer App sowie die Preise.

Standardmäßig werden Funktionen in der Region us-central1 ausgeführt. Beachten Sie, dass dies möglicherweise von der Region einer Ereignisquelle, z. B. eines Cloud Storage-Buckets, unterscheidet. Hier erfahren Sie, wie Sie die Region angeben, in der eine Funktion ausgeführt wird weiter unten auf dieser Seite.

Unterstützte Regionen

In den Listen in diesem Abschnitt enthält der Parameter energieeinsparungsblatt zeigt an, dass der Strom für diese Region CO2-Emissionen reduzieren. Weitere Informationen finden Sie unter CO2-freie Energie für Google Cloud-Regionen.

Cloud Functions ist in den folgenden Regionen mit Preisstufe 1 verfügbar:

  • asia-east1 (Taiwan)
  • asia-east2 (Hongkong) Nur 1. Generation
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finnland) energieeinsparungsblatt Nur 2. Generation
  • europe-west1 (Belgien) energieeinsparungsblatt
  • europe-west2 (London) Nur 1. Generation
  • us-central1 (Iowa) energieeinsparungsblatt
  • us-east1 (South Carolina)
  • us-east4 (Northern Virginia)
  • us-west1 (Oregon) energieeinsparungsblatt

Cloud Functions ist in den folgenden Regionen mit Preisstufe 2:

  • asia-east2 (Hongkong) Nur 2. Generation
  • asia-northeast3 (Seoul)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai), nur 2. Generation
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne) Nur 2. Generation
  • europe-central2 (Warschau)
  • europe-west2 (London) Nur 2. Generation
  • europe-west3 (Frankfurt)
  • europe-west6 (Zürich) energieeinsparungsblatt
  • northamerica-northeast1 (Montreal) energieeinsparungsblatt
  • northamerica-northeast2 (Toronto) energy_savings_leaf Nur 2. Generation
  • southamerica-east1 (São Paulo) energieeinsparungsblatt
  • southamerica-west1 (Santiago, Chile) nur 2. Generation
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Funktionen innerhalb einer Region und eines Projekts müssen eindeutige Namen haben (Groß- und Kleinschreibung ist irrelevant). Funktionen in verschiedenen Regionen oder Projekten können denselben Namen haben.

Best Practices zum Angeben einer Region

Standardmäßig werden Funktionen in der Region us-central1 ausgeführt. Beachten Sie, dass dies möglicherweise von der Region einer Ereignisquelle, z. B. eines Cloud Storage-Buckets, unterscheidet. Wenn die Region angeben, in der eine Funktion ausgeführt wird, Empfehlungen in diesem Abschnitt für jeden Funktionstrigger-Typ.

Um die Region festzulegen, in der eine Funktion ausgeführt wird, geben Sie den Parameter region in der Funktionsdefinition wie hier gezeigt:

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

Sie können mehrere Regionen angeben, indem Sie mehrere durch Kommas getrennte Regionen übergeben. Strings in region. Wenn Sie eine Region für viele Hintergrund-Triggertypen verwenden, müssen Sie den richtigen Ereignisfilter zusammen mit der Region. Im obigen Beispiel ist das Cloud Firestore document, das das Ereignis auslöst. Für einen Cloud Storage-Trigger den Ereignisfilter auslösen könnte bucket sein; für einen Pub/Sub-Trigger topic und so weiter.

Weitere Informationen finden Sie unter Region einer Funktion ändern finden Sie weitere Informationen zum Ändern der Region für eine Funktion, die des Produktionstraffics.

HTTP- und client-aufrufbare Funktionen

Für HTTP- und aufrufbare Funktionen empfehlen wir, dass Sie Ihre Funktion zunächst auf den Zielregion oder der nächstgelegenen Region, in der sich die am häufigsten zu erwartenden Kunden befinden, und Ändern Sie dann die ursprüngliche Funktion so ab, dass deren HTTP-Anfrage an die neue -Funktion (sie können denselben Namen haben). Wenn Clients, die Ihre HTTP-Funktion verwenden, Weiterleitungen unterstützen, können Sie einfach die ursprüngliche Funktion so ändern, dass der HTTP-Statuscode zur Weiterleitung (301) zusammen mit der URL der neuen Funktion zurückgegeben wird. Wenn die Clients eher schlecht mit Weiterleitungen zurechtkommen, können Sie die Anfrage von der ursprünglichen auf die neue Funktion weiterleiten. Starten Sie dazu von der ursprünglichen Funktion aus eine neue Anfrage an die neue Funktion. Der letzte Schritt besteht darin sicherzustellen, dass alle Kunden und rufen die neue Funktion auf.

Clientseitige Standortauswahl für aufrufbare Funktionen

In Bezug auf die aufrufbare Funktion sollten clientseitig aufrufbare Konfigurationen Richtlinien als HTTP-Funktionen. Der Client kann auch eine Region angeben und muss dies tun, wenn die Funktion in einer anderen Region als us-central1 ausgeführt wird.

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

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

Einheit

firebase.Functions.FirebaseFunctions functions;

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

Hintergrundfunktionen

Hintergrundfunktionen nutzen eine Semantik für die mindestens einmalige Zustellung von Ereignissen. dass sie unter bestimmten Umständen doppelte Ereignisse erhalten. Sie sollten sich also Funktionen zu implementieren, idempotent ist. Wenn Ihre Funktion bereits idempotent ist, können Sie die Funktion in der neuen Region mit Ereignis-Trigger zu erstellen und die alte Funktion zu entfernen, nachdem Sie überprüft haben, die neue Funktion Traffic korrekt empfängt. Während dieser Übergangsphase -Funktionen Ereignisse empfangen. Weitere Informationen finden Sie unter Region einer Funktion ändern finden Sie die empfohlene Reihenfolge von Befehlen zum Ändern von Regionen für Funktionen.

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

Die Empfehlungen für optimale Regionen unterscheiden sich je nach Ereignistriggertyp:

Triggertyp Empfehlung für Region
Cloud Firestore Die Region, die dem Standort der Cloud Firestore-Instanz am nächsten ist (siehe nächster Abschnitt)
Realtime Database Immer us-central1
Cloud Storage Nächste Region zum Bucket-Standort Cloud Storage (siehe nächster Abschnitt)
Sonstige Wenn Sie mit einer Realtime Database-Instanz interagieren, wird ein Cloud Firestore oder einen Cloud Storage-Bucket innerhalb der Funktion haben, ist dasselbe wie bei einer Funktion, die durch eine dieser Ressourcen. Andernfalls verwenden Sie die Standardregion us-central1. Funktionen, die mit Firebase Hosting verbunden sind, können sich in jeder Region befinden. Empfehlungen finden Sie in der Übersicht über das serverlose Hosting.

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

Die verfügbaren Regionen für Funktionen stimmen nicht immer genau mit dem Verfügbare Regionen für Ihre Cloud Firestore-Datenbank und Ihre Cloud Storage Buckets.

Wenn Ihre Funktion und Ihre Ressource (Datenbankinstanz oder Cloud Storage) Bucket) befinden sich an verschiedenen Orten, kann es passieren, erhöhte Latenz und Abrechnungskosten.

Hier ist eine Zuordnung der Regionen, in denen von Funktionen unterstützte Regionen für Cloud Firestore am nächsten kommen und Cloud Storage, wenn dieselbe Region nicht unterstützt wird:

Region/Mehrfachregion für Cloud Firestore und Cloud Storage Nächste Region für Funktionen
nam5 oder us-central (mehrere Regionen) us-central1
eur3 oder europe-west (mehrere Regionen) europe-west1
europe-west4 (Niederlande) europe-west1
asia-south1 (Mumbai) asia-east2
asia-south2 (Delhi) asia-east2
australia-southeast2 (Melbourne) australia-southeast1