AWS Lambda 関数が、1 つのイベントに対して複数の呼び出しリクエストを受け取りました。
同期呼び出しの場合、Lambda 関数を呼び出すクライアントと AWS サービスは操作を再試行します。非同期呼び出しの場合、Lambda は関数エラーを自動的に 2 回再試行します。
Lambda 関数呼び出しの重複を防ぐには、使用する呼び出し方法に基づいて次の操作を実行します。
注: 関数呼び出しの失敗をトラブルシューティングするには、「Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください」を参照してください。
Lambda 関数の Amazon CloudWatch Logs を確認してください。重複した呼び出しが同じリクエスト ID を持っているかどうか、および重複した呼び出しがエラーを返した、またはタイムアウトしたかどうかを確認します。
次に、ユースケースに基づいて次のいずれかを実行します。
エラーを返したりタイムアウトしたりした呼び出しが重複していて、リクエスト ID が同じ場合
注: エラーを返すかタイムアウトし、リクエスト ID が同じ呼び出しが重複している場合は、Lambda サービスが関数を再試行したことを示します。
非同期呼び出しのエラー処理を設定して、Lambda 関数が失敗した非同期呼び出しリクエストを再試行する回数を減らします。
エラーを返したりタイムアウトしない呼び出しが重複している場合
注: エラーを返したりタイムアウトしない呼び出しが重複している場合は、クライアント側で再試行したことを示します。
次の操作を行います。
注: 同期呼び出しの再試行動作は、各サービスのイベントソースマッピングに基づいて、AWS サービス間で異なります。詳細については、「他の AWS サービスからのイベントを使用した Lambda の呼び出し」を参照してください。
Lambda 関数のコードがべき等で、メッセージを複数回処理できることを確認してください。次に、Lambda 関数が返すエラーを特定して解決します。
Working with CloudTrail event history (CloudTrail イベント履歴の使用)
AWS Lambda 関数を使用するためのベストプラクティス
Daisuke
質問済み 1年前
Tsuji Yuta
質問済み 2年前
rePost-User-6546543
質問済み 4年前
Taya_M
公開済み 9ヶ月前