VPC リンク経由で NLB と接続する API Gateway にリクエストを送ると Internal Server Error が返ってきます。原因を教えてください。

VPC リンク経由で NLB と接続する API Gateway にリクエストを送ると Internal Server Error が返ってきます。原因を教えてください。

Clock Icon2024.07.22

困っていること

VPC リンク経由で NLB と接続する REST API の API Gateway 環境を構築しました。しかし、API Gateway に対して API リクエストを送ると、ステータスコード 500 の Internal Server Error が返ってきます。原因を教えてください。

どう対応すればいいの?

API Gateway からのリクエストに対して NLB にアタッチしているセキュリティグループのインバウンドルールが適用されてしまっていることによりエラーが発生している可能性があります。
NLB のセキュリティ設定で「PrivateLink トラフィックにインバウンドルールを適用する」を無効にしているかを確認してください。

nlb_security_privatelink

API Gateway から NLB に VPC リンク経由でアクセスを実施する場合、NLB への送信元 IP アドレスは AWS が管理する API Gateway サービス基盤のプライベート IP アドレスとなります。

当該サービス基盤の IP アドレス仕様は公開されてないため、上記構成にて NLB にアクセスする場合には「PrivateLink トラフィックにインバウンドルールを適用する」設定を無効にし、API Gateway からのアクセスを NLB にアタッチしているセキュリティグループの影響対象から除外する[1]必要があります。

b. PrivateLink のセキュリティグループ評価をオフにします。

  • コンソールを使用して PrivateLink トラフィックのセキュリティグループ評価をオフにするには、[セキュリティ] タブ、[編集] の順に選択します。[セキュリティ設定] で、[PrivateLink トラフィックにインバウンドルールを適用する] をオフにします。

補足

なお、 API Gateway から Internal server error が返ってくる理由としては、NLB 側のセキュリティ設定以外にも複数の要因が考えられます。[2]
上記設定に問題が無かった場合は、以下観点にて切り分けを実施してください。

500 エラー: 内部サーバーエラー
このエラーは、次のいずれかのシナリオが原因で発生する可能性があります。

  • AWS Lambda 関数コードのエラー
  • ステージ変数を使用する権限がない
  • HTTP ステータスコードのマッピングが正しくないか、見つからない
  • スロットリングに関する問題
  • POST の HTTP メソッドが未定義です
  • Lambda 権限
  • Lambda 関数の JSON 形式の問題
  • バックエンドのペイロードサイズが 10 MB を超える
  • プライベートエンドポイント統合
  • 内部サービスの障害
脚注
  1. API Gateway のプライベート統合の Network Load Balancer を設定する ↩︎

  2. API Gateway の 5xx エラーをトラブルシューティングする方法を教えてください。 ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.