Je veux pouvoir définir une heure pour invoquer une fonction AWS Lambda, puis faire invoquer cette fonction à ce moment-là et seulement à ce moment-là. Par exemple, je veux que ma fonction Lambda s'exécute à 21h00 le 19 décembre 2017. Je ne veux pas qu'elle se répète, je ne veux pas qu'elle invoque maintenant, juste à 21h00 le 19.
Je comprends que CloudWatch fournit des événements planifiés, et je pensais que lorsqu'un moment pour planifier ce rappel est entré, un événement planifié CloudWatch est créé pour se déclencher dans ce laps de temps à partir de maintenant (comme si vous le planifiez à 20h22). pour s'exécuter à 21 h, ce sera 38 minutes), puis il appelle la fonction Lambda à 21 h qui supprime ensuite l'événement planifié CloudWatch. Mon problème avec cela est que lorsqu'un événement planifié CloudWatch est créé, il s'exécute immédiatement, puis à l'intervalle spécifié.
Toute autre idée serait appréciée, car je ne vois pas d'autre solution. Merci d'avance!
Vous pouvez planifier un événement lambda à l'aide de la syntaxe suivante:
cron(Minutes Hours Day-of-month Month Day-of-week Year)
Remarque: Tous les champs sont obligatoires et le fuseau horaire est UTC uniquement
Veuillez consulter ceci Documentation AWS pour plus de détails.
Merci
L'appel d'une fonction lambda via des événements est une option d'appel asynchrone. En utilisant CloudWatchEvent pour déclencher la fonction Lambda, nous pouvons utiliser le travail cron, mais nous sommes toujours confrontés à des problèmes car la fonction Lambda est déclenchée plusieurs fois pour le même calendrier cron.PFB Link: https://cloudonaut.io/your-lambda-function -peut-exécuter-deux-fois-avec-lui /
Mais cela nécessite que Dynamo DB soit implémenté dans votre compte, puis rende votre fonction Lambda idempotente.
Vous pouvez utiliser la fonction DynamoDB TTL
pour l'implémenter facilement, procédez simplement comme suit:
1- Placez l'élément avec TTL
, l'heure exacte à laquelle vous souhaitez exécuter ou appeler une fonction lambda.
2- Configurer DynamoDB Streams
pour déclencher une fonction lambda sur l'événement remove
de l'élément.
Une fois que l'élément/l'enregistrement est sur le point d'expirer, votre lambda sera invoqué. vous n'avez rien à supprimer ou à nettoyer car l'élément dans dynamodb est déjà parti.
REMARQUE: Cependant, l'approche est facile à mettre en œuvre et évolue très bien, mais il y a une précaution à mentionner; en utilisant DynamoDB TTL
en tant que mécanisme d'ordonnancement ne peut garantir la précision exacte de l'heure car il peut y avoir un retard. Les tâches planifiées sont exécutées quelques minutes en arrière.