Ich habe mich gefragt, ob ich eine Nachricht an die SQS-Warteschlange senden und ein SNS-Thema abonnieren kann, um ein Lambda zum Senden einer E-Mail auszulösen.
SQS -> SNS -> (Lambda) -> SES
Ich weiß, dass SNS-Nachrichten an SQS gesendet werden können, bin aber gespannt, ob der umgekehrte Weg möglich ist
Sie können nicht gehen
SQS -> SNS
, nurSNS -> SQS
.Lambda unterstützt jetzt die Zeitplanung. Eine Möglichkeit besteht darin, einen SQS-Poller in einer Lambda-Funktion zu implementieren und häufig auszuführen.
Eine weitere Option ist, ob Sie tatsächlich eine Warteschlange benötigen. Lambda unterstützt die asynchrone Verarbeitung (über den Ereignisaufrufmodus) und sollte horizontal transparent skaliert werden, um parallele Aufrufe zu verarbeiten. Wenn Ihre Lambda-Funktion keinen Zugriff auf einen zentralen Statusspeicher erfordert, der die parallele Ausführung möglicherweise einschränkt, können Sie wahrscheinlich alle Ihre Aufrufe parallel ausführen. Ich glaube, es gibt ein Limit von 100 gleichzeitiger Ausführung pro Konto, daher müssen Sie möglicherweise Ihre Nachrichten stapeln, um darunter zu bleiben.
quelle
SQS
Die Warteschlange kann zumSNS
Thema abonniert werden, um empfangeneSNS
Nachrichten zu verarbeiten . Derzeit ist es ohne zusätzliche Codierung nicht in eine andere Richtung möglich (siehe z . B.Lambda
FAQ ).Ich würde sagen, es gibt einige Möglichkeiten, wie es geht, aber es ist nicht so elegant wie die Verwendung eines allgemeineren ereignisgesteuerten Systems
AWS event->SQS->Lambda
. Andernfalls müssen Sie möglicherweise den Code fürSQS
die Verarbeitung von Warteschlangen anpassen / implementieren :SQS
Warteschlangen abzuhören und dannLambda
bei SQS-Ereignissen auszulösenquelle
Dies wurde vor einiger Zeit gefragt und beantwortet, aber nachdem ich selbst darüber nachgedacht hatte, dachte ich, ich würde einen Ansatz hinzufügen.
Wie bereits erwähnt, sind Ereignisquellen hier möglicherweise die beste Wahl. Alternativ, und ich habe dies weder getestet noch durchdacht (das ist also eine Art akademisch), aber es kann möglich sein, dies über ein Fan-Out-Muster mit SNS wie folgt zu erreichen:
Wenn Sie diese Konfiguration verwenden und eine Nachricht an das SNS-Thema senden, wird sie in die SQS-Warteschlange eingereiht und gleichzeitig eine begleitende Lambda-Funktion ausgelöst. Diese Lambda-Funktion wird geschrieben, um dieselbe SQS-Warteschlange zu lesen, jedoch mit aktiviertem Long Polling (bis zu 20 Sekunden), damit die Warteschlange nicht gelesen wird, bevor die Warteschlange abgeschlossen ist (dh Race-Bedingung).
Im Wesentlichen ruft dieses Just-in-Time-Schema eine Lambda-Funktion für jede in die Warteschlange gestellte SQS-Nachricht auf. Ich weiß nicht, wie simultane Long Poll-Leser an SQS arbeiten (... wird man fallen gelassen?), Aber dies ist nur eine andere Möglichkeit, dies zu lösen. = :)
quelle