Ir a la consola

Ubicaciones de Cloud Functions

Cloud Functions es regional, lo que significa que la infraestructura que ejecuta tus funciones de Cloud Functions 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)
  • europe-west1 (Bélgica)
  • 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 llaman 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 las regiones para Cloud Firestore y Storage

Las regiones de las funciones no coinciden de forma precisa con las regiones disponibles para los proyectos de Firebase. Si especificaste una región cuando creaste tu proyecto de Firebase, entonces será la misma región en la que Firebase crea tu instancia de Cloud Firestore y, además, será la región predeterminada para los depósitos de Storage. A continuación, se muestra la asignación de la región de funciones más cercana para las funciones activadas por Cloud Firestore y Storage:

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