トリガーとして設定されたmultiple Lambdasを使用してSQSキューをセットアップしました。これはAWSのAPIで許可されていますが、意図された動作が明確ではありません。
たとえば、1つのメッセージがキューから取り出され、各Lambdaに送信されますか?または代わりに、各Lambdaは、メッセージをキューから個別にプルするポーリングサービスとして機能しますか?
私のテストから、それは後者であるように見えますが、私はこれがどこにでも文書化されているのを私の生涯で見つけることができません。後者は、AWS Lambdaの同時実行機能を考えると、あまり意味がありません。
SQSメッセージは、キューからのみread onceにすることができ、1つのコンシューマーによって処理されている間、他のコンシューマーからは見えません。複数のラムダがある場合、それぞれがメッセージのシェアを取得しますが、一度に1つのメッセージが複数のラムダに配信されることはありません。
ラムダの処理が失敗した場合(ラムダがキューによってトリガーされた場合)、または 可視性タイムアウト 内にメッセージが削除されなかった場合、SQSメッセージはキューに再挿入されます =(Lambdaがキューをポーリングしている場合)。
複数のLambdaで同時に処理される単一のメッセージが必要な場合は、次のいずれかを実行できます。
それが役に立てば幸い:)