0
votes

Meilleur moyen de planifier des événements ponctuels dans des environnements sans serveur

Exemple de cas d'utilisation

Envoyez une notification à l'utilisateur 2 heures après l'inscription.

Options envisagées

setTimeout (() => {/ * envoyer une notification * /}, 2 * 60 * 60 * 1000); n'est pas une option dans les environnements sans serveur car la fonction se termine après l'exécution (donc elle doit être apatride).

Les événements CloudWatch peuvent planifier des appels lambda à l'aide d'expressions cron - mais cela a été conçu pour les appels répétitifs (il y a une limite de 100 règles / région).

Je n'ai pas vu d'options de planification dans AWS SNS / SQS ou GCP Pub / Sub. Existe-t-il des alternatives avec la planification?

Je souhaite éviter (si possible) de configurer un courtier de messages dédié (exagération) ou une instance avec état / sans serveur - existe-t-il un moyen sans serveur de le faire?

Je peux mettre les événements en file d'attente dans une base de données et appeler une fonction lambda toutes les minutes pour interroger la base de données pour les événements à exécuter dans cette minute ... y a-t-il une solution plus élégante?


2 commentaires

Examinez les tâches Google Cloud.


@DougStevenson Google Cloud Tasks semble idéal pour cela - merci! Je vais essayer.


3 Réponses :


1
votes

Utilisez les fonctions AWS Step, elles sont comme des fonctions sans serveur qui n'ont pas la limite de 15 minutes comme AWS Lambda. Vous pouvez concevoir un flux de travail dans l'étape AWS qui s'intègre à API Gateway, Lambda et SNS pour envoyer des notifications par e-mail et texte comme suit:

  1. Créez une API REST via une passerelle API qui invoquera une fonction Lambda en transmettant par exemple l'adresse de destination (e-mail, numéro de téléphone) de la notification SNS, quand elle doit être envoyée, méthode de notification (par exemple, e-mail, texte, etc. .).
  2. La fonction Lambda lors de l'appel appellera la fonction Step en transmettant les données (Lambda est nécessaire car API Gateway ne peut actuellement pas appeler directement les fonctions Step).
  3. La fonction Step est essentiellement un flux de travail, vous pouvez définir des états d'attente (comme attendre le temps spécifié pour envoyer la notification, par exemple 30 secondes), et des états pour appeler d'autres fonctions Lambda qui peuvent utiliser SNS pour envoyer un e-mail et / ou notifications par SMS.

Un exemple rudimentaire est fourni par AWS avec son exemple Task Timer.


0 commentaires

0
votes

Des choses sont à venir sur GCP pour ce faire, mais pas très bientôt. Ainsi, aujourd'hui, la solution est d'interroger une base de données.

Vous pouvez faire cela avec Datastore / firestore avec la date d'exécution indexée (pour éviter de lire tous les documents chaque minute). Mais faites attention aux pics de trafic, vous pourriez créer un hotspot.


0 commentaires

0
votes

Vous pouvez utiliser Cloud Scheduler sur Google Cloud Platform. Comme indiqué dans la documentation officielle:

Cloud Scheduler est un planificateur de tâches Cron de niveau entreprise entièrement géré. Il vous permet de planifier pratiquement n'importe quel travail, y compris les travaux par lots, les travaux Big Data, les opérations d'infrastructure cloud, etc. Vous pouvez tout automatiser, y compris les tentatives en cas d'échec pour réduire le travail manuel et l'intervention. Cloud Scheduler agit même comme une seule vitre, vous permettant de gérer toutes vos tâches d'automatisation à partir d'un seul endroit.

Ici, vous pouvez consulter un démarrage rapide pour l'utiliser avec Pub / Fonctions Sub et Cloud.


2 commentaires