Località di Cloud Functions

Cloud Functions è regionale, il che significa che l'infrastruttura che esegue si trova in regioni specifiche ed è gestita da Google per essere in modo ridondante tutte le zone all'interno di quelle regioni.

Quando selezioni le regioni in cui eseguire le funzioni, in termini di latenza e disponibilità. Puoi in genere selezionano regioni vicine ai tuoi utenti, ma dovrebbe considerare anche la posizione altri prodotti e servizi usati dalla tua app. L'utilizzo dei servizi in più regioni può influire la latenza e i prezzi dell'app.

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 Cloud Storage. Scopri come specifica la regione in cui viene eseguita una funzione più avanti in questa pagina.

Aree geografiche supportate

Negli elenchi di questa sezione, la classe foglio_per_il_risparmio_energetico indica che l'elettricità per questa regione viene prodotta con a basse emissioni di anidride carbonica. Per ulteriori informazioni, consulta Energia a zero emissioni di CO2 per le regioni Google Cloud.

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

  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong) solo 1a generazione
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) energy_savings_leaf Solo 2ª gen.
  • europe-west1 (Belgio) foglia_risparmio_energetico
  • europe-west2 (Londra), solo 1a generazione
  • us-central1 (Iowa) foglia_risparmio_energetico
  • us-east1 (Carolina del Sud)
  • us-east4 (Virginia del Nord)
  • us-west1 (Oregon) energy_savings_leaf

Cloud Functions è disponibile nelle seguenti regioni con Prezzi del livello 2:

  • asia-east2 (Hong Kong) solo 2a generazione
  • asia-northeast3 (Seul)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south1 (Mumbai), solo 2a generazione
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne) solo 2ª gen.
  • europe-central2 (Varsavia)
  • europe-west2 (Londra) solo 2ª gen.
  • europe-west3 (Francoforte)
  • europe-west6 (Zurigo) foglia_risparmio_energetico
  • northamerica-northeast1 (Montreal) foglio_per_il_risparmio_energetico
  • northamerica-northeast2 (Toronto) foglia_risparmio_energetico Solo 2a gen.
  • southamerica-east1 (San Paolo) foglia_risparmio_energetico
  • southamerica-west1 (Santiago, Cile) solo 2ª gen.
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Le funzioni in una data regione di un determinato progetto devono essere univoche (caso nomi non sensibili), ma le funzioni possono essere condivise in più regioni o tra progetti con lo stesso nome.

Best practice per la specifica di una 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 Cloud Storage. Se devi specificare la regione in cui viene eseguita una funzione, segui consigli in questa sezione per ogni tipo di trigger di funzione.

Per impostare la regione in cui viene eseguita una funzione, imposta il parametro region nella definizione della funzione come mostrato:

Node.js

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

Python

# 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

Puoi specificare più regioni trasmettendo più regioni separate da virgole stringhe in region. Nota anche che, quando specifichi una regione tipi di trigger in background, devi specificare il filtro eventi corretto insieme alla regione. Nell'esempio precedente, è Cloud Firestore document che emette l'evento. Per un attivatore Cloud Storage, il filtro eventi potrebbe essere bucket; per un trigger Pub/Sub sarà topic e così via.

Per saperne di più sulla modifica della regione di una funzione che gestisce il traffico di produzione, consulta Modificare la regione di una funzione.

Funzioni HTTP e richiamabili dal client

Per le funzioni HTTP e richiamabili, ti consigliamo di impostare prima la funzione sulla regione di destinazione o sulla più vicina a quella in cui si trovano la maggior parte dei clienti previsti, quindi di modificare la funzione originale per reindirizzare la relativa richiesta HTTP alla nuova funzione (che può avere lo stesso nome). Se i client della funzione HTTP supportano reindirizzamenti, puoi semplicemente modificare la funzione originale per restituire un reindirizzamento (301) insieme all'URL della nuova funzione. Se i tuoi clienti 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 consiste nell'assicurarti che tutti i clienti la chiamata alla nuova funzione.

Selezione della località lato client per le funzioni richiamabili

Per quanto riguarda la funzione richiamabile, le configurazioni del client richiamabili devono seguire lo stesso come funzioni HTTP. Il client può inoltre specificare una regione deve farlo se la funzione viene eseguita in qualsiasi regione diversa da us-central1.

Per impostare regioni sul client, specifica la regione desiderata al momento dell'inizializzazione:

Swift

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

Objective-C

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

Web


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

Unity

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 "at-least-once", ovvero che in alcune circostanze potrebbero ricevere eventi duplicati. Dovresti quindi di implementare funzioni idempotente. Se la funzione è già idempotente, puoi ridistribuirla nella nuova regione con lo stesso attivatore evento e rimuovere la vecchia funzione dopo aver verificato che la nuova funzione riceva correttamente il traffico. Durante questa transizione, ricevono eventi. Consulta modificare la regione di una funzione la sequenza consigliata di comandi al fine di cambiare le regioni per le funzioni.

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

I suggerimenti sulla regione ottimale variano in base al tipo di attivatore dell'evento:

Tipo di trigger Suggerimento per regione
Cloud Firestore Regione più vicina alla località dell'istanza Cloud Firestore (vedi la sezione successiva)
Realtime Database Sempre us-central1
Cloud Storage Regione più vicina alla località del bucket Cloud Storage (vedi la sezione successiva)
Altro Se interagisci con un'istanza Realtime Database, un'istanza Cloud Firestore o un bucket Cloud Storage all'interno della funzione, la regione consigliata è la stessa che avresti se avessi una funzione attivata da una di queste risorse. In caso contrario, utilizza la regione predefinita us-central1. Le funzioni connesse a Firebase Hosting possono essere in qualsiasi regione, ma vedi panoramica dell'hosting serverless per suggerimenti.

Selezione delle regioni in base alle località Cloud Firestore e Cloud Storage

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

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

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

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