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

Lambda 関数呼び出しの重複を防ぐ方法を教えてください。

所要時間1分
0

AWS Lambda 関数が、1 つのイベントに対して複数の呼び出しリクエストを受け取りました。

簡単な説明

同期呼び出しの場合、Lambda 関数を呼び出すクライアントと AWS サービスは操作を再試行します。非同期呼び出しの場合、Lambda は関数エラーを自動的に 2 回再試行します。

解決策

Lambda 関数呼び出しの重複を防ぐには、使用する呼び出し方法に基づいて次の操作を実行します。

注: 関数呼び出しの失敗をトラブルシューティングするには、「Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください」を参照してください。

非同期呼び出し

Lambda 関数の Amazon CloudWatch Logs を確認してください。重複した呼び出しが同じリクエスト ID を持っているかどうか、および重複した呼び出しがエラーを返した、またはタイムアウトしたかどうかを確認します。

次に、ユースケースに基づいて次のいずれかを実行します。

エラーを返したりタイムアウトしたりした呼び出しが重複していて、リクエスト ID が同じ場合

注: エラーを返すかタイムアウトし、リクエスト ID が同じ呼び出しが重複している場合は、Lambda サービスが関数を再試行したことを示します。

非同期呼び出しのエラー処理を設定して、Lambda 関数が失敗した非同期呼び出しリクエストを再試行する回数を減らします。

エラーを返したりタイムアウトしない呼び出しが重複している場合

注: エラーを返したりタイムアウトしない呼び出しが重複している場合は、クライアント側で再試行したことを示します。

次の操作を行います。

注: 関数呼び出しの失敗をトラブルシューティングするには、「Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください」を参照してください。

同期呼び出し

注: 同期呼び出しの再試行動作は、各サービスのイベントソースマッピングに基づいて、AWS サービス間で異なります。詳細については、「他の AWS サービスからのイベントを使用した Lambda の呼び出し」を参照してください。

Lambda 関数のコードがべき等で、メッセージを複数回処理できることを確認してください。次に、Lambda 関数が返すエラーを特定して解決します

関連情報

Working with CloudTrail event history (CloudTrail イベント履歴の使用)

AWS Lambda 関数を使用するためのベストプラクティス

AWS公式更新しました 6ヶ月前