Cloud Functions-Standorte

Cloud Functions ist regional , was bedeutet, dass sich die Infrastruktur, die Ihre Cloud Functions ausführt, in bestimmten Regionen befindet und von Google verwaltet wird, um in allen Zonen innerhalb dieser Regionen redundant verfügbar zu sein.

Bei der Auswahl der Regionen, in denen Ihre Funktionen ausgeführt werden sollen, sollten Sie vor allem auf Latenz und Verfügbarkeit achten. Im Allgemeinen können Sie Regionen in der Nähe Ihrer Benutzer auswählen, Sie sollten jedoch auch den Standort der anderen Produkte und Dienste berücksichtigen, die Ihre App verwendet. Die Nutzung von Diensten in mehreren Regionen kann sich auf die Latenz Ihrer App sowie auf die Preise auswirken.

Unterstützte Regionen

In den Listen in diesem Abschnitt zeigt das Symbol „energy_savings_leaf“ an, dass der Strom für diese Region mit geringen CO2-Emissionen erzeugt wird. 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) energy_ savings_leaf nur 2. Generation
  • europe-west1 (Belgien) energie_sparen_blatt
  • europe-west2 (London), nur 1. Generation
  • us-central1 (Iowa) energie_sparen_blatt
  • us-east1 (South Carolina)
  • us-east4 (Nord-Virginia)
  • us-west1 (Oregon) energie_sparen_blatt

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

  • 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) energie_sparen_blatt
  • northamerica-northeast1 (Montreal) energie_sparen_blatt
  • northamerica-northeast2 (Toronto) Energy_ Savings_leaf Nur 2. Generation
  • southamerica-east1 (Sao Paulo) energie_sparen_blatt
  • southamerica-west1 (Santiago, Chile) Nur 2. Generation
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Funktionen in einer bestimmten Region in einem bestimmten Projekt müssen eindeutige Namen (ohne Berücksichtigung der Groß- und Kleinschreibung) haben, Funktionen in verschiedenen Regionen oder Projekten können jedoch denselben Namen haben.

Best Practices zum Angeben einer Region

Standardmäßig werden Funktionen in der Region us-central1 ausgeführt. Beachten Sie, dass sich dies von der Region einer Ereignisquelle, beispielsweise eines Cloud Storage-Buckets, unterscheiden kann. Wenn Sie die Region angeben müssen, in der eine Funktion ausgeführt wird, befolgen Sie die Empfehlungen in diesem Abschnitt für jeden Funktionstriggertyp.

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

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 in region mehrere durch Kommas getrennte Regionszeichenfolgen übergeben. Beachten Sie außerdem, dass Sie beim Angeben einer Region für viele Hintergrundauslösertypen zusammen mit der Region auch den richtigen Ereignisfilter angeben müssen. Im obigen Beispiel ist dies das Cloud Firestore- document , das das Ereignis ausgibt. Für einen Cloud Storage-Trigger könnte der Ereignisfilter bucket lauten; für einen Pub/Sub-Trigger wäre es topic und so weiter.

Weitere Informationen zum Ändern der Region für eine Funktion, die den Produktionsdatenverkehr verarbeitet, finden Sie unter Ändern der Region einer Funktion.

HTTP- und vom Client aufrufbare Funktionen

Für HTTP- und aufrufbare Funktionen empfehlen wir, dass Sie Ihre Funktion zunächst auf die Zielregion bzw. den Ort einstellen, der dem Ort am nächsten liegt, an dem sich die meisten erwarteten Kunden befinden, und dann Ihre ursprüngliche Funktion so ändern, dass ihre HTTP-Anfrage an die neue Funktion umgeleitet wird (sie können dasselbe haben). Name). Wenn Clients Ihrer HTTP-Funktion Weiterleitungen unterstützen, können Sie einfach Ihre ursprüngliche Funktion ändern, um zusammen mit der URL Ihrer neuen Funktion einen HTTP-Umleitungsstatus (301) zurückzugeben. Wenn Ihre Clients Umleitungen nicht gut verarbeiten, können Sie die Anfrage von der ursprünglichen Funktion an die neue Funktion weiterleiten , indem Sie eine neue Anfrage von der ursprünglichen Funktion an die neue Funktion initiieren. Der letzte Schritt besteht darin, sicherzustellen, dass alle Clients die neue Funktion aufrufen.

Clientseitige Standortauswahl für aufrufbare Funktionen

Was die aufrufbare Funktion betrifft, sollten Client-aufrufbare Setups denselben Richtlinien folgen wie 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.

Um Regionen auf dem Client festzulegen, geben Sie bei der Initialisierung die gewünschte Region 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 für die mindestens einmalige Ereigniszustellung, was bedeutet, dass sie unter bestimmten Umständen möglicherweise doppelte Ereignisse empfangen. Daher sollten Sie Funktionen so implementieren, dass sie idempotent sind. Wenn Ihre Funktion bereits idempotent ist, können Sie die Funktion in der neuen Region mit demselben Ereignisauslöser erneut bereitstellen und die alte Funktion entfernen, nachdem Sie überprüft haben, dass die neue Funktion korrekt Datenverkehr empfängt. Während dieses Übergangs empfangen beide Funktionen Ereignisse. Die empfohlene Befehlsfolge zum Ändern von Regionen für Funktionen finden Sie unter Ändern des Bereichs einer Funktion.

Wenn Ihre Funktion derzeit nicht idempotent ist oder sich ihre Idempotenz nicht über die Region hinaus erstreckt, empfehlen wir Ihnen, zunächst die Idempotenz zu implementieren, bevor Sie die Funktion verschieben.

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

Triggertyp Regionsempfehlung
Cloud Firestore Die nächstgelegene Region zum Standort der Cloud Firestore-Instanz (siehe nächster Abschnitt)
Echtzeitdatenbank Immer us-central1
Cloud-Speicher Die dem Cloud Storage-Bucket-Standort nächstgelegene Region (siehe nächster Abschnitt)
Andere Wenn Sie mit einer Realtime Database-Instanz, einer Cloud Firestore-Instanz oder einem Cloud Storage-Bucket innerhalb der Funktion interagieren, ist die empfohlene Region dieselbe, als ob Sie eine Funktion hätten, die von einer dieser Ressourcen ausgelöst würde. Andernfalls verwenden Sie die Standardregion von us-central1 . Mit Firebase Hosting verbundene Funktionen können in jeder Region verfügbar sein. Empfehlungen finden Sie jedoch in der Übersicht über serverloses Hosting .

Auswählen von Regionen basierend auf Cloud Firestore- und Cloud Storage-Standorten

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: Wenn sich Ihre Funktion und Ihre Ressource (Datenbankinstanz oder Cloud Storage-Bucket) an unterschiedlichen Standorten befinden, kann es möglicherweise zu erhöhter Latenz und höheren Abrechnungskosten kommen.

Hier ist eine Zuordnung der nächstgelegenen funktionsunterstützten Regionen für Cloud Firestore und Cloud Storage für Fälle, in denen dieselbe Region nicht unterstützt wird:

Region/Multiregion für Cloud Firestore und Cloud Storage Nächste Region für Funktionen
nam5 oder us-central (multiregional) 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