O Cloud Functions é regional, o que significa que a infraestrutura que executa a função está em regiões específicas e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas dessas regiões.
Ao selecionar em qual região suas funções serão executadas, os principais fatores para considerar são a latência e a disponibilidade. Geralmente, é possível selecionar a região mais próxima dos usuários, mas pense também no local dos outros produtos e serviços usados pelo seu app. Se você usa serviços em várias regiões, a latência e o preço do app podem ser afetados.
Por padrão, as funções são executadas na região us-central1
. Ela pode ser diferente da
região de uma fonte de eventos, como um bucket do Cloud Storage.
Continue lendo esta página
para saber como especificar a região em que
uma função é executada.
Regiões compatíveis
Nas listas desta seção, o ícone energy_savings_leaf indica que a eletricidade dessa região é produzida com baixas emissões de carbono. Para mais informações, consulte Energia livre de carbono para regiões do Google Cloud.
Preços do nível 1
O Cloud Functions está disponível nas seguintes regiões com os preços do Nível 1:
Região | Local | Versões compatíveis do produto | Emissões de CO2 |
---|---|---|---|
asia-east1 |
Taiwan | 1a geração, 2a geração | |
asia-east2 |
Hong Kong | Somente 1ª geração | |
asia-northeast1 |
Tóquio | 1a geração, 2a geração | |
asia-northeast2 |
Osaka | 1a geração, 2a geração | |
europe-north1 |
Finlândia | Somente 2ª geração | energy_savings_leaf |
europe-southwest1 |
Madri | Somente 2ª geração | |
europe-west1 |
Bélgica | 1a geração, 2a geração | energy_savings_leaf |
europe-west4 |
Países Baixos | Somente 2ª geração | |
europe-west8 |
Milão | Somente 2ª geração | |
europe-west9 |
Paris | Somente 2ª geração | energy_savings_leaf |
me-west1 |
Tel Aviv | Somente 2ª geração | |
europe-west2 |
Londres | Somente 1ª geração | |
us-central1 |
Iowa | 1a geração, 2a geração | energy_savings_leaf |
us-east1 |
Carolina do Sul | 1a geração, 2a geração | |
us-east4 |
Norte da Virgínia | 1a geração, 2a geração | |
us-east5 |
Columbus | Somente 2ª geração | |
us-south1 |
Dallas | Somente 2ª geração | |
us-west1 |
Oregon | 1a geração, 2a geração | energy_savings_leaf |
Preços do nível 2
O Cloud Functions está disponível nas seguintes regiões com os preços do Nível 2:
Região | Local | Versões compatíveis do produto | Emissões de CO2 |
---|---|---|---|
asia-east2 |
Hong Kong | Somente 2ª geração | |
asia-northeast3 |
Seul | 1a geração, 2a geração | |
asia-southeast1 |
Singapura | 1a geração, 2a geração | |
asia-southeast2 |
Jacarta | 1a geração, 2a geração | |
asia-south1 |
Mumbai | Somente 2ª geração | |
asia-south2 |
Déli, Índia | Somente 2ª geração | |
australia-southeast1 |
Sydney | 1a geração, 2a geração | |
australia-southeast2 |
Melbourne | Somente 2ª geração | |
europe-central2 |
Varsóvia | 1a geração, 2a geração | |
europe-west2 |
Londres | Somente 2ª geração | |
europe-west3 |
Frankfurt | 1a geração, 2a geração | energy_savings_leaf |
europe-west6 |
Zurique | 1a geração, 2a geração | energy_savings_leaf |
europe-west10 |
Berlim | Somente 2ª geração | |
europe-west12 |
Turim | Somente 2ª geração | |
me-central1 |
Doha | Somente 2ª geração | |
me-central2 |
Dammam | Somente 2ª geração | |
northamerica-northeast1 |
Montreal | 1a geração, 2a geração | energy_savings_leaf |
northamerica-northeast2 |
Toronto | Somente 2ª geração | energy_savings_leaf |
southamerica-east1 |
São Paulo | 1a geração, 2a geração | energy_savings_leaf |
southamerica-west1 |
Santiago, Chile | Somente 2ª geração | |
us-west2 |
Los Angeles | 1a geração, 2a geração | |
us-west3 |
Salt Lake City | 1a geração, 2a geração | |
us-west4 |
Las Vegas | 1a geração, 2a geração |
As funções em uma determinada região e para um determinado projeto precisam ter nomes exclusivos (sem diferenciar maiúsculas de minúsculas), mas as funções entre regiões ou entre projetos podem ter o mesmo nome.
Práticas recomendadas para especificar uma região
Por padrão, as funções são executadas na região us-central1
. Ela pode ser diferente da
região de uma fonte de eventos, como um bucket do Cloud Storage. Se
você precisar alterar a região em que uma função é executada, siga as recomendações
nesta seção para cada tipo de gatilho de função.
Para definir a região em que uma função é executada, defina o parâmetro region
na definição da função, conforme mostrado:
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
É possível especificar várias regiões passando várias strings de região separadas por vírgulas em region
. Além disso, ao especificar uma região para muitos
tipos de gatilhos em segundo plano, você precisará especificar o filtro de evento correto,
além da região. No exemplo acima, o document
do Cloud Firestore
é quem emite o evento. Para um gatilho do Cloud Storage, o filtro de eventos
pode ser bucket
. Para um gatilho do Pub/Sub, seria topic
, e assim por diante.
Consulte como mudar a região de uma função para saber como mudar a região de uma função que processa tráfego de produção.
Funções HTTP e chamáveis pelo cliente
Para funções HTTP e chamáveis, recomendamos que, primeiro, você defina sua função para a região de destino ou mais próxima do local em que se espera que os clientes estejam e, em seguida, altere sua função original para redirecionar a solicitação HTTP para a nova função. Elas podem ter o mesmo nome. Se os clientes da função HTTP aceitarem redirecionamentos, basta alterar sua função original para que retorne um status de redirecionamento de HTTP (301) com o URL da nova função. Caso seus clientes não lidem com redirecionamentos muito bem, você pode intermediar a solicitação da função original para a nova função. Para isso, faça uma nova solicitação da função original para a nova. A etapa final é garantir que todos os clientes estejam chamando a nova função.
Seleção de localização de clientes para funções chamáveis
Em relação à função chamável, as configurações chamáveis do cliente devem seguir as mesmas diretrizes das funções HTTP. O cliente também pode especificar uma região e precisa fazer isso se a função for executada em qualquer região diferente de us-central1
.
Para definir regiões no cliente, especifique a região desejada na inicialização:
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");
Funções em segundo plano
As funções de segundo plano adotam uma semântica de entrega de evento pelo menos uma vez, o que significa que, em algumas situações, elas podem receber eventos duplicados. Portanto, implemente funções para serem idempotentes. Caso sua função já esteja idempotente, reimplemente a função na nova região com o mesmo acionador de evento e remova a função antiga depois de verificar se a nova função está recebendo tráfego corretamente. Durante essa transição, ambas as funções receberão eventos. Confira Alterar a região de uma função para saber a sequência recomendada de comandos para trocar regiões de funções.
Caso sua função não esteja idempotente, ou a idempotência não se estenda além da região, recomendamos que você implemente a idempotência antes de mover a função.
As recomendações da região ideal diferem de acordo com o tipo de acionador de evento:
Tipo de acionador | Recomendação de região |
---|---|
Cloud Firestore | Região mais próxima do local da instância do Cloud Firestore (consulte a próxima seção) |
Realtime Database | Sempre us-central1 . |
Cloud Storage | Região mais próxima do local do bucket do Cloud Storage (consulte a próxima seção) |
Outros | Ao interagir com uma instância do Realtime Database, uma instância do Cloud Firestore
ou um bucket do Cloud Storage na função, a região recomendada será a mesma que seria usada
com uma função acionada por um
desses recursos. Caso contrário, use a região padrão us-central1 .
As funções conectadas ao Firebase Hosting podem estar em qualquer região. Para conferir recomendações,
consulte a visão geral de hospedagem sem servidor. |
Como selecionar regiões com base nos locais do Cloud Firestore e do Cloud Storage
As regiões disponíveis para funções nem sempre correspondem precisamente às regiões disponíveis para o banco de dados do Cloud Firestore e os buckets do Cloud Storage.
Se a função e o recurso (instância de banco de dados ou bucket do Cloud Storage) estiverem em locais diferentes, você poderá ter um aumento de latência e custos de faturamento.
Confira abaixo um mapeamento das regiões mais próximas compatíveis com funções do Cloud Firestore e do Cloud Storage, nos casos em que a mesma região não é compatível:
Região/multirregião para Cloud Firestore e Cloud Storage | Região mais próxima para funções |
---|---|
nam5 ou us-central (multirregião) |
us-central1 |
eur3 ou europe-west (multirregião) |
europe-west1 |
europe-west4 (Países Baixos) |
europe-west1 |
asia-south1 (Mumbai) |
asia-east2 |
asia-south2 (Délhi) |
asia-east2 |
australia-southeast2 (Melbourne) |
australia-southeast1 |