2016-05-11 3 views
0

SQSキューをリスンするラムダ関数を作成したいと思います。LambdaはSQSイベントを同期して扱いますか?

私の唯一の懸念事項は次のとおりです。キュー内のすべてのアイテムは、前のアイテムがラムダ機能によって処理されるのを待つ必要があります。私は、新しいイベントがキューにプッシュされるたびに、以前の関数がまだ実行中であるかどうかを確認せずにラムダが実行されることを恐れています。

これは可能ですか?

答えて

3

ラムダとSQSの間に直接の統合はありません。つまり、ラムダ関数のイベントソースとしてSQSキューを追加することはできません。少なくともまだ。

SQSをポーリングしてキューからのメッセージを処理するラムダ関数を書き込むこともできます。この機能は最大5分間しか実行できませんが、ラムダ機能を実行させるために5分ごとに実行するCloudWatchスケジュールイベントを設定することができます。

ラムダ関数間の組み込みの調整がないので、同時に2つの関数のインスタンスが実行されている場合は、キューから独立して読み込みを行い、他の関数が何をしているのか分かりません。

なぜそのコーディネーションがあなたにとって重要なのですか?

+0

お返事ありがとうございます。私はラムダが実行されるたびにデータがあるかどうかに応じてデータベースにデータを取り込むため、同期動作が必要です。しかし、複数のラムダが同時に実行されている場合、最初の起動時にデータベースが書き込まれていないため、その日の「最初の」呼び出しとみなされます。 – theofabry

+0

データベースへのデータの挿入を冪等の操作にする必要がある場合は、それを行う必要があります。 SQSのレコードを「シリアライズ」できたとしても、SQSのメッセージは一度だけ配信されるという保証はありません。保証された最低保証です。 – garnaat

+0

@theofabry Lambda(とSQS)はあなたの問題に間違った解決策です。 – tedder42

関連する問題