O Cloud Functions é regional, ou seja, a infraestrutura que o executa está localizada 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.
Regiões suportadas
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.
O Cloud Functions está disponível nas seguintes regiões com os preços do Nível 1:
asia-east1
(Taiwan)- Somente
asia-east2
(Hong Kong) da 1ª geração asia-northeast1
(Tóquio)asia-northeast2
(Osaka)europe-north1
(Finlândia) energy_savings_leaf apenas 2ª geraçãoeurope-west1
(Bélgica) energy_savings_leafeurope-west2
(Londres) somente 1ª geraçãous-central1
(Iowa) energy_savings_leafus-east1
(Carolina do Sul)us-east4
(Norte da Virgínia)us-west1
(Oregon) energy_savings_leaf
O Cloud Functions está disponível nas regiões a seguir com os preços do Nível 2:
- Somente
asia-east2
(Hong Kong) de 2ª geração asia-northeast3
(Seul)asia-southeast1
(Singapura)asia-southeast2
(Jacarta)asia-south1
(Mumbai) somente na 2ª geraçãoaustralia-southeast1
(Sydney)australia-southeast2
(Melbourne) somente na 2ª geraçãoeurope-central2
(Varsóvia)europe-west2
(Londres) somente 2ª geraçãoeurope-west3
(Frankfurt)europe-west6
(Zurique) energy_savings_leafnorthamerica-northeast1
(Montreal) energy_savings_leafnorthamerica-northeast2
(Toronto) energy_savings_leaf apenas 2ª geraçãosouthamerica-east1
(São Paulo) energy_savings_leafsouthamerica-west1
(Santiago, Chile) somente 2ª geraçãous-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
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 alterar a 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 acionador 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:
exports.myStorageFunction = functions
.region('europe-west1')
.storage
.object()
.onFinalize((object) => {
// ...
});
É possível especificar várias regiões passando várias strings de região separadas por vírgulas em functions.region()
. Confira como alterar a região de uma função para mais informações sobre os procedimentos recomendados.
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 | Se você estiver interagindo com uma instância do Realtime Database, do Cloud Firestore ou um bucket do Cloud Storage dentro da função, a região recomendada será a mesma de uma função acionada por um desses recursos. Caso contrário, use a região padrão de us-central1 .
As funções conectadas ao Firebase Hosting podem estar em qualquer região. Para ver recomendações, consulte a visão geral de hospedagem sem servidor. |
Como selecionar regiões com base nos locais do Cloud Firestore e Cloud Storage
As regiões disponíveis para funções não correspondem precisamente às disponíveis para seu banco de dados do Cloud Firestore e 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.
Veja abaixo um mapeamento das regiões mais compatíveis com funções para o Cloud Firestore e o Cloud Storage para 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 |