Posizioni delle funzioni cloud

Funzioni Cloud è regionale, il che significa l'infrastruttura che gestisce la funzione Cloud si trova in regioni specifiche ed è gestito da Google per essere ridondante disponibile in tutte le zone all'interno di tali regioni .

Quando si selezionano le regioni in cui eseguire le funzioni, le considerazioni principali dovrebbero essere la latenza e la disponibilità. È generalmente possibile selezionare regioni vicine agli utenti, ma si dovrebbe anche prendere in considerazione la posizione degli altri prodotti e servizi che i vostri usi app. Utilizzando i servizi su più regioni può influenzare la latenza della tua app, così come i prezzi .

Funzioni Cloud è disponibile nelle seguenti regioni con Livello 1 dei prezzi :

  • us-central1 (Iowa)
  • us-east1 (South Carolina)
  • us-east4 (Virginia del Nord)
  • europe-west1 (Belgio)
  • europe-west2 (Londra)
  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)

Funzioni Cloud è disponibile nelle seguenti regioni con Livello 2 prezzi :

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (Sao Paulo)
  • europe-west3 (Francoforte)
  • europe-west6 (Zurigo)
  • europe-central2 (Varsavia)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Jakarta)
  • asia-northeast3 (Seoul)

Le funzioni in una determinata regione in un determinato progetto devono avere nomi univoci (senza distinzione tra maiuscole e minuscole), ma le funzioni tra regioni o tra progetti possono condividere lo stesso nome.

Best practice per cambiare regione

Per impostazione predefinita, le funzioni eseguite in us-central1 regione. Tieni presente che potrebbe essere diverso dall'area geografica di un'origine evento, ad esempio un bucket Cloud Storage. Se è necessario modificare la regione in cui viene eseguita una funzione, seguire i consigli in questa sezione per ogni tipo di trigger di funzione.

Per impostare la regione in cui viene eseguito un funzione, impostare la region parametro nella definizione di funzione come illustrato:

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

È possibile specificare più regioni a passare più stringhe regione separati da virgola in functions.region() . Vedere cambiare regione di una funzione per ulteriori informazioni sulle procedure consigliate.

HTTP e funzioni richiamabili dal client

Per le funzioni HTTP e richiamabili, ti consigliamo di impostare prima la tua funzione sulla regione di destinazione o più vicina a dove si trovano i clienti più attesi, quindi modificare la funzione originale per reindirizzare la sua richiesta HTTP alla nuova funzione (possono avere lo stesso nome). Se i client della tua funzione HTTP supportano i reindirizzamenti, puoi semplicemente modificare la tua funzione originale per restituire uno stato di reindirizzamento HTTP (301) insieme all'URL della tua nuova funzione. Se i vostri clienti non gestiscono bene redirect, è possibile delega la richiesta dalla funzione originaria alla nuova funzione avviando una nuova richiesta da parte della funzione originale alla nuova funzione. Il passaggio finale consiste nell'assicurarsi che tutti i client stiano chiamando la nuova funzione.

Selezione della posizione lato client per funzioni richiamabili

Per quanto riguarda la funzione richiamabile, le configurazioni richiamabili del client devono seguire le stesse linee guida delle funzioni HTTP. Il client può anche specificare una regione, e deve farlo se la funzione viene eseguito in qualsiasi regione diversa da us-central1 .

Per impostare le regioni sul client, specificare la regione desiderata all'inizializzazione:

Swift

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

Obiettivo-C

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

ragnatela


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

Funzioni in background

Le funzioni in background adottano una semantica di consegna degli eventi almeno una volta, il che significa che in alcune circostanze possono ricevere eventi duplicati. Quindi, si dovrebbe implementare le funzioni di essere idempotente . Se la tua funzione è già idempotente, puoi ridistribuire la funzione nella nuova regione con lo stesso trigger di evento e rimuovere la vecchia funzione dopo aver verificato che la nuova funzione riceva correttamente il traffico. Durante questa transizione, entrambe le funzioni riceveranno eventi. Vedi cambiate regione di una funzione per la sequenza consigliata di comandi per modificare regioni per funzioni.

Se la tua funzione non è attualmente idempotente o la sua idempotenza non si estende oltre la regione, ti consigliamo di implementare prima l'idempotenza prima di spostare la funzione.

I consigli per l'area geografica ottimale differiscono in base al tipo di attivazione dell'evento:

Tipo di trigger Raccomandazione della regione
Cloud Firestore Regione più vicina alla posizione dell'istanza Cloud Firestore (vedi la sezione successiva)
Database in tempo reale Sempre us-central1
Archiviazione cloud Regione più vicina alla posizione del bucket Cloud Storage (vedi la sezione successiva)
Altri Se stai interagendo con un'istanza di Realtime Database, un'istanza di Cloud Firestore o un bucket di Cloud Storage all'interno della funzione, l'area geografica consigliata è la stessa di una funzione attivata da una di queste risorse. In caso contrario, utilizzare l'area predefinita di us-central1 . Si noti inoltre che le funzioni collegate alla Firebase Hosting devono essere situati in us-central1 .

Selezione delle regioni in base alle posizioni di Cloud Firestore e Cloud Storage

Le aree geografiche disponibili per le funzioni non sempre corrispondono esattamente alle aree geografiche disponibili per il database Cloud Firestore e i bucket Cloud Storage.

Si noti che se la funzione e la vostra risorsa (istanza di database o secchio Cloud Storage) sono in posizioni diverse, allora si potrebbe potenzialmente verificarsi un numero maggiore latenza e costi di fatturazione .

Ecco una mappatura delle funzioni-supportati più vicini regioni per Cloud FireStore e Cloud Storage, per i casi in cui la stessa regione non è supportato:

Regione/multiregione per Cloud Firestore e Cloud Storage Regione più vicina per le funzioni
nam5 o us-central (multi-regione) us-central1
eur3 o europe-west (multi-regione) europe-west1
asia-south1 (Mumbai) asia-east2