了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Posizioni di Cloud Functions

Cloud Functions è regionale , il che significa che l'infrastruttura che esegue la tua funzione Cloud si trova in regioni specifiche ed è gestita da Google per essere disponibile in modo ridondante 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à. In genere puoi selezionare regioni vicine ai tuoi utenti, ma dovresti anche considerare la posizione degli altri prodotti e servizi utilizzati dalla tua app. L'utilizzo dei servizi in più aree geografiche può influire sulla latenza dell'app e sui prezzi .

Regioni supportate

Negli elenchi di questa sezione, l'icona energy_savings_leaf indica che l'elettricità per questa regione è prodotta con basse emissioni di carbonio. Per ulteriori informazioni, consulta Energia senza emissioni di anidride carbonica per le aree geografiche di Google Cloud .

Cloud Functions è disponibile nelle seguenti aree geografiche con prezzi di livello 1 :

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

Cloud Functions è disponibile nelle seguenti aree geografiche con prezzi di livello 2 :

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

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 vengono eseguite nella regione us-central1 . Tieni presente che potrebbe essere diverso dall'area geografica di un'origine evento, ad esempio un bucket Cloud Storage. Se è necessario modificare l'area geografica 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 eseguita una funzione, impostare il parametro region nella definizione della funzione come mostrato:

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

È possibile specificare più regioni passando più stringhe di regioni separate da virgole in functions.region() . Vedere modificare l'area di una funzione per ulteriori informazioni sulle procedure consigliate.

Funzioni HTTP e richiamabili dal client

Per le funzioni HTTP e richiamabili, ti consigliamo di impostare prima la tua funzione sulla regione di destinazione, o più vicino a dove si trovano i clienti più attesi, e quindi modificare la tua 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 tuoi client non gestiscono bene i reindirizzamenti, puoi delegare la richiesta dalla funzione originale alla nuova funzione avviando una nuova richiesta dalla funzione originale alla nuova funzione. Il passaggio finale consiste nell'assicurarsi che tutti i client chiamino la nuova funzione.

Selezione della posizione lato client per le funzioni richiamabili

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

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

Rapido

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

Androide

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 di sfondo

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, dovresti implementare le funzioni in modo che siano idempotenti . 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. Vedere modifica dell'area di una funzione per la sequenza consigliata di comandi per modificare le aree delle 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 sulla regione ottimale differiscono in base al tipo di attivazione dell'evento:

Tipo di trigger Raccomandazione regionale
CloudFirestore Regione più vicina alla posizione dell'istanza di 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, la regione consigliata è la stessa come se avessi una funzione attivata da una di queste risorse. In caso contrario, usa la regione predefinita di us-central1 . Si noti inoltre che le funzioni connesse a Firebase Hosting devono trovarsi in us-central1 .

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

Le regioni disponibili per le funzioni non sempre corrispondono esattamente alle regioni disponibili per il tuo database Cloud Firestore e i tuoi bucket Cloud Storage.

Tieni presente che se la tua funzione e la tua risorsa (istanza di database o bucket di Cloud Storage) si trovano in posizioni diverse, potresti riscontrare un aumento della latenza e dei costi di fatturazione .

Ecco una mappatura delle regioni supportate dalle funzioni più vicine per Cloud Firestore e Cloud Storage, per i casi in cui la stessa regione non è supportata:

Regione/Multiregione per Cloud Firestore e Cloud Storage Regione più vicina per le funzioni
nam5 o us-central (multiregione) us-central1
eur3 o europe-west (multiregione) europe-west1
europe-west4 (Paesi Bassi) europe-west1
asia-south1 (Mumbai) asia-east2
asia-south2 (Delhi) asia-east2
australia-southeast2 (Melbourne) australia-southeast1