2016-05-11 5 views
0

Ich möchte eine Lambda-Funktion erstellen, die auf eine SQS-Warteschlange wartet.Behandelt Lambda SQS-Ereignisse synchron?

Meine einzige Sorge ist dies: Ich brauche jedes Element in der Warteschlange zu warten, dass das vorherige von der Lambda-Funktion behandelt wurde. Ich befürchte, dass jedes Mal, wenn ein neues Ereignis in die Warteschlange geschoben wird, Lambda ausgeführt wird, ohne zu prüfen, ob eine vorherige Funktion noch läuft.

Ist es möglich, dies zu tun?

Antwort

3

Es gibt keine direkte Integration zwischen Lambda und SQS. Mit anderen Worten, Sie können keine SQS-Warteschlange als Ereignisquelle für eine Lambda-Funktion hinzufügen. Zumindest jetzt noch nicht.

Sie könnten immer noch eine Lambda-Funktion schreiben, die SQS abfragt und die Nachrichten aus der Warteschlange verarbeitet. Diese Funktion kann nur maximal 5 Minuten lang ausgeführt werden. Sie können jedoch ein geplantes CloudWatch-Ereignis so einrichten, dass es alle 5 Minuten ausgeführt wird, damit Ihre Lambda-Funktion weiterläuft.

Es gibt keine integrierte Koordination zwischen Lambda-Funktionen. Wenn Sie also zwei Instanzen Ihrer Funktion zur gleichen Zeit ausführen würden, würden beide unabhängig voneinander aus der Warteschlange lesen und hätten keine Ahnung, was die anderen Funktionen tun.

Warum ist diese Koordination wichtig für Sie?

+0

Danke für Ihre Antwort. Ich brauche ein synchrones Verhalten, da jedes Mal, wenn Lambda ausgeführt wird, eine Datenbank gefüllt wird, abhängig davon, ob vorher Daten vorhanden waren oder nicht. Wenn mehrere Lambdas gleichzeitig ausgeführt werden, werden alle als "erster" Aufruf des Tages angesehen, da die Datenbank während der ersten Aufrufe nicht geschrieben wurde. – theofabry

+0

Wenn es trotzdem ein Datenimport in Ihre Datenbank geben soll, sollten Sie es tun. Selbst wenn Sie die Datensätze in SQS "serialisieren" können, gibt es keine Garantie, dass eine Nachricht in SQS nur einmal übermittelt wird. Es ist eine garantierte mindestens einmal Lieferung. – garnaat

+0

@theofabry Lambda (und SQS) ist die falsche Lösung für Ihr Problem. – tedder42