Amazon kündigte AWS Lambda an ( http://aws.amazon.com/lambda/ ).
Die Produktbeschreibung enthält:
Geplante Aufgaben
AWS Lambda-Funktionen können durch externe Ereigniszeitgeber ausgelöst werden, sodass Funktionen während regelmäßig geplanter Wartungszeiten oder außerhalb der Spitzenzeiten ausgeführt werden können. Sie können beispielsweise eine AWS Lambda-Funktion auslösen, um nächtliche Archivbereinigungen außerhalb der Geschäftszeiten durchzuführen.
Als ich dies las, wurde mir klar, dass ich endlich die Möglichkeit haben könnte, konsequent "cron-ähnliche" Aufgaben zu erledigen. Ich möchte jeden Tag um 17 Uhr eine bestimmte Abfrage ausführen.
Ich finde dies jedoch nirgendwo in der Dokumentation. Sie erwähnen nur Auslöser für programmatische Ereignisse oder Ereignisse von anderen AWS-Diensten.
Habe ich falsch verstanden? Oder kann mich jemand auf die Dokumentation verweisen?
quelle
Seit dem Zeitpunkt dieses Beitrags scheint es eine andere Lösung gegeben zu haben: Planen Sie wiederkehrende AWS-Lambda-Aufrufe mit der unzuverlässigen Stadtuhr (UTC), in der der Autor vorschlägt, das SNS-Thema Unzuverlässige Stadtuhr zu abonnieren . Ich habe weder SWF noch SNS verwendet, aber es scheint mir, dass die SNS-Lösung einfacher ist. Hier ist ein Auszug aus dem Artikel
quelle
NEUE LÖSUNG: Lambda Scheduled Jobs
Werner Vogel hat heute Abend (10/08) bei re: Invent angekündigt, dass AWS Lambda jetzt einen eigenen Scheduler hat.
Siehe den AWS Lambda Release Note am 08.10.2015 :
ALTE LÖSUNG: Planen mit AWS Data Pipeline
Mit AWS Data Pipeline können Sie eine Aufgabe mit einem bestimmten Zeitraum planen . Die Aktion kann ein beliebiger Befehl sein, wenn Sie Ihre Pipeline mit ShellCommandActivity konfigurieren .
Sie können beispielsweise einen AWS CLI-Befehl ausführen, um:
Sie können die geplante Aufgabe der AWS Data Pipeline problemlos direkt in der AWS-Konsole erstellen (z. B. mit einem AWS CLI-Befehl):
Sie können auch die API verwenden, um Ihre Planung zu definieren :
Limits : Das minimale Planungsintervall beträgt 15 Minuten.
Preisgestaltung : ca. 1,00 USD pro Monat.
quelle
So mache ich das:
Erstellen Sie Lambda, die:
Erstellen Sie einen CloudWatch-Alarm für: ApproximateNumberOfMessagesVisible> 0 für 1 Minute
Jetzt haben Sie einen Timer mit einer Auflösung von ca. 15 Minuten.
Dann werden andere Lambda-Funktionen für SNS Topic abonniert und alle 15 Minuten aufgerufen.
quelle
Da es jetzt leicht möglich ist , Lambda-Funktionen über HTTP auszulösen (z. B. mithilfe von GET oder Curl), besteht eine einfache Lösung darin, einen verwalteten CRON wie easycron zu verwenden: https://www.easycron.com/ , um die Ausführung Ihrer Lambda-Funktion auszulösen.
Wir hatten das gleiche Problem und führten schließlich einen Cron-Dienst in Google App Engine in Python aus, da dies mehr Flexibilität und Komplexität im CRON-Job selbst ermöglichte.
quelle
Auf der Seite Funktion, Trigger hinzufügen, können Sie CloudWatch-Ereignisse hinzufügen und als Zeitplantyp festlegen
quelle
Sie können es auch mit CloudWatch-Ereignissen planen. Regel erstellen -> Ziel anhängen (Lambda) und Cron / Rate-Zeitplan für Ihre Regel einrichten.
quelle
Die Webkonsole ist ziemlich einfach. Erstellen Sie einfach eine
CloudWatch
Regel für das Lambda und fügen Sie sie in dieTriggers
Registerkarte des Lambda ein .Für diejenigen, die das automatisieren müssen,
aws cli
können wirFunktion erstellen
Regeln erstellen
quelle
Eine einfache Möglichkeit, Ihre Abfrage in Lambda für ein bestimmtes Zeitintervall auszuführen, besteht darin, eine Regel für Ihre Lambda-Funktion festzulegen. Gehen Sie dazu nach dem Erstellen der Lambda-Funktion zu Cloudwatch >> Regeln >> Zeitplan. und definieren Sie den Cron-Ausdruck und wählen Sie im Zielabschnitt die Lambda-Funktion aus, die Sie auslösen möchten.
quelle
Erstellen Sie beim Erstellen der Lambda-Funktion den Trigger "CloudWatch Events - Schedule".
Jetzt können Sie entweder AWS-Voreinstellungen im Zeitplanausdruck wie rate = 15 min verwenden oder einen Cron-Ausdruck verwenden.
Für Ihre Anforderung lautet der Cron-Zeitplan "0 0 17 1/1 *? *"
quelle
Diksha ist AWS Lambda Scheduler basierend auf AWS SWF Trigger, wie vom AWS Team empfohlen . Sie können Jobs mithilfe von Cron-Ausdrücken planen und angeben, wie oft Sie ausgeführt werden möchten, wann Sie beginnen oder wann Sie enden sollen. Sie können den Status sowie den Verlauf geplanter Jobs anzeigen. Die Sicherheit wird durch AWS-Richtlinien verwaltet.
Sobald Sie die Diksha-Engine eingerichtet haben, können Sie Funktionen mithilfe des Cron-Ausdrucks folgendermaßen planen:
java -jar diksha-client-0.0.1.jar -lcfg cf1 -cj "jobName | functionName | context | 0 0-59 * * * * | 10"
In diesem Job wird der Job 10 Mal pro Minute ausgeführt. AWS SWF löst die Funktion von selbst aus.
Details: https://github.com/milindparikh/diksha
Haftungsausschluss: Ich bin Mitwirkender am Projekt.
quelle