あるチームがAPI GatewayとLambdaで構成されたAPIをデプロイした。本番環境では「HTTP 502 Bad Gateway」エラーが断続的に返されている。X-Rayのトレースを確認すると、Lambdaの実行記録は存在するがエラーとして記録されていない。最もあり得る原因はどれか。
- A. API GatewayのスロットリングがLambdaを呼び出せなかった
- B. Lambda関数がAPI Gatewayの期待するレスポンス形式(statusCode, headers, bodyを含むJSON)を返していない
- C. API GatewayのカスタムドメインのSSL証明書が期限切れになっている
- D. Lambda関数のIAMロールにAPI Gatewayへの書き込み権限がない
解答と解説を見る
正解: B
HTTP 502 Bad GatewayはAPI GatewayがLambdaから無効なレスポンスを受け取ったことを意味する(選択肢B)。Lambda関数のX-Rayトレースに成功の記録があるということはLambdaは正常に実行・完了しているが、返したレスポンスがAPI Gatewayの統合レスポンスの期待形式({"statusCode": 200, "headers": {}, "body": "..."})を満たしていない。例えば直接文字列を返したり、statusCodeキーを含まないオブジェクトを返したりすると502になる。選択肢Aのスロットリング(HTTP 429)の場合はLambdaが呼ばれないためX-Rayトレースは存在しない。選択肢DのLambda IAMロールの権限不足はLambda実行時にエラーになりX-Rayに記録される。選択肢CのSSL証明書期限切れはHTTPSハンドシェイクの段階で失敗し503や接続エラーになる。レスポンス形式の確認はAPI GatewayとLambda統合のよくあるトラブルシューティングポイント。
📚 関連サービスの解説: AWS Lambda ・ Amazon API Gateway