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

エラー時の再試行

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

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

     

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

     

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

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

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

     

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

      Lambda 関数を直接 (AWS SDK 経由または API Gateway 経由で)、呼び出した場合、クライアントではエラーが表示され再試行を選択できます。API ゲートウェイ を通じて Lambda を呼び出す場合は、Lambda の応答エラーを API ゲートウェイ のエラーコードに必ずマップする必要があります。

       

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

       

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

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

推奨事項

AWS Lambda を初めて使用する場合は、「仕組み」セクションのすべてのトピックに目を通し、Lambda の内容を確認しておくことをお勧めします。次のトピックは「AWS Lambda アクセス権限モデル」です。

「仕組み」セクションのすべてのトピックに目を通した後は、Lambda 関数のビルドを確認して、ご利用開始にあたっての実習を体験し、ユースケースについて学習することをお勧めします。各ユースケースには、エンドツーエンドエクスペリエンスを体験できるエンドツーエンドの説明が記載されています。