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

Emplacements de Cloud Functions

Fonctions Cloud est régionale, ce qui signifie que l'infrastructure qui exécute votre fonction Cloud se trouve dans des régions spécifiques et est géré par Google pour être disponibles sur redondante toutes les zones de ces régions .

Lors de la sélection des régions dans lesquelles exécuter vos fonctions, vos principales considérations doivent être la latence et la disponibilité. Vous pouvez sélectionner généralement les régions proches de vos utilisateurs, mais vous devriez également considérer l'emplacement des autres produits et services que vos utilisations d'applications. L' utilisation des services dans plusieurs régions peuvent affecter la latence de votre application, ainsi que les prix .

Fonctions Cloud est disponible dans les régions suivantes avec des prix Niveau 1 :

  • us-central1 (Iowa)
  • us-east1 (Caroline du Sud)
  • us-east4 (Virginie du Nord)
  • europe-west1 (Belgique)
  • europe-west2 (Londres)
  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)

Fonctions Cloud est disponible dans les régions suivantes avec des prix de niveau 2 :

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • northamerica-northeast1 (Montréal)
  • southamerica-east1 (Sao Paulo)
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurich)
  • europe-central2 (Varsovie)
  • australia-southeast1 (Sydney)
  • asia-south1 (Bombay)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Jakarta)
  • asia-northeast3 (Séoul)

Les fonctions dans une région donnée dans un projet donné doivent avoir des noms uniques (insensibles à la casse), mais les fonctions entre régions ou entre projets peuvent partager le même nom.

Bonnes pratiques pour changer de région

Par défaut, les fonctions exécutées dans le us-central1 région. Notez que cela peut être différent de la région d'une source d'événement, telle qu'un bucket Cloud Storage. Si vous devez modifier la région dans laquelle une fonction s'exécute, suivez les recommandations de cette section pour chaque type de déclencheur de fonction.

Pour définir la région où se exécute des fonctions, définissez la region paramètre dans la définition de la fonction comme indiqué:

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

Vous pouvez spécifier plusieurs régions en faisant passer plusieurs chaînes de régions séparées par des virgules dans functions.region() . Voir changer la région d'une fonction pour plus d' informations sur les procédures recommandées.

Fonctions HTTP et appelables par le client

Pour les fonctions HTTP et appelables, nous vous recommandons de définir d'abord votre fonction sur la région de destination, ou la plus proche de l'endroit où se trouvent la plupart des clients attendus, puis de modifier votre fonction d'origine pour rediriger sa requête HTTP vers la nouvelle fonction (elles peuvent avoir le même Nom). Si les clients de votre fonction HTTP prennent en charge les redirections, vous pouvez simplement modifier votre fonction d'origine pour renvoyer un statut de redirection HTTP (301) avec l'URL de votre nouvelle fonction. Si vos clients ne gèrent pas bien les redirections, vous pouvez proxy la demande de la fonction d' origine à la nouvelle fonction en lançant une nouvelle demande de la fonction d' origine à la nouvelle fonction. La dernière étape consiste à s'assurer que tous les clients appellent la nouvelle fonction.

Sélection de l'emplacement côté client pour les fonctions appelables

Concernant la fonction appelable, les configurations appelables par le client doivent suivre les mêmes directives que les fonctions HTTP. Le client peut également spécifier une région, et doit le faire si la fonction est exécutée dans une région autre que us-central1 .

Pour définir des régions sur le client, spécifiez la région souhaitée lors de l'initialisation :

Rapide

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

Objectif c

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

la toile


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

Unité

firebase.Functions.FirebaseFunctions functions;

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

Fonctions d'arrière-plan

Les fonctions d'arrière-plan adoptent une sémantique de livraison d'événements au moins une fois, ce qui signifie que dans certaines circonstances, elles peuvent recevoir des événements en double. Donc, vous devez mettre en œuvre des fonctions pour être idempotent . Si votre fonction est déjà idempotente, vous pouvez redéployer la fonction dans la nouvelle région avec le même déclencheur d'événement et supprimer l'ancienne fonction après avoir vérifié que la nouvelle fonction reçoit correctement le trafic. Pendant cette transition, les deux fonctions recevront des événements. Voir changer une région fonction de la séquence recommandée de commandes pour modifier les régions pour les fonctions.

Si votre fonction n'est pas actuellement idempotente ou si son idempotence ne s'étend pas au-delà de la région, nous vous recommandons d'implémenter d'abord l'idempotence avant de déplacer la fonction.

Les recommandations de région optimale diffèrent selon le type de déclencheur d'événement :

Type de déclencheur Région Recommandation
Cloud Firestore Région la plus proche de l'emplacement de l'instance Cloud Firestore (voir la section suivante)
Base de données en temps réel Toujours us-central1
Stockage en ligne Région la plus proche de l'emplacement du bucket Cloud Storage (voir la section suivante)
Autres Si vous interagissez avec une instance Realtime Database, une instance Cloud Firestore ou un bucket Cloud Storage à l'intérieur de la fonction, la région recommandée est la même que si vous aviez une fonction déclenchée par l'une de ces ressources. Sinon, utilisez la région par défaut de us-central1 . Notez que les fonctions reliées à Firebase d' accueil doit se trouver dans us-central1 .

Sélection de régions en fonction des emplacements Cloud Firestore et Cloud Storage

Les régions disponibles pour les fonctions ne correspondent pas toujours précisément aux régions disponibles pour votre base de données Cloud Firestore et vos buckets Cloud Storage.

Notez que si votre fonction et votre ressource (instance de base de données ou un seau Cloud Storage) sont dans des endroits différents, alors vous pourriez potentiellement subir une augmentation du temps d' attente et les coûts de facturation .

Voici une cartographie des régions les plus proches appuyées par des fonctions pour Cloud Firestore et Cloud Storage, pour les cas où la même région ne sont pas pris en charge:

Région/Multi-région pour Cloud Firestore et Cloud Storage Région la plus proche pour les fonctions
nam5 ou us-central (multi-région) us-central1
eur3 ou europe-west (multi-région) europe-west1
asia-south1 (Bombay) asia-east2