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 es administrada por Google para que esté disponible de manera redundante en todas las zonas dentro de esas regiones .

Al seleccionar en qué regiones ejecutar sus funciones, sus principales consideraciones deben ser la latencia y la disponibilidad. Generalmente puedes seleccionar regiones cercanas a tus usuarios, pero también debes considerar la ubicación de los otros productos y servicios que utiliza tu 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 ícono de 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) solo 1.ª generación
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) Energy_ Savings_leaf Solo 2.ª generación
  • europe-west1 (Bélgica) hoja_ahorro_energía
  • europe-west2 (Londres) solo 1.ª generación
  • us-central1 (Iowa) hoja_ahorro_energía
  • us-east1 (Carolina del Sur)
  • us-east4 (Virginia del Norte)
  • us-west1 (Oregón) hoja_ahorro_energía

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

  • asia-east2 (Hong Kong) solo 2.ª generación
  • asia-northeast3 (Seúl)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Yakarta)
  • asia-south1 (Mumbai) solo 2.ª generación
  • australia-southeast1 (Sídney)
  • australia-southeast2 (Melbourne) solo 2.ª generación
  • europe-central2 (Varsovia)
  • europe-west2 (Londres) solo 2.ª generación
  • europe-west3 (Frankfurt)
  • europe-west6 (Zúrich) hoja_ahorro_energía
  • northamerica-northeast1 (Montreal) hoja_ahorro_energía
  • northamerica-northeast2 (Toronto) Energy_ Savings_leaf Solo 2.ª generación
  • southamerica-east1 (Sao Paulo) hoja_ahorro_energía
  • southamerica-west1 (Santiago, Chile) solo 2da generación
  • us-west2 (Los Ángeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

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

Mejores prácticas para especificar una 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 evento, como un depósito de Cloud Storage. Si necesita especificar 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 configurar la región donde se ejecuta una función, configure el parámetro region en la definición de la función como se muestra:

Nodo.js

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

Pitón

# 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

Puede especificar varias regiones pasando varias cadenas de región separadas por comas en region . También tenga en cuenta que, al especificar una región para muchos tipos de desencadenadores en segundo plano, deberá especificar el filtro de eventos correcto junto con la región. En el ejemplo anterior, este es el document de Cloud Firestore que emite el evento. Para un activador de Cloud Storage, el filtro de eventos podría ser bucket ; para un activador de Pub/Sub sería topic , y así sucesivamente.

Consulte cambiar la región de una función para obtener más información sobre cómo cambiar la región de una función que maneja el tráfico de producción.

Funciones HTTP y invocables por el cliente

Para HTTP y funciones invocables, le recomendamos que primero configure 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 la misma 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 las redirecciones, puede enviar 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 último paso es garantizar 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 configurar 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, debes implementar funciones para que sean idempotentes . Si su función ya es idempotente, puede volver a implementar la función en la nueva región con el mismo desencadenador de evento y eliminar la función anterior después de verificar que la nueva función esté recibiendo tráfico correctamente. Durante esta transición, ambas funciones recibirán eventos. Consulte cambiar la región de una función para conocer la secuencia recomendada de comandos para cambiar regiones de funciones.

Si su función no es idempotente actualmente, 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 región óptima difieren según el tipo de desencadenador de evento:

Tipo de disparador Recomendación de regió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 (consulte la siguiente sección)
Otros Si interactúas con una instancia de Realtime Database, una instancia de Cloud Firestore o un depósito de Cloud Storage dentro de la función, entonces la región recomendada es la misma que si tuvieras una función activada por uno de esos recursos. De lo contrario, utilice 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 del alojamiento sin servidor para obtener recomendaciones.

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

Las regiones disponibles para las funciones no siempre coinciden exactamente 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) están en ubicaciones diferentes, entonces podría experimentar un aumento de la latencia y los costos de facturación .

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

Región/Multiregión para Cloud Firestore y Cloud Storage Región más cercana para funciones
nam5 o us-central (varias regiones) 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