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.
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.
Aprende a
especificar la región en la que se ejecuta una función
más adelante en esta página.
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.
Precios del nivel 1
Cloud Functions está disponible con precios de nivel 1 en las siguientes regiones:
Región | Ubicación | Versiones de productos compatibles | Emisiones de CO2 |
---|---|---|---|
asia-east1 |
Taiwán | 1st gen, 2nd gen | |
asia-east2 |
Hong Kong | Solo para la 1ª gen. | |
asia-northeast1 |
Tokio | 1st gen, 2nd gen | |
asia-northeast2 |
Osaka | 1st gen, 2nd gen | |
europe-north1 |
Finlandia | Solo para 2nd gen | energy_savings_leaf |
europe-southwest1 |
Madrid | Solo para 2nd gen | |
europe-west1 |
Bélgica | 1st gen, 2nd gen | energy_savings_leaf |
europe-west4 |
Países Bajos | Solo para 2nd gen | |
europe-west8 |
Milán | Solo para 2nd gen | |
europe-west9 |
París | Solo para 2nd gen | energy_savings_leaf |
me-west1 |
Tel Aviv | Solo para 2nd gen | |
europe-west2 |
Londres | Solo para la 1ª gen. | |
us-central1 |
Iowa | 1st gen, 2nd gen | energy_savings_leaf |
us-east1 |
Carolina del Sur | 1st gen, 2nd gen | |
us-east4 |
Virginia del Norte | 1st gen, 2nd gen | |
us-east5 |
Columbus | Solo para 2nd gen | |
us-south1 |
Dallas | Solo para 2nd gen | |
us-west1 |
Oregón | 1st gen, 2nd gen | energy_savings_leaf |
Precios del nivel 2
Cloud Functions está disponible con precios de nivel 2 en las siguientes regiones:
Región | Ubicación | Versiones de productos compatibles | Emisiones de CO2 |
---|---|---|---|
asia-east2 |
Hong Kong | Solo para 2nd gen | |
asia-northeast3 |
Seúl | 1st gen, 2nd gen | |
asia-southeast1 |
Singapur | 1st gen, 2nd gen | |
asia-southeast2 |
Yakarta | 1st gen, 2nd gen | |
asia-south1 |
Bombay | Solo para 2nd gen | |
asia-south2 |
Delhi, India | Solo para 2nd gen | |
australia-southeast1 |
Sídney | 1st gen, 2nd gen | |
australia-southeast2 |
Melbourne | Solo para 2nd gen | |
europe-central2 |
Varsovia | 1st gen, 2nd gen | |
europe-west2 |
Londres | Solo para 2nd gen | |
europe-west3 |
Fráncfort | 1st gen, 2nd gen | energy_savings_leaf |
europe-west6 |
Zúrich | 1st gen, 2nd gen | energy_savings_leaf |
europe-west10 |
Berlín | Solo para 2nd gen | |
europe-west12 |
Turín | Solo para 2nd gen | |
me-central1 |
Doha | Solo para 2nd gen | |
me-central2 |
Dammam | Solo para 2nd gen | |
northamerica-northeast1 |
Montreal | 1st gen, 2nd gen | energy_savings_leaf |
northamerica-northeast2 |
Toronto | Solo para 2nd gen | energy_savings_leaf |
southamerica-east1 |
Sao Paulo | 1st gen, 2nd gen | energy_savings_leaf |
southamerica-west1 |
Santiago, Chile | Solo para 2nd gen | |
us-west2 |
Los Ángeles | 1st gen, 2nd gen | |
us-west3 |
Salt Lake City | 1st gen, 2nd gen | |
us-west4 |
Las Vegas | 1st gen, 2nd gen |
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 especificar una 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:
Node.js
exports.firestoreAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
Python
# 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
Si quieres especificar varias regiones, pasa múltiples strings de regiones separadas por comas en el método region
. Además, ten en cuenta que, cuando especifiques una región para muchos
tipos de activadores en segundo plano, deberás especificar el filtro de eventos
correcto junto con la región. En el ejemplo anterior, este es el Cloud Firestore document
que emite el evento. Para un activador Cloud Storage, el filtro de eventos
podría ser bucket
; para un activador de Pub/Sub, sería topic
, y así sucesivamente.
Consulta Cambia la región de una Function para obtener más información sobre cómo cambiar la región de una Function que controla el tráfico de producció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, una instancia de Cloud Firestore
o un bucket de Cloud Storage dentro de la Function, la región recomendada
es la misma que si una Function tuya se activara a través de uno de esos
recursos. En caso contrario, usa la región predeterminada de us-central1 .
Las Functions 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 Functions 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 Functions 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 |