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 | Localização | Versões compatíveis do produto | Emissões de CO2 |
|---|---|---|---|
africa-south1 |
Johannesburgo | Somente 2ª geração | |
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 | Localização | 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 | A mesma região da instância Realtime Database |
| 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 |