2017-12-11 3 views
0

Ich habe 3 AWS Lambda Funktionen (Volume Backup Monitoring Funktionen). Ich habe 3 Funktionen erstellt, so dass jede Funktion nur 1 Schleife hat, so dass die Ausführungszeit (und die Abrechnung) geringer ist. Jede Lambda-Funktion setzt den Aufruf der nächsten Lambda-Funktion in SQS. Ich habe auch eine Lambda-Funktion, die Nachricht aus der Warteschlange aufnimmt und angeforderte Lambda-Funktion ausführt.AWS Lambda-Zeitplan - können wir den Zeitplan innerhalb von Lambda deaktivieren/aktivieren?

Meine Frage ist über die Planung. Ich kann Lambda1 so planen, dass sie mit der gewünschten Frequenz läuft (etwa alle 10 Minuten). Wie plane ich den Lambda, der die Warteschlange liest? Ich kann planen, es alle n Minuten auszuführen, aber sobald die Warteschlange leer ist, ist keine Ausführung bis zum Ende des Tages erforderlich. Kann ich den AWS-Lambda-Zeitplan irgendwie innerhalb der Lambda-Funktion deaktivieren? Wenn nicht - was sind Alternativen?

Antwort

0

SQS kann Lambda nicht direkt auslösen. Lambda muss SQS mit Cloudwatch Timer abfragen. Aber ich weiß, dass es dein Problem nicht löst. Eine Option, die Sie ausprobieren können, aber ich kann es nicht als die beste Option vorschlagen, und es ist nicht eine kosteneffektive.

Beim Veröffentlichen der Nachricht an SQS fügen Sie einen Trigger in SQS hinzu, der die Nachricht an SNS sendet. Von SNS jetzt wird die Lambda-Funktion ausgelöst oder besser können Sie direkt die Nachricht an SNS und das Lambda auslösen.

Eine andere bessere Option ist mit kinesis gehen. Weil es durch das Erstellen von Shards kostengünstiger ist und zu Stapelverarbeitung führt. Es hat auch den Auslöser für Lambda.

1

Benötigen Sie Warteschlangenfunktion (SQS)? Wenn nicht, schlage ich vor, dass Sie SNS verwenden (im Vergleich zu einem Kinesis-Stream ist es auch viel billiger), der lambdas direkt auslösen kann. Auf diese Weise vermeidest du, ein Lambda zu haben, das in eine Schlange schaut und dann andere Lambdas auslöst, die sich für mich wie ein Antipattern anfühlen.

Achtung: Wenn Sie SNS verwenden, müssen Ihre Lambdas idempotent sein, da SNS mindestens eine einmalige Garantie hat (Sie könnten die Nachricht mehrere Male erhalten) innerhalb von AWS.

Verwandte Themen