Confira tudo que foi anunciado no Firebase Summit e veja como usar o Firebase para acelerar o desenvolvimento de apps e executar os aplicativos com confiança. Saiba mais

Locais do Cloud Functions

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Cloud Functions é regional , o que significa que a infraestrutura que executa sua Cloud Function está localizada em regiões específicas e é gerenciada pelo Google para estar disponível de forma redundante em todas as zonas dessas regiões .

Ao selecionar em quais regiões executar suas funções, suas principais considerações devem ser a latência e a disponibilidade. Geralmente, você pode selecionar regiões próximas aos seus usuários, mas também deve considerar a localização dos outros produtos e serviços que seu aplicativo usa. O uso de serviços em várias regiões pode afetar a latência do seu aplicativo, bem como o preço .

Regiões suportadas

Nas listas desta seção, o ícone energy_savings_leaf indica que a eletricidade desta região é produzida com baixas emissões de carbono. Para obter 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 preços de nível 1 :

  • asia-east1 (Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tóquio)
  • asia-northeast2 (Osaka)
  • europe-west1 (Bélgica) energy_savings_leaf
  • europe-west2 (Londres)
  • us-central1 (Iowa) energy_savings_leaf
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • us-west1 (Oregon) energy_savings_leaf

O Cloud Functions está disponível nas seguintes regiões com preços de nível 2 :

  • asia-northeast3 (Seul)
  • asia-southeast1 (Cingapura)
  • asia-southeast2 (Jacarta)
  • asia-south1 (Mumbai)
  • australia-southeast1 (Sydney)
  • europe-central2 (Varsóvia)
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurique) energy_savings_leaf
  • northamerica-northeast1 (Montreal) energy_savings_leaf
  • southamerica-east1 (São Paulo) energy_savings_leaf
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

As funções em uma determinada região em um determinado projeto devem ter nomes exclusivos (sem distinção entre maiúsculas e minúsculas), mas funções entre regiões ou entre projetos podem compartilhar o mesmo nome.

Práticas recomendadas para mudar de região

Por padrão, as funções são executadas na região us-central1 . Observe que isso pode ser diferente da região de uma fonte de evento, como um bucket do Cloud Storage. Se precisar alterar a região em que uma função é executada, siga as recomendações desta seção para cada tipo de acionador de função.

Para definir a região onde 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) => {
      // ...
    });

Você pode especificar várias regiões passando várias strings de regiões separadas por vírgulas em functions.region() . Consulte alterar a região de uma função para obter mais informações sobre os procedimentos recomendados.

Funções HTTP e que podem ser chamadas pelo cliente

Para funções HTTP e que podem ser chamadas, recomendamos que você primeiro defina sua função para a região de destino ou mais próxima de onde a maioria dos clientes esperados está localizada e, em seguida, altere sua função original para redirecionar sua solicitação HTTP para a nova função (elas podem ter o mesmo nome). Se os clientes de sua função HTTP oferecerem suporte a redirecionamentos, basta alterar sua função original para retornar um status de redirecionamento HTTP (301) junto com a URL de sua nova função. Se seus clientes não lidam bem com redirecionamentos, você pode fazer proxy da solicitação da função original para a nova função iniciando uma nova solicitação da função original para a nova função. A etapa final é garantir que todos os clientes estejam chamando a nova função.

Seleção de localização do lado do cliente para funções chamáveis

Com relação à função callable, as configurações callable do cliente devem seguir as mesmas diretrizes das funções HTTP. O cliente também pode especificar uma região e deve fazê-lo 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:

Rápido

lazy var functions = Functions.functions(region:"europe-west1")

Objective-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

Rede


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");

Unidade

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

funções de segundo plano

As funções em segundo plano adotam uma semântica de entrega de evento pelo menos uma vez, o que significa que, em algumas circunstâncias, elas podem receber eventos duplicados. Portanto, você deve implementar funções para serem idempotentes . Se sua função já for idempotente, você poderá reimplantar a função na nova região com o mesmo acionador de evento e remover a função antiga depois de verificar se a nova função está recebendo tráfego corretamente. Durante esta transição, ambas as funções receberão eventos. Consulte alterar a região de uma função para obter a sequência recomendada de comandos para alterar as regiões das funções.

Se sua função não for idempotente no momento ou se sua idempotência não se estender além da região, recomendamos que você primeiro implemente a idempotência antes de mover a função.

As recomendações ideais de região diferem por tipo de acionador de evento:

Tipo de gatilho 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)
banco de dados em tempo real Sempre us-central1
Armazenamento na núvem Região mais próxima do local do bucket do Cloud Storage (consulte a próxima seção)
Outras Se você estiver interagindo com uma instância do Realtime Database, uma instância do Cloud Firestore ou um bucket do Cloud Storage dentro da função, a região recomendada é a mesma como se você tivesse uma função acionada por um desses recursos. Caso contrário, use a região padrão de us-central1 . Observe também que as funções conectadas ao Firebase Hosting devem estar localizadas em us-central1 .

Seleção de regiões com base nos locais do Cloud Firestore e do Cloud Storage

As regiões disponíveis para funções nem sempre correspondem exatamente às regiões disponíveis para seu banco de dados do Cloud Firestore e seus buckets do Cloud Storage.

Observe que, se sua função e seu recurso (instância de banco de dados ou bucket do Cloud Storage) estiverem em locais diferentes, você poderá experimentar um aumento na latência e nos custos de cobrança .

Aqui está um mapeamento das regiões compatíveis com funções mais próximas para Cloud Firestore e 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 (multirregional) us-central1
eur3 ou europe-west (multirregional) europe-west1
asia-south1 (Mumbai) asia-east2
australia-southeast2 (Melbourne) australia-southeast1