获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Ubicaciones de funciones en la nube

Cloud Functions es regional , lo que significa que la infraestructura que ejecuta su Cloud Function está ubicada en regiones específicas y Google la administra para que esté disponible de manera redundante en todas las zonas dentro de esas regiones .

Al seleccionar en qué regiones ejecutar sus funciones, sus consideraciones principales deben ser la latencia y la disponibilidad. Por lo general, puede seleccionar regiones cercanas a sus usuarios, pero también debe considerar la ubicación de los otros productos y servicios que utiliza su aplicación. El uso de servicios en varias regiones puede afectar la latencia de su aplicación, así como el precio .

Regiones admitidas

En las listas de esta sección, el icono de la hoja de ahorro de energía indica que la electricidad para esta región se produce con bajas emisiones de carbono. Para obtener más información, consulte Energía libre de carbono para las regiones de Google Cloud .

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

  • asia-east1 (Taiwán)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • europe-west1 (Bélgica) energy_savings_leaf
  • europe-west2 (Londres)
  • us-central1 (Iowa) hoja_de_ahorro_energético
  • us-east1 (Carolina del Sur)
  • us-east4 (Norte de Virginia)
  • us-west1 (Oregón) energy_savings_leaf

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

  • asia-northeast3 (Seúl)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Yakarta)
  • asia-south1 (Mumbai)
  • australia-southeast1 (Sídney)
  • europe-central2 (Varsovia)
  • europe-west3 (Fráncfort)
  • europe-west6 (Zúrich) energy_savings_leaf
  • northamerica-northeast1 (Montreal) energy_savings_leaf
  • southamerica-east1 (Sao Paulo) energy_savings_leaf
  • us-west2 (Los Ángeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

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

Prácticas recomendadas para cambiar de región

De forma predeterminada, las funciones se ejecutan en la región us-central1 . Tenga en cuenta que esto puede ser diferente de la región de un origen de eventos, como un depósito de Cloud Storage. Si necesita cambiar la región donde se ejecuta una función, siga las recomendaciones de esta sección para cada tipo de activador de función.

Para establecer la región donde se ejecuta una función, establezca el parámetro de la region en la definición de la función como se muestra:

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

Puede especificar varias regiones pasando varias cadenas de regiones separadas por comas en functions.region() . Consulte cambiar la región de una función para obtener más información sobre los procedimientos recomendados.

HTTP y funciones invocables por el cliente

Para HTTP y funciones a las que se puede llamar, le recomendamos que primero establezca su función en la región de destino, o más cercana a donde se encuentran la mayoría de los clientes esperados, y luego modifique su función original para redirigir su solicitud HTTP a la nueva función (pueden tener el mismo nombre). Si los clientes de su función HTTP admiten redireccionamientos, simplemente puede cambiar su función original para devolver un estado de redireccionamiento HTTP (301) junto con la URL de su nueva función. Si sus clientes no manejan bien los redireccionamientos, puede transferir la solicitud de la función original a la nueva función iniciando una nueva solicitud de la función original a la nueva función. El paso final es asegurarse de que todos los clientes llamen a la nueva función.

Selección de ubicación del lado del cliente para funciones invocables

Con respecto a la función invocable, las configuraciones invocables del cliente deben seguir las mismas pautas que las funciones HTTP. El cliente también puede especificar una región y debe hacerlo si la función se ejecuta en cualquier región que no sea us-central1 .

Para establecer regiones en el cliente, especifique la región deseada en la inicialización:

Rápido

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

C objetivo

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

Web


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

Unidad

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

Funciones de fondo

Las funciones en segundo plano adoptan una semántica de entrega de eventos al menos una vez, lo que significa que, en algunas circunstancias, pueden recibir eventos duplicados. Por lo tanto, debe implementar funciones para ser idempotente . Si su función ya es idempotente, puede volver a implementar la función en la nueva región con el mismo activador de eventos y eliminar la función anterior después de verificar que la función nueva recibe el tráfico correctamente. Durante esta transición, ambas funciones recibirán eventos. Consulte cambiar la región de una función para ver la secuencia de comandos recomendada para cambiar las regiones de las funciones.

Si su función no es actualmente idempotente, o su idempotencia no se extiende más allá de la región, le recomendamos que primero implemente la idempotencia antes de mover la función.

Las recomendaciones de regiones óptimas difieren según el tipo de activación del evento:

Tipo de disparador Región Recomendación
Tienda de fuego en la nube Región más cercana a la ubicación de la instancia de Cloud Firestore (consulte la siguiente sección)
Base de datos en tiempo real Siempre us-central1
Almacenamiento en la nube Región más cercana a la ubicación del depósito de Cloud Storage (ver la siguiente sección)
Otros Si está interactuando con una instancia de Realtime Database, una instancia de Cloud Firestore o un depósito de Cloud Storage dentro de la función, la región recomendada es la misma que si tuviera una función activada por uno de esos recursos. De lo contrario, use la región predeterminada de us-central1 . Tenga en cuenta también que las funciones conectadas a Firebase Hosting deben estar ubicadas en us-central1 .

Selección de regiones según las ubicaciones de Cloud Firestore y Cloud Storage

Las regiones disponibles para las funciones no siempre coinciden con precisión con las regiones disponibles para su base de datos de Cloud Firestore y sus depósitos de Cloud Storage.

Tenga en cuenta que si su función y su recurso (instancia de base de datos o depósito de Cloud Storage) se encuentran en diferentes ubicaciones, es posible que experimente una mayor latencia y costos de facturación .

Aquí hay un mapeo de las regiones compatibles con las funciones más cercanas para Cloud Firestore y Cloud Storage, para los casos en que la misma región no es compatible:

Región/múltiples regiones para Cloud Firestore y Cloud Storage Región más cercana para funciones
nam5 o us-central (multi-región) us-central1
eur3 o europe-west (multi-región) europe-west1
asia-south1 (Mumbai) asia-east2