Lambda と統合されている API Gateway エンドポイントのステータスコード 500 の「内部サーバー」エラーをトラブルシューティングする方法を教えてください。

所要時間1分
0

AWS Lambda と統合されている Amazon API Gateway API エンドポイント (/lambda-resource GET など) に HTTP リクエストを送信しました。次のエラーを含むステータスコード 500 の応答を受け取りました: {"message": "Internal server error"} このエラーのトラブルシューティングを行う方法を教えてください。

簡単な説明

このエラーは次の原因が考えられます。

  • Lambda 関数の許可
  • スロットリングの問題
  • HTTP ステータスコードのマッピングが誤っているか、存在しない
  • 未処理エラー

解決方法

開始する前に、API Gateway のエラーをトラブルシューティングするために Amazon CloudWatch Logs をオンにする手順に従ってください。

注意: [Log level] (ログレベル) には、すべてのリクエストの実行ログを生成するために [INFO] を選択します。

Lambda 関数の許可

API Gateway に Lambda 関数を呼び出す許可がない場合、「Lambda 関数の許可が無効です」というエラーが発生します。これを解決するには、API Gateway REST API からの「Invalid permissions on Lambda function」(Lambda 関数の無効な許可) エラーを解決するにはどうすればよいですか?を参照してください。

**注意:**AWS CloudFormation などの別のサービスを使用して API Gateway リソースをデプロイした場合は、 AWS:: Lambda:: Permission リソースへの許可があることを確認してください。

スロットリングの問題

リクエスト数が多いためにバックエンドサービスが調整されると、API Gateway API が「内部サーバーエラー」を返すことがあります。エクスポネンシャルバックオフとリトライのメカニズムを有効にして、リクエストを再試行することができます。問題が解決しない場合は、API Gateway のクォータ制限を確認してください。サービスクォータの制限を超えた場合は、クォータの増加をリクエストできます

また、Lambda 関数のスロットリングの問題により、「レート超過」エラーや 429「TooManyRequestException」エラーが表示される場合もあります。詳細については、「「Rate exceeded」(レートを超過しました) というエラーと 429「TooManyRequestsException」というエラーの Lambda 関数のスロットリングをトラブルシューティングするにはどうすればよいですか?」を参照してください

また、関数がスロットリングされないように、Lambda 関数の同時実行制限の引き上げをリクエストすることもできます。手順については、Lambda 関数の同時実行数の制限の引き上げをリクエストするにはどうすればよいですか?を参照してください。

HTTP ステータスコードのマッピングが誤っているか、存在しない

HTTP ステータスコードマッピングが正しくないか、欠落している場合も、次のような 500 エラーになることがあります。

「構成エラーにより実行が失敗しました。出力マッピングが無効なメソッド応答を参照しています: 2xx/4xx/5xx」

このエラーを解決するには、バックエンドから返されたステータスコードに対する API メソッドレスポンスが存在し、正しくマップされていることを確認してください

未処理エラー

Lambda で処理されないエラーは、関数コードのエラーが原因で関数がタイムアウトしたことを示します。このエラーを防ぐには、 Lambda 関数のコードがべき等であることを確認してください。

デバッグツールの AWS X-Ray を使用して、関数のコードのさまざまなセクションが完了するまでにかかる時間の詳細を確認することもできます。

詳細については、「Amazon API Gateway と AWS Lambda のエラー処理パターン」を参照してください。


関連情報

API Gateway 5xx エラーをトラブルシューティングするにはどうすればいいですか?

コメントはありません

関連するコンテンツ