Lesen SQS-Warteschlange von AWS Lambda

Ich habe folgende Infrastruktur:

Ich habe eine EC2-Instanz mit einem NodeJS+Express Prozess lauscht auf einen port für die Nachrichten (Prozess 1). Jedes mal, wenn der Prozess eine Nachricht empfängt, sendet es eine SQS-Warteschlange. Dann habe ich einen anderen Prozess auf der gleichen Maschine Lesen der queue mit long polling (Prozess 2). Wenn es findet eine Nachricht in der Warteschlange es fügt die Daten in eine MariaDB-Datenbank sitzt auf einem RDS-instance.

(Nur um zu klären, Nachrichten werden von den Benutzern generiert werden, senden Sie eine Menge Daten enthalten kann beliebige Informationen zu dem Endpunkt, wo der Prozess 1 hört)

Nun will ich den Prozess, der liest die SQS (Prozess 2) in eine Lambda-Funktion, so dass der Prozess, der schreibt an die Warteschlange und die eine, die liest aus der queue sind vollständig unabhängig voneinander. Das problem ist, dass ich don T wissen, ob dies möglich ist.

Weiß ich, dass die Lambda-Funktion aufgerufen werden, in Reaktion auf ein Ereignis und die Ereignisse, die zur Zeit unterstützt werden S3, SNS, SES, DynamoDB, Kinesis, Cognito, CloudWatch und Cloudformation aber NICHT-SQS -.

Ich dachte mit SNS-Benachrichtigungen zum anrufen der Lambda-Funktion, so dass jedes mal eine Nachricht gedrückt, um den queue, eine SNS-Benachrichtigung ausgelöst und ruft die Lambda-Funktion aber nach dem spielen ein bisschen mit ihm habe ich gemerkt, dass ist nicht möglich, erstellen Sie eine SNS-Benachrichtigung von SQS, ist es nur möglich zu schreiben SNS-Benachrichtigungen in der Warteschlange.

Momentan bin ich ein wenig stecken, weil ich nicht weiß, wie es weiter geht. Ich habe das Gefühl, dass ist leider nicht möglich, diese Infrastruktur aufgrund der aktuellen Einschränkungen in der AWS-services. Gibt es einen anderen Weg das zu tun, was ich will oder bin ich in einer Sackgasse?

Nur zu erweitern, meine Frage mit einigen der Forschung, die ich gemacht habe, dieses github-repo zeigt, wie zu Lesen, eine SQS-queu von einer Lambda-Funktion aber die lambda-Funktion funktioniert nur, wenn gefeuert wird von der Befehlszeile aus:

https://github.com/robinjmurphy/sqs-to-lambda

In der readme, der Autor erwähnt die folgenden:

Update: Lambda-unterstützt jetzt SNS-Benachrichtigungen, wie eine Quelle,
was macht dieser hack völlig unnötig für SNS-notifcations. Sie
könnte noch nützlich finden, wenn Sie wie die Idee der Verwendung von Lambda
Funktion zur Verarbeitung von Aufträgen, die auf einer SQS-Warteschlange.

Aber ich denke, dass dies nicht mein problem lösen, eine SNS-Benachrichtigung aufrufen kann die Lambda-Funktion aber ich sehe nicht, wie kann ich eine Meldung erstellen, wenn eine Nachricht empfangen wird, in der SQS queue.

Dank

2 Dinge, die Sie verwenden können, um Ihren Weg aus (1) Lambda-hören können, SNS. Wenn das ist nicht, was Sie wollen, dann Machen 2) SQS-Warteschlange einer der Teilnehmer der SNS-Thema [ Alle SNS-Nachricht geschrieben werden, um eine SQS-Warteschlange]
Ich denke, dass hier ist, wo ich anfangen verwirrt zu werden. Ich will nicht schreiben, SNS-Nachrichten in eine Warteschlange. Die Nachrichten in der Warteschlange werden von den Benutzern generiert (Sie post-Daten an eine URL, meine nodejs-thread, der die Anforderung verarbeitet, formatiert die Daten und sendet Sie an der SQS-Warteschlange). Dann, was ich tun möchte, jedes mal eine Benutzer-Nachricht eingefügt wird in die queue, trigger irgendwie eine SNS-Benachrichtigung aufrufen, der Lambda-Funktion (die in der Tat, gemacht, indem die Lambda-Funktion hören SNS)
Anstelle der Verbindung der Punkte zwischen Lambda, SQS & SNS. Ich möchte empfehlen, unter Berücksichtigung der Terminierung des lambda-Funktion zu betrachten, die Warteschlange zu verarbeiten die Artikel, wenn Sie existiert. Die andere Variante ist mit 2 Lambda-Funktionen - One ziehen das Lesen der Elemente von SQS[geplant], und drücken Sie die Elemente, um die SNS, die dann behandelt werden, indem eine weitere Verarbeitung Lambda-Funktion.
Das macht Sinn. In der Tat ist diese Lösung ähnlich wie das system, das wir derzeit haben, mit cronjobs und die Prüfung der Warteschlange alle paar Minuten oder Sekunden. Ich dachte auch in die Verwendung von CloudWatch um die Warteschlange zu überprüfen Statistiken und auslösen der lambda-Funktion, wenn es irgendwelche Meldungen gibt. Danke für die Anregung. Ich werde das weiter untersuchen.
froh, dass es geholfen hat. Ich Schreibe das als Antwort.

InformationsquelleAutor mIwE | 2016-01-08

Schreibe einen Kommentar