Emplacements Cloud Functions

Cloud Functions est régional, ce qui signifie que l'infrastructure qui exécute vos est située dans des régions spécifiques et gérée par Google sont disponibles de façon redondante toutes les zones de ces régions.

Lorsque vous sélectionnez les régions dans lesquelles exécuter vos fonctions, doivent être la latence et la disponibilité. En règle générale, vous pouvez sélectionner des régions proches de vos utilisateurs, mais vous devez également tenir compte de l'emplacement des autres produits et services que votre application utilise. L'utilisation de services dans plusieurs régions peut affecter la latence et les tarifs de votre application.

Par défaut, les fonctions s'exécutent dans la région us-central1. Notez que cette valeur peut être différente de la région d'une source d'événements, telle qu'un bucket Cloud Storage. Découvrez comment spécifier la région dans laquelle une fonction s'exécute plus loin sur cette page.

Régions où le service est disponible

Dans les listes de cette section, l'icône energy_savings_leaf indique que l'électricité de cette région est produite avec des émissions de carbone faibles. Pour en savoir plus, consultez Énergie bas carbone pour les régions Google Cloud

Cloud Functions est disponible dans les régions suivantes avec Tarifs de niveau 1:

  • asia-east1 (Taïwan)
  • asia-east2 (Hong Kong) 1re génération uniquement
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlande) feuille_économies d'énergie 2e génération uniquement
  • europe-west1 (Belgique) feuille_économies d'énergie
  • europe-west2 (Londres) 1re génération uniquement
  • us-central1 (Iowa) feuille_économies d'énergie
  • us-east1 (Caroline du Sud)
  • us-east4 (Virginie du Nord)
  • us-west1 (Oregon) feuille_économies d'énergie

Cloud Functions est disponible dans les régions suivantes avec Tarifs de niveau 2:

  • asia-east2 (Hong Kong) 2e génération uniquement
  • asia-northeast3 (Séoul)
  • asia-southeast1 (Singapour)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai) 2e génération uniquement
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne) 2e génération uniquement
  • europe-central2 (Varsovie)
  • europe-west2 (Londres) 2e génération uniquement
  • europe-west3 (Francfort)
  • europe-west6 (Zurich) feuille_économies d'énergie
  • northamerica-northeast1 (Montréal) energy_savings_leaf
  • northamerica-northeast2 (Toronto) feuille_économies d'énergie 2e génération uniquement
  • southamerica-east1 (São Paulo) feuille_économies d'énergie
  • southamerica-west1 (Santiago, Chili) 2e génération uniquement
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Les fonctions dans une région donnée au sein d'un projet donné doivent porter des noms uniques (non sensibles à la casse). Par contre, les fonctions interrégionales ou sur plusieurs projets peuvent partager le même nom.

Bonnes pratiques pour spécifier une région

Par défaut, les fonctions s'exécutent dans la région us-central1. Notez que cette valeur peut être différente de la région d'une source d'événements, telle qu'un bucket Cloud Storage. Si vous devez spécifier la région dans laquelle une fonction s'exécute, suivez les instructions recommandations dans cette section pour chaque type de déclencheur de fonction.

Pour définir la région dans laquelle une fonction s'exécute, définissez le paramètre region dans le comme indiqué ci-dessous:

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

Vous pouvez spécifier plusieurs régions en transmettant plusieurs régions séparées par une virgule chaînes dans region. Notez également que lorsque vous spécifiez une région pour de nombreux d'arrière-plan spécifiques, vous devez spécifier le filtre d'événement approprié ainsi que la région. Dans l'exemple ci-dessus, c'est le document Cloud Firestore qui émet l'événement. Pour un déclencheur Cloud Storage, le filtre d'événements peut être bucket. Pour un déclencheur Pub/Sub, il s'agit de topic, etc.

Voir modifier la région d'une fonction pour en savoir plus sur la modification de la région d'une fonction qui gère du trafic de production.

Fonctions HTTP et appelables par le client

Pour les fonctions HTTP et appelables, nous vous recommandons de commencer par définir votre fonction sur la valeur la région de destination ou la région la plus proche de l’endroit où se trouvent la plupart des clients attendus, et Ensuite, modifiez votre fonction d'origine pour rediriger sa requête HTTP vers le nouveau (ils peuvent avoir le même nom). Si les clients de votre fonction HTTP acceptent vous pouvez simplement modifier votre fonction d'origine pour qu'elle renvoie un l'état de la redirection (301), ainsi que l'URL de votre nouvelle fonction. Si vos clients ne gèrent pas les redirections correctement, vous pouvez transférer la requête de la fonction d'origine vers la nouvelle fonction en envoyant une nouvelle requête de la fonction d'origine à la nouvelle fonction. La dernière étape consiste à s'assurer que tous les clients sont en appelant la nouvelle fonction.

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

En ce qui concerne la fonction appelable, les configurations appelables par le client doivent suivre les mêmes consignes que les fonctions HTTP. Le client peut également spécifier une région, et doit le faire si la fonction s'exécute dans une région autre que us-central1.

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

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

Unity

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 diffusion d'événements "au moins une fois", ce qui signifie que, dans certaines circonstances, ils peuvent recevoir des événements en double. Vous devez donc à implémenter des fonctions 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 reçoit correctement du trafic. Pendant cette transition, reçoivent des événements. Voir modifier la région d'une fonction pour connaître la séquence de commandes recommandée pour modifier la région des fonctions.

Si votre fonction n'est pas idempotente pour le moment ou si son idempotence ne s'étend pas au-delà de la région, nous vous conseillons de commencer par implémenter l'idempotence avant de déplacer la fonction.

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

Type de déclencheur Recommandation de région
Cloud Firestore Région la plus proche de l'emplacement de l'instance Cloud Firestore (voir la section suivante)
Realtime Database Toujours us-central1
Cloud Storage 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 dans 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 us-central1. Les fonctions connectées à Firebase Hosting peuvent se trouver dans n'importe quelle région, mais consultez la présentation de l'hébergement sans serveur pour obtenir des recommandations.

Sélection des régions en fonction des zones géographiques "Cloud Firestore" et "Cloud Storage"

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

Notez que si votre fonction et votre ressource (instance de base de données ou Cloud Storage bucket) se trouvent à des emplacements différents, vous pourriez rencontrer une latence accrue frais de facturation.

Voici un mappage des régions compatibles avec les fonctions les plus proches pour Cloud Firestore et Cloud Storage, dans les cas où la même région n'est pas acceptée:

Région/Multirégional pour Cloud Firestore et Cloud Storage Région la plus proche pour les fonctions
nam5 ou us-central (multirégional) us-central1
eur3 ou europe-west (multirégional) europe-west1
europe-west4 (Pays-Bas) europe-west1
asia-south1 (Mumbai) asia-east2
asia-south2 (Delhi) asia-east2
australia-southeast2 (Melbourne) australia-southeast1