スキップしてコンテンツを表示

LambdaとSQSの再起呼び出し検知について

0

再起呼び出しの検知について検知できる条件を教えていただきたいです。 以下の条件で検知がされるのでしょうか? 1.Lambda①でSQS①にメッセージ送信 2.SQS①からLambda②を実行 3.Lambda②でSQS②にメッセージ送信 4.SQS②からLambda①を実行 5.以降「①」に繰り返し

1回答
0

ご質問の再起呼び出しのシナリオについて、AWS Lambda と Amazon SQS の標準的な設定では、このような複雑な再起呼び出しパターンを自動的に検知することは困難です。

Lambda と SQS の統合では、主に以下のような単純な再起呼び出しを防ぐための機能が提供されています:

  1. 同一メッセージの再処理防止:SQSはメッセージの重複排除機能を持っており、設定された期間内に同一のメッセージIDを持つメッセージが再度キューに入れられた場合、それを排除します。

  2. 可視性タイムアウト:SQSのメッセージが処理中の間、他のコンシューマーがそのメッセージを取得できないようにする期間を設定できます。これにより、同じメッセージが複数回処理されることを防ぎます。

  3. デッドレターキュー:処理に失敗したメッセージを別のキューに移動させることで、メインのキューでの再処理を防ぎます。

しかし、ご説明のような複数のLambda関数とSQSキューを介した複雑な再起呼び出しパターンは、これらの標準機能では自動的に検知や防止することはできません。

このような複雑な再起呼び出しを検知・防止するためには、アプリケーションレベルでの実装が必要になります。例えば:

  1. メッセージにトレースIDを付与し、各LambdaでそのトレースIDをチェックする。
  2. 処理回数をカウントし、一定回数を超えた場合に処理を停止する。
  3. タイムスタンプを使用して、一定時間を超えた処理を停止する。

これらの方法を組み合わせることで、複雑な再起呼び出しパターンを検知し、必要に応じて処理を停止することが可能になります。ただし、これらの実装はアプリケーション固有のロジックとなるため、Lambda関数のコード内で実装する必要があります。
Sources
Configuring an Amazon SQS queue to trigger an AWS Lambda function - Amazon Simple Queue Service

回答済み 1年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。