Programar funções

Se quiser programar funções para serem executadas em horários especificados, use functions.pubsub.schedule().onRun(). Esse método prático cria um tópico do Cloud Pub/Sub e usa o Cloud Scheduler para acionar eventos nesse tópico, garantindo que sua função seja executada conforme a programação desejada.

Antes de começar

Para usar essa solução no seu projeto do Firebase, é preciso que o projeto esteja no plano de preços Blaze. Se ainda não estiver no plano Blaze, faça upgrade do seu plano de preços.

O faturamento é obrigatório, mas o custo geral é gerenciável, porque cada job do Cloud Scheduler custa US$ 0,10 (USD) por mês e há um crédito de três jobs por conta do Google, sem custo financeiro. Use a calculadora de preços do Blaze para gerar uma estimativa de custo com base na sua projeção de uso.

As APIs Pub/Sub e Cloud Scheduler precisam estar ativadas no seu projeto. Essas APIs já devem estar ativadas na maioria dos projetos do Firebase. Para verificar isso, acesse o Console do Google Cloud Platform.

Escrever uma função programada

No Cloud Functions para Firebase, a lógica de programação está no código das funções, sem requisitos especiais de tempo de implantação. Para criar uma função programada, use functions.pubsub.schedule('your schedule').onRun((context)). Por exemplo, para executar uma função a cada cinco minutos com a sintaxe cron.yaml do App Engine, escreva um código semelhante a este:

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('This will be run every 5 minutes!');
  return null;
});

As sintaxes do Unix Crontab e do App Engine são compatíveis com o Cloud Scheduler. Por exemplo, caso queira usar o Crontab para selecionar um fuso horário específico a fim de executar uma função planejada, escreva um código semelhante a este:

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});

O valor de timeZone precisa ser um nome de fuso horário do banco de dados tz . Consulte a referência do Cloud Scheduler para mais informações sobre as propriedades compatíveis.

Implantar uma função programada

Ao implantar uma função programada, o job do programador relacionado e o tópico do Pub/Sub são criados automaticamente. A Firebase CLI reflete o nome do tópico e é possível visualizar o job e o tópico no Console do GCP. O nome do tópico é definido conforme a seguinte convenção:

firebase-scheduled- function_name - region

Exemplo:

firebase-scheduled-scheduledFunctionCrontab-us-east1.