0
votes

Service AWS pour suivre l'entité dans dynamoDB

Je crée une application simple dans AWS qui permet aux utilisateurs de louer des voitures pour une durée limitée. J'utilise AWS Lambda pour le calcul, dynamoDB pour le stockage et API Gateway pour gérer les demandes aux fonctions lambda. Ma question est de savoir s'il existe un service AWS ou une fonctionnalité dynamoDB qui me permet de suivre le temps de l'objet "Car" dans dynamoDB de telle sorte que lorsque le temps de location est terminé, il déclenche une fonction lambda pour informer l'utilisateur et effectuer une autre action?


0 commentaires

3 Réponses :


0
votes

Une solution possible serait d'avoir une tâche cron Lambda qui s'exécute sur un minuteur qui analyse ou interroge la table DynamoDB pour les valeurs dont la date correspond à la date de fin de la location. Ce lambda pourrait alors appeler votre lambda NotifyUser à l'aide d'AWS Step Functions, ou pourrait émettre un événement vers un sujet SNS auquel votre lambda s'est abonné.

Quelques liens qui peuvent être utiles:
CronJob
SNS


0 commentaires

3
votes

4 commentaires

Si je comprends bien, ce ne serait pas un problème tant que la fonction lambda est appelée dès que TTL est terminé? Ou cela prend-il également du temps?


@JakeHemmington Lambda est appelé lors de la suppression de l'élément expiré, et non à l'expiration du TTL. Je ne sais pas à quelle fréquence de tels retards se produisent, mais c'est une possibilité.


Solution fraîche. Pourquoi stockeriez-vous les articles spécifiques à la location dans une table séparée?


@SethGeoghegan DynamoDB supprime les éléments à l'expiration du TTL. Il pourrait être plus sûr de les conserver dans un tableau séparé pour éviter de supprimer les éléments principaux avec toutes les informations client. De plus, si la deuxième table est plus petite et plus légère que la principale, le risque de retard de suppression TTL important pourrait être plus court.



0
votes

Les flux DynamoDB et TTL ne sont pas de bonnes solutions car DynamoDB ne fournit aucun SLA pour les suppressions TTL (cela peut même prendre plus de 48 heures dans de rares cas) et l'élément sera supprimé et ne pourra donc pas être utilisé par les applications en aval ou les analyses plus tard.

Pour cela, vous devez utiliser les règles d'événement Cloudwatch (ou Amazon Eventbridge) avec une expression de planification cron. Ainsi, votre code qui place l'élément dans la table DynamoDB peut ensuite créer une règle d'événement Cloudwatch pour le moment futur où la durée de location expirera, à l'aide d'une expression de planification cron. Cela déclenchera un lambda qui pourra appeler votre service de notification pour avertir le client.


0 commentaires