Locais do Cloud Functions

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