Ir a la consola

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 varias ubicaciones puede afectar la latencia de la app y los precios.

Cloud Functions está disponible en las siguientes regiones:

  • us-central1 (Iowa)
  • us-east1 (Carolina del Sur)
  • us-east4 (Virginia del Norte)
  • europe-west1 (Bélgica)
  • europe-west2 (Londres)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokio)

Las funciones en una región o proyecto determinados deben tener un nombre único (distinción entre mayúsculas y minúsculas), pero las funciones entre regiones o proyectos pueden compartir el mismo nombre.

Recomendaciones 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 depósito de almacenamiento. 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 tal 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:"us-central1")

Objective-C

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

Web


var functions = firebase.app().functions('us-central1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("us-central1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("us-central1");

Unity

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("us-central1");

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 debe ser us-central1
Storage La región más cercana a la ubicación del depósito de Storage (consulta la siguiente sección)
Otro Si interactúas con una instancia de Realtime Database o Cloud Firestore, o un depósito de Storage dentro de la función, la región recomendada es la misma que si una función tuya se activara mediante uno de esos recursos. En caso contrario, usa la región predeterminada de us-central1. Además, ten en cuenta que las funciones conectadas a Firebase Hosting deben ubicarse en us-central1.

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

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

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

A continuación, se muestra la asignación de las regiones más cercanas que admiten funciones para Cloud Firestore y Cloud Storage.

Región/multirregión para Cloud Firestore y Storage Región más cercana para las funciones
nam5 o us-central (multirregión) us-central1
us-east1 (Carolina del Sur) us-east1
us-east4 (Virginia del Norte) us-east4
northamerica-northeast1 (Montreal) us-central1
eur3 o europe-west (multirregión) europe-west1
europe-west2 (Londres) europe-west2
europe-west3 (Fráncfort) europe-west1
asia-northeast1 (Tokio) asia-northeast1
asia-south1 (Bombay) asia-east2
australia-southeast1 (Sídney) asia-northeast1
southamerica-east1 (São Paulo) us-east1