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 |
---|---|---|---|
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 | 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 | 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 |