Ich habe 3 Python-Skripts, die zu unterschiedlichen Zeiten in AWS ausgeführt werden sollen. Derzeit habe ich diese 3 Skripts in einer EC2-Instanz und ich verwende cron
, um sie auszuführen. Das erste und das zweite Skript laden einige Daten in ein bestimmtes Verzeichnis auf der EC2-Box herunter (etwa unter /home/ec2-user/data
). Der dritte verwendet die heruntergeladenen Daten zum Ausführen.Planen von Python-Skripts für die Ausführung in AWS
Gelegentlich schlägt eines der ersten beiden Skripts fehl und verursacht auch den dritten Fehler. Ich habe jedoch keine Möglichkeit, die fehlgeschlagenen Skripts über cron
erneut zu versuchen, es sei denn, ich erstelle die Fehlerwiederherstellungslogik in den Skripts. Außerdem bin ich nicht glücklich darüber, eine EC2-Instanz zu verwenden. Es ist keine gute Lösung. Es wäre besser, den AWS-Dienst dafür zu verwenden.
Ich möchte wissen, ob AWS Lambda
ist ein guter Service hier zu verwenden? Wenn ja, wie gebe ich an, wo die Daten heruntergeladen werden sollen und wo das dritte Skript Daten lesen soll?
Oder gibt es einen anderen Dienst in AWS, der am besten in dieses Szenario passt?
Das erste Skript dauert 3 Minuten und das nächste dauert 10 Minuten. – Nik
Lambda hat eine maximale Ausführungszeit von 300s. Elastic Beanstalk kann bis 1800 gehen und es gibt Optionen, die Ausführung basierend auf der Antwort und/oder dem Zeitlimit zu wiederholen - [Worker Details] (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features) -managing-env-tiers.html # worker-periodictasks). Ich schlage vor, ein Hauptskript zu erstellen, das die anderen Skripts verwaltet. Im Falle eines Fehlers gibt das Hauptskript einen Fehler zurück und auf diese Weise fügt EB den Job der SQS-Warteschlange erneut hinzu. – Catalin
[Beispiel-App] (https://github.com/altcatalin/stackoverflow/tree/master/aws/elastic-beanstalk-worker-app) – Catalin