获取我们在 Firebase 峰会上发布的所有信息,了解 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 selezioni le regioni in cui eseguire le tue funzioni, le tue 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 di servizi in più regioni può influire sulla latenza dell'app e sui prezzi .

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

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

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

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (San Paolo)
  • europe-west3 (Francoforte)
  • europe-west6 (Zurigo)
  • europe-central2 (Varsavia)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • 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.

Migliori pratiche per cambiare regione

Per impostazione predefinita, le funzioni vengono eseguite nella regione us-central1 . Tieni presente che potrebbe essere diverso dalla regione di un'origine evento, ad esempio un bucket di Cloud Storage. Se è necessario modificare la regione in cui viene eseguita una funzione, seguire i consigli in questa sezione per ciascun 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) => {
      // ...
    });

Puoi specificare più regioni passando più stringhe di regioni separate da virgole in functions.region() . Per ulteriori informazioni sulle procedure consigliate, vedere modificare la regione di una funzione .

HTTP e funzioni richiamabili dal client

Per le funzioni HTTP e richiamabili, ti consigliamo di impostare prima la tua funzione nella regione di destinazione, o più vicino a dove si trovano i clienti più attesi, quindi modificare la tua funzione originale per reindirizzare la sua richiesta HTTP alla nuova funzione (possono avere la stessa 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 inoltrare la richiesta dalla funzione originale alla nuova funzione avviando una nuova richiesta dalla funzione originale alla nuova funzione. Il passaggio finale è assicurarsi che tutti i client stiano chiamando la nuova funzione.

Selezione della posizione lato client per le funzioni richiamabili

Per quanto riguarda la funzione richiamabile, le configurazioni 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 qualsiasi regione diversa da us-central1 .

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

Veloce

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 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, dovresti implementare le funzioni per 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. Vedere modificare la regione di una funzione per la sequenza consigliata di comandi per modificare le regioni per le 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 la regione 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 di Cloud Firestore (consulta la sezione successiva)
Database in tempo reale Sempre us-central1
Archiviazione su cloud Regione più vicina alla posizione del bucket di Cloud Storage (consulta 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. Altrimenti, usa la regione predefinita di us-central1 . Tieni inoltre presente 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 database Cloud Firestore e i bucket di 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 potenzialmente 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 (multi-regione) us-central1
eur3 o europe-west (multiregione) europe-west1
asia-south1 (Mumbai) asia-east2