Ubicaciones de Cloud Functions

Cloud Functions es regional, lo que significa que la infraestructura que ejecuta tus funciones se ubica en regiones específicas y Google la administra para que esté disponible de manera redundante en todas las zonas de esas regiones.

Cuando elijas las regiones en las quieres que se ejecuten tus funciones, los aspectos principales que debes tener en cuenta son la latencia y la disponibilidad. Por lo general, puedes seleccionar regiones cercanas a tus usuarios, pero también debes tener en cuenta la ubicación de otros productos y servicios que tu app use. El uso de servicios en múltiples regiones puede afectar la latencia de la app y los precios.

Regiones admitidas

En las listas de esta sección, el ícono de hoja_de_ahorro_de_energía indica que la electricidad de esta región se produce con bajas emisiones de carbono. Si quieres obtener más información, consulta Energía sin emisiones de carbono para las regiones de Google Cloud.

Cloud Functions está disponible con precios de nivel 1 en las siguientes regiones:

  • asia-east1 (Taiwán)
  • asia-east2 (Hong Kong) solo para la 1ª gen.
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) hoja_de_ahorro_de_energía solo para la 2ª gen.
  • europe-west1 (Bélgica) hoja_de_ahorro_de_energía
  • europe-west2 (solo Londres) solo para la 1ª gen.
  • us-central1 (Iowa) hoja_de_ahorro_de_energía
  • us-east1 (Carolina del Sur)
  • us-east4 (Virginia del Norte)
  • us-west1 (Oregón) hoja_de_ahorro_de_energía

Cloud Functions está disponible con precios de nivel 2 en las siguientes regiones:

  • asia-east2 (Hong Kong) solo para la 2ª gen.
  • asia-northeast3 (Seúl)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Yakarta)
  • asia-south1 (Bombay) solo para la 2ª gen.
  • australia-southeast1 (Sídney)
  • australia-southeast2 (Melbourne) solo para la 2ª gen.
  • europe-central2 (Varsovia)
  • europe-west2 (Londres) solo para la 2ª gen.
  • europe-west3 (Fráncfort)
  • europe-west6 (Zúrich) hoja_de_ahorro_de_energía
  • northamerica-northeast1 (Montreal) hoja_de_ahorro_de_energía
  • northamerica-northeast2 (Toronto) hoja_de_ahorro_de_energía solo para la 2ª gen.
  • southamerica-east1 (São Paulo) hoja_de_ahorro_de_energía
  • southamerica-west1 (Santiago, Chile) solo para la 2ª gen.
  • us-west2 (Los Ángeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Las funciones en una región o proyecto determinados deben tener nombres únicos (no distinguen mayúsculas de minúsculas), pero las funciones entre regiones o proyectos pueden compartir el mismo nombre.

Prácticas recomendadas para el cambio de región

Según la configuración predeterminada, las funciones se ejecutan en la región us-central1. Ten presente que puede ser distinta a la región de la fuente de un evento, por ejemplo, un bucket de Cloud Storage. Si necesitas cambiar la región en la que se ejecuta una función, sigue las recomendaciones de esta sección según el tipo de activador de función.

Para configurar la región en la que se ejecuta una función, configura el parámetro region en la definición de la función como se muestra a continuación:

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

Si quieres especificar varias regiones, pasa múltiples strings de regiones separadas por comas en el método functions.region(). Para obtener más información acerca de los procedimientos recomendados, consulta Cambia la región de una función.

Funciones de HTTP y funciones que admiten llamadas de clientes

Para las funciones de HTTP y las funciones que admiten llamadas, te recomendamos que primero configures tu función con la región de destino o la región más cercana en la que se ubica la mayoría de los clientes estimados y, a continuación, alteres la función original para redireccionar su solicitud de HTTP a la función nueva (pueden tener el mismo nombre). Si los clientes de tu función de HTTP admiten redireccionamientos, simplemente cambia tu función original para volver a un estado de redireccionamiento de HTTP (301), además de la URL de tu función nueva. Si tus clientes no controlan de buena forma los redireccionamientos, puedes realizar la solicitud mediante un proxy desde la función original hasta la función nueva si inicializas una solicitud nueva desde la función original hasta la función nueva. El paso final es asegurarse de que todos los clientes llamen a la función nueva.

Selección de la ubicación del cliente para funciones que admiten llamadas

En cuanto a la función que admite llamadas, la configuración que admite llamadas de clientes debe seguir los mismos lineamientos de las funciones de HTTP. Además, el cliente puede especificar una región y debe hacerlo si la función se ejecuta en una región que no sea us-central1.

Para configurar las regiones del cliente, debes especificar la región deseada en el momento de la inicialización:

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

Funciones en segundo plano

Las funciones en segundo plano adoptan una semántica de entrega de eventos de “al menos una vez”, lo que significa que, en algunas circunstancias, es posible que reciban eventos duplicados. Por lo tanto, debes implementar funciones que sean idempotentes. Si tu función ya es idempotente, puedes volver a implementarla en la región nueva con el mismo activador de eventos y quitar la función anterior luego de verificar que la función nueva recibe tráfico correctamente. Durante esta transición ambas funciones recibirán eventos. Consulta Cambia la región de una función a fin de obtener más información sobre la secuencia recomendada de comandos para cambiar las regiones de las funciones.

Si tu función no es idempotente, o si su idempotencia no va más allá de la región, te recomendamos que primero implementes la idempotencia antes de mover la función.

Las recomendaciones de las regiones óptimas varían según el tipo de activador de evento:

Tipo de activador Recomendación de región
Cloud Firestore La región más cercana a la ubicación de la instancia de Cloud Firestore (consulta la siguiente sección)
Realtime Database Siempre us-central1
Cloud Storage La región más cercana a la ubicación del bucket de Cloud Storage (consulta la siguiente sección)
Otros Si interactúas con una instancia de Realtime Database o Cloud Firestore, o un bucket de Cloud Storage dentro de la función, la región recomendada es la misma que si se activara una de tus funciones mediante uno de esos recursos. En caso contrario, usa la región predeterminada de us-central1. Las funciones conectadas a Firebase Hosting pueden estar en cualquier región, pero consulta la descripción general de hosting sin servidores para obtener recomendaciones.

Selecciona regiones según las ubicaciones de Cloud Firestore y Cloud Storage

Las regiones disponibles para las funciones no siempre coinciden de forma precisa con las de la base de datos de Cloud Firestore y los buckets de Cloud Storage.

Ten en cuenta que, si tu función y recurso (instancia de base de datos o bucket de Cloud Storage) se encuentran en ubicaciones distintas, es posible que observes aumentos en la latencia y en los costos de facturación.

Aquí se muestra una asignación de las regiones más cercanas que admiten funciones para Cloud Firestore y Cloud Storage en casos en los que no se admite la misma región:

Región o multirregión para Cloud Firestore y Cloud Storage Región más cercana para las funciones
nam5 o us-central (multirregión) us-central1
eur3 o europe-west (multirregión) europe-west1
europe-west4 (Países Bajos) europe-west1
asia-south1 (Bombay) asia-east2
asia-south2 (Delhi) asia-east2
australia-southeast2 (Melbourne) australia-southeast1