Posizioni di Cloud Functions

Cloud Functions è regionale , il che significa che l'infrastruttura che esegue la tua Cloud Function 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 considerazioni principali dovrebbero essere la latenza e la disponibilità. In genere puoi selezionare le regioni vicine ai tuoi utenti, ma dovresti considerare anche la posizione degli altri prodotti e servizi utilizzati dalla tua app. L'utilizzo di servizi in più regioni può influire sulla latenza dell'app, nonché 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 a zero emissioni di carbonio per le regioni Google Cloud .

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

  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong) solo di prima generazione
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) Energy_Savings_leaf Solo 2a generazione
  • europe-west1 (Belgio) Energy_ Savings_leaf
  • europe-west2 (Londra) solo di prima generazione
  • us-central1 (Iowa) energia_risparmio_foglia
  • us-east1 (Carolina del Sud)
  • us-east4 (Virginia settentrionale)
  • us-west1 (Oregon) energia_risparmio_foglia

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

  • asia-east2 (Hong Kong) solo di seconda generazione
  • asia-northeast3 (Seul)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south1 (Mumbai) solo 2a generazione
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne) solo di seconda generazione
  • europe-central2 (Varsavia)
  • europe-west2 (Londra) solo di seconda generazione
  • europe-west3 (Francoforte)
  • europe-west6 (Zurigo) risparmio energetico_foglia
  • northamerica-northeast1 (Montreal) risparmio_energia_foglia
  • northamerica-northeast2 (Toronto) Energy_ Savings_leaf Solo 2a generazione
  • southamerica-east1 (San Paolo) Energy_ Savings_leaf
  • southamerica-west1 (Santiago, Cile) solo di 2a generazione
  • 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 progetti possono condividere lo stesso nome.

Migliori pratiche per specificare una regione

Per impostazione predefinita, le funzioni vengono eseguite nell'area us-central1 . Tieni presente che potrebbe essere diversa dalla regione di un'origine evento, ad esempio un bucket Cloud Storage. Se è necessario specificare 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:

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Pitone

# 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

È possibile specificare più regioni passando più stringhe di regioni separate da virgole in region . Tieni inoltre presente che, quando specifichi una regione per molti tipi di trigger in background, dovrai specificare il filtro eventi corretto insieme alla regione. Nell'esempio precedente, questo è il document Cloud Firestore che emette l'evento. Per un trigger di Cloud Storage il filtro eventi potrebbe essere bucket ; per un trigger Pub/Sub sarebbe topic e così via.

Vedi modificare l'area di una funzione per ulteriori informazioni sulla modifica dell'area per una funzione che gestisce il traffico di produzione.

Funzioni HTTP e richiamabili dal client

Per le funzioni HTTP e richiamabili, ti consigliamo di impostare prima la funzione sulla regione di destinazione, o più vicina a dove si trovano i clienti più attesi, e quindi modificare la 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 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 proxy la richiesta dalla funzione originale alla nuova funzione avviando una nuova richiesta dalla funzione originale alla nuova funzione. Il passaggio finale consiste nel garantire che tutti i client chiamino 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 una regione diversa da us-central1 .

Per impostare le regioni sul client, specificare la regione desiderata al momento dell'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 di sfondo

Le funzioni in background adottano una semantica di distribuzione degli eventi almeno una volta, il che significa che in alcune circostanze potrebbero ricevere eventi duplicati. Quindi, dovresti implementare funzioni per essere idempotenti . Se la tua funzione è già idempotente, puoi ridistribuirla nella nuova regione con lo stesso trigger di evento e rimuovere la vecchia funzione dopo aver verificato che la nuova funzione riceve 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.

Le raccomandazioni sulla regione ottimale differiscono in base al tipo di attivazione dell'evento:

Tipo di trigger Raccomandazione della regione
Cloud Fire Store Regione più vicina alla posizione dell'istanza Cloud Firestore (vedi la sezione successiva)
Banca dati in tempo reale Sempre us-central1
Archiviazione nel 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 Cloud Firestore o un bucket Cloud Storage all'interno della funzione, la regione consigliata è la stessa come se avessi una funzione attivata da una di quelle risorse. Altrimenti, utilizza la regione predefinita us-central1 . Le funzioni connesse a Firebase Hosting possono trovarsi in qualsiasi regione, ma consulta la panoramica dell'hosting serverless per consigli.

Selezione delle regioni in base alle posizioni 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 bucket Cloud Storage.

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

Di seguito è riportata 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 (più regioni) 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