メニュー
AWS Lambda
開発者ガイド

再試行動作について

Lambda 関数は、次のいずれかが原因で失敗する場合があります。

  • 関数がエンドポイントに到達する前にタイムアウトになった。

     

  • 関数が入力データを正しく解析できなかった。

     

  • 関数にメモリ不足エラーまたは他タイムアウトなどのリソース制約が発生した。

このようなエラーが発生する場合、関数は例外をスローします。例外の処理方法は、Lambda 関数の呼び出し方法によります。

  • ストリームベースではないイベントソース – これらのイベントソースの一部は Lambda 関数を同期的に呼び出すようにセットアップされています。それ以外は非同期呼び出しです。したがって、例外は次のように処理されます。

     

    • 同期呼び出し – 呼び出し元アプリケーションが 429 エラーを受け取り、再試行が必要となります。サポートされているイベントソースおよびそれらが使用する呼び出しタイプのリストについては、サポートされているイベントソースを参照してください。これらのイベントソースは、追加の再試行数が統合に組み込まれている場合もあります。

      AWS SDK を使用して Lambda 関数を直接呼び出した場合、クライアントではエラーが表示され、再試行を選択できます。

       

    • 非同期呼び出し – 非同期イベントは Lambda 関数の呼び出しに使用される前にキューされます。AWS Lambda がイベントを完全に処理できない場合、呼び出しが 2 回自動的に再試行されます (再試行間には遅延があります)。関数にデッドレターキュー (DLQ) を指定した場合、障害イベントは指定された Amazon SQS キューまたは Amazon SNS トピックに送信されます。要求されず、またデフォルト設定でデッドレターキュー (DLQ) を指定しない場合、そのイベントは破棄されます。詳細については、「デッドレターキュー」を参照してください。

       

  • ストリームベースのイベントソース – ストリームベースのイベントソース (Amazon Kinesis Data Streams および DynamoDB ストリーム) の場合、AWS Lambda はストリームをポーリングして Lambda 関数を呼び出します。そのため、Lambda 関数が失敗した場合、AWS Lambda はデータの有効期限 (Amazon Kinesis Data Streams の場合 7 日間) が切れるまで、レコードのエラーが発生したバッチを試みます。例外はブロックとして扱われ、失敗したレコードのバッチの有効期限が切れるか処理が成功するまで、AWS Lambda ではストリームから新しいレコードの読み込みが行われません。こうすることで、確実に AWS Lambda で順番にストリームイベントが処理されます。

呼び出しモードの詳細については、「イベントソースマッピング」を参照してください。