Si vous souhaitez planifier l'exécution de fonctions à des heures spécifiques, utilisez le gestionnaire onSchedule
pour créer un sujet Pub/Sub qui utilise Cloud Scheduler pour déclencher des événements sur ce sujet.
Avant de commencer
Pour utiliser cette solution dans votre projet Firebase, vous devez disposer de la formule Blaze. Si ce n'est pas déjà le cas, passez à la formule Blaze.
Bien que la facturation soit requise, vous pouvez vous attendre à ce que le coût global soit gérable, car chaque tâche Cloud Scheduler coûte 0,10 $ (USD) par mois, et il existe une allocation de trois tâches par compte Google, sans frais. Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût Blaze.
Les API Pub/Sub et Cloud Scheduler doivent être activées pour votre projet. Ces services devraient déjà être activés pour la plupart des projets Firebase. Vous pouvez le vérifier dans la console Google Cloud.
Écrire une fonction planifiée
Dans Cloud Functions for Firebase, la logique de planification réside dans le code de vos fonctions, sans aucune exigence particulière au moment du déploiement. Pour créer une fonction planifiée, utilisez functions.pubsub.schedule('your schedule').onRun((context))
.
Par exemple, pour exécuter une fonction toutes les cinq minutes avec la syntaxe App Engine cron.yaml, procédez comme suit :
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Cloud Scheduler est compatible avec la syntaxe Unix Crontab et App Engine. Par exemple, pour utiliser Crontab afin de sélectionner un fuseau horaire spécifique dans lequel exécuter une fonction planifiée, procédez comme suit :
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;
});
La valeur de timeZone
doit être un nom de fuseau horaire issu de la base de données tz. Pour en savoir plus sur les propriétés compatibles, consultez la documentation de référence sur Cloud Scheduler.
Déployer une fonction planifiée
Lorsque vous déployez une fonction planifiée, la tâche Scheduler et le sujet Pub/Sub associés sont créés automatiquement. L'interface de ligne de commande Firebase renvoie le nom du sujet. Vous pouvez afficher le job et le sujet dans la console Google Cloud. Le nom du sujet suit la convention suivante :
firebase-scheduled-function_name-region
Exemple :
firebase-scheduled-scheduledFunctionCrontab-us-east1.