Lambda 関数の「runtime exited」(ランタイム終了) エラーのトラブルシューティング方法を教えてください。

所要時間1分
0

AWS Lambda 関数から「runtime exited」 (ランタイム終了) エラーが返されました。

簡単な説明

Lambda のランタイムエラーでは、以下のステータスコードが返されます:

{
    "errorType": "Runtime.ExitError",
    "errorMessage": "RequestId: 1234aa1b-cd50-6c78-90cd-ce1234ce9950 Error: Runtime exited with error: exit status 129"
}

解決方法

以下のベストプラクティスに従って Lambda 関数のコードを確認し、根本原因を特定し、ランタイムエラーのトラブルシューティングを行います。

  • 関数のコードに、process.exit(0)exit()quit()os.Exit()Environment.Exit() などの構文を明示的に呼び出す終了コードがないか確認してください。関数のコードにこれらの終了コードのいずれかが含まれている場合は、それらを削除するか、有効な return ステートメントに置き換えてください。
  • Lambda 関数の Amazon CloudWatch Logs を確認し、関数のメモリを確認してください。Lambda は、設定されたメモリ量に比例して CPU パワーを割り当てます。メモリ量を増やす必要がある可能性があります。Lambda 関数に割り当てられるメモリの量は、128 MB から 10,240 MB の間で設定できます。コードを最適化してリソース消費量を減らすこともできます。詳細については、「Memory and computing power」(メモリと計算能力) を参照してください。
  • 関数がバックエンドデータベースに接続している場合、接続が多すぎる可能性があります。不要な接続を避けるため、データベース接続は関数ハンドラーの外部で初期化してください。後続の Lambda 関数呼び出しリクエストでは、これらのデータベース接続を再利用できます。詳細については、「Best practices for working with AWS Lambda functions」(AWS Lambda 関数を使用する際のベストプラクティス) を参照してください。
  • Lambda 関数を呼び出すときにアイドル状態の接続を再利用しようとすると、接続エラーが発生します。持続的な接続を確保するには、ランタイムに関連付けられた keep-alive ディレクティブを使用してください。詳細については、「Reusing Connections with keep-alive in Node.js」(Node.js の keep-alive による接続の再利用) を参照してください。
  • ファイル記述子と 1,024 のスレッド制限のため、Lambda 関数に「out of memory」(メモリ不足) エラーが発生していないかどうかを確認してください。この関数の Lambda Insights 拡張モニタリングを有効にしてください。専用のクエリ構文を使用して、メモリ使用量メトリクスのログデータを検索および分析できます。たとえば、fd_use メトリクスを監視できます。メトリクスは /aws/lambda-insights というロググループ名に保存されます。詳細については、「Metrics collected by Lambda Insights」(Lambda Insightsによって収集されたメトリクス) を参照してください。

関連情報

Lambda 関数がタイムアウトしているかどうかを確認する方法を教えてください。

AWS公式
AWS公式更新しました 10ヶ月前
コメントはありません