Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

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 le 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ù aree geografiche può influire sulla latenza dell'app e sui prezzi .

Cloud Functions è disponibile nelle seguenti regioni con prezzi Tier 1 :

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

Cloud Functions è disponibile nelle seguenti regioni con prezzi Tier 2 :

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • europe-west3 (Francoforte)
  • europe-west6 (Zurigo)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (San Paolo)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • 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 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 diversa dalla regione di un'origine evento, ad esempio un bucket di archiviazione. 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 della 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 la 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 funzione HTTP supportano i reindirizzamenti, puoi semplicemente modificare la funzione originale per restituire uno stato di reindirizzamento HTTP (301) insieme all'URL della nuova funzione. Se i tuoi client non gestiscono bene i reindirizzamenti, puoi eseguire il proxy della richiesta dalla funzione originale alla nuova funzione avviando una nuova richiesta dalla funzione originale alla nuova funzione. Il passaggio finale è garantire che tutti i client chiamino la nuova funzione.

Selezione della posizione lato client per funzioni richiamabili

Per quanto riguarda la funzione richiamabile, le impostazioni richiamabili dal 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 us-central1 diversa da us-central1 .

Per impostare le regioni sul client, specificare la regione desiderata durante l'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, 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 stia ricevendo correttamente il traffico. Durante questa transizione, entrambe le funzioni riceveranno eventi. Vedere modificare la regione di una funzione per la sequenza di comandi consigliata 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 idempotenza prima di spostare la funzione.

I consigli per la regione ottimale variano in base al tipo di attivazione dell'evento:

Tipo di trigger Raccomandazione regionale
Cloud Firestore Regione più vicina alla posizione dell'istanza Cloud Firestore (vedere la sezione successiva)
Database in tempo reale Sempre us-central1
Conservazione Regione più vicina alla posizione del bucket di archiviazione (vedere la sezione successiva)
Altri Se stai interagendo con un'istanza di Realtime Database, un'istanza Cloud Firestore o un bucket di archiviazione all'interno della funzione, la regione consigliata è la stessa di una funzione attivata da una di quelle risorse. Altrimenti, utilizza la regione predefinita di us-central1 . Tieni presente inoltre che le funzioni connesse a Firebase Hosting devono trovarsi in us-central1 .

Selezione di regioni in base a Cloud Firestore e posizioni di archiviazione

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 del database o bucket di archiviazione) 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 / Multi-regione per Cloud Firestore e archiviazione Regione più vicina per le funzioni
nam5 o us-central (multi-regione) us-central1
eur3 o europe-west (multi-region) europe-west1
asia-south1 (Mumbai) asia-east2