Zeitgesteuerte AWS Lambda-Aufgabe, die in weniger als 1 minute Frequenz
Wir versuchen zu entwickeln, eine wahre lambda-basierte Anwendung, in denen bestimmte Aufgaben durchgeführt werden müssen, um an die Zeitpläne von Variablen Frequenzen. Sie sind tatsächlich der Abfragen für Daten und zu bestimmten Zeiten des Tages dieses polling kann so langsam als einmal pro Stunde, während zu anderen Zeiten es werden einmal pro Sekunde. Ich habe mir die Optionen für die zeitgesteuerte Verarbeitung (z.B. Mit AWS Lambda mit Geplanten Veranstaltungen und AWS re:Invent 2015 | (CMP407) Lambda als Cron: Scheduling Aufrufe in AWS Lambda), aber es scheint, dass kurz-drehen bis eine EC2-Instanz oder eine lange andauernde lambda, es gibt keine integrierte Möglichkeit des Brennens bis lambdas bei einer Frequenz von weniger als einer minute. Die lambda-rate-Ausdruck kann nicht einen Platz haben, für Sekunden. Gibt es eine Möglichkeit, dies zu tun, ohne eine EC2-Instanz oder lange andauernde lambda? Im Idealfall etwas, das getan werden kann, ohne dass zusätzliche Kosten für die Planung.
- Warum nicht, Sie wollen verwenden Sie einige kleine EC2-Instanz, um zu erfüllen, Ihre häufige Aufgaben? Es könnte sogar sein, mehr profitabel.
- danke für die Anregung, ich dachte eigentlich es gibt vielleicht etwas, das frei ist, die es gibt :). Ich habe Alternative Ansätze im Geist, wie Ihnen und Jared Hatfields die in der Antwort.
- Ich habe links, um ein paar der Orte, die ich suchte nach einer Antwort, bevor hier veröffentlichen und würden uns freuen, wenn der down-vote entfernt wird.
- möchten Sie vielleicht einen Blick auf die Antwort hier: stackoverflow.com/a/35272821/266659
- Warum nicht erstellen Sie einfach 2 event-Planer? zwei von Ihnen führen Sie jede minute, so starten Sie einfach die zweite Veranstaltung nach einer halben minute aus der ersten Veranstaltung Startzeit.
- Wie würden Sie beginnen, die zweite eine halbe minute offset von der ersten? Manuell? Selbst wenn Sie getan haben, ist es klar aus den Daten, die aws würde weiterhin Auslöser dieser genau und, dass Sie sich nicht nur treiben zusammen?
- Ja, ich würde es manuell machen. Ich Stimme zu, es ist auch fehleranfällig, so dass eine andere Lösung ist das erstellen einer neuen lambda-Ausdruck aufruft, die andere lambda von seinen code(also max Flexibilität ist vorhanden). Jetzt werde ich "ping" mit dieser lambda-alle 10 Minuten mithilfe von CloudWatch-Regel (alle 10 Minuten, weil es bekannt ist, dass lambda-Instanz wird am Leben gehalten, 15 Minuten nach Aufruf, so dass 10 Minuten für "just in case"..)
- Nutzen Sie Schritt-Funktion für, die. Look at dieser blog-post.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Derzeit lambda-Funktionen aufgerufen werden, zumindest alle 1 minute von Cloudwatch Veranstaltungen planen.
Eine Lösung, die funktionieren könnte, wäre die folgende:
Setup eine EC2-Instanz und aus einem Programm, das Sie als Hintergrundjob ausführen, verwenden Sie das aws sdk aufrufen Ihres lambda-Funktion. Beispiel:
Du theoretisch kann Draht, high-frequency-task-trigger, ohne eine EC2-Instanz oder lange andauernde lambda mit einem AWS-Schritt-Funktion ausgeführt durch einen CloudWatch-Ereignisse-Ereignis (siehe Emanuele Menga ist blog-post für ein Beispiel), aber das Konzept wäre eigentlich mehr teurer als die anderen beiden Optionen, je nach meiner aktuellen (Mai 2019) schätzt:
(vorausgesetzt 1 Jahr = 31536000 Sekunden)
Schritt-Funktion:
Wait
,Task
) + mindestens 1, - pro minute (für setup/Konfiguration)31536000 * (2 + 1/60) * 0.0250 /1000
= $1589.94/Jahr, oder so niedrig wie $65.70/Jahr für niedrigere Frequenz-trigger (2 ticks pro minute)Lambda-Funktion:
31536000 * 0.000000208 * 10
= $65.595488/JahrEC2-Instance:
t3a.nano
ist $0.0047 pro Stunde on-demand, oder so niedrig wie $0.0014 Verwendung von Spot-instancesSo wird es einige scheduling-Kosten, aber wie Sie sehen können sind die Kosten nicht so viel.
Zu diesem Zeitpunkt AWS Lambda-Funktionen ermöglicht, um zeitgesteuert alle 5 Minuten mit einem maximum execution time von 5 Minuten.
Dies bedeutet, dass wenn Sie führen Sie eine AWS Lambda-Funktion in Abständen von weniger als alle 5 Minuten, wenn nicht mit EC2 können Sie eine von zwei Phasen. Erstellen einer AWS Lambda-Funktion, die alle 5 Minuten, und haben es tatsächlich laufen für die ganze 5 Minuten, fordern andere von AWS Lambda-Funktionen asynchron zu den entsprechenden Zeitintervallen.
Dieser Ansatz wird mehr Kosten, seit die ersten AWS Lambda-Funktion, die ausgeführt wird, für die gesamten 5 Minuten wird im wesentlichen kontinuierlich ausgeführt, aber Sie können die Kosten verringern, indem er die kleinste Menge an RAM zugewiesen.
UPDATE
CloudWatch Ereignisse erlauben es nun, für die Zeitpläne bei einer Frequenz von 1 minute. Das bedeutet, Sie können nun planen, eine Lambda-Funktion, die jede minute und haben es bis zu einer minute zu erreichen sub-Minuten-Genauigkeit. Es ist wichtig zu beachten, dass geplante Ereignisse nicht ausgelöst, die zu Beginn jeder minute, so erreichen exakten sub-minute-timing ist noch ein bisschen schwierig.
Nicht Umfrage mit lambda-oder sollte man besser EC2, wenn Sie erwarten, zu verbringen mehr Zeit polling als der Durchführung der Arbeit. Lambda-Gebühren durch die Ausführung Zeit-und polling ist teuer.
Die Sie wirklich brauchen, ein event-basiertes system mit Lambda. Was bestimmt, wenn Sie die Umfrage?