0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】API Gateway + Lambdaで「The adapter was unable to infer a handler to use for the event. 」エラーになった場合

Posted at

概要

AWS API GatewayとLambdaを利用した構成を実装し、API Gatewayのドメインにアクセスすると以下のエラーに遭遇。解決方法を紹介します。

{"errorMessage": "The adapter was unable to infer a handler to use for the event. This is likely related to how the Lambda function was invoked. (Are you testing locally? Make sure the request payload is valid for a supported handler.)"

image.png

Mangumというライブラリを使うことで、リクエストとレスポンスをLambdaとAPI Gatewayが扱える形式に変換できるので、そちらを利用してFastAPIのアプリを動かしています。

Mangum is an adapter for running ASGI applications in AWS Lambda to handle Function URL, API Gateway, ALB, and Lambda@Edge events.
https://pypi.org/project/mangum/

解決方法

API Gateway構築時に「Lambdaプロキシ統合」がオフになっているのが原因でした。
オフの場合、Mangumのようなアダプターがリクエストを正しく処理する際にエラーが発生してしまいます。

Lambdaプロキシ統合とは?

設定「Lambdaプロキシ統合」とは、API GatewayとLambda関数の間でリクエストとレスポンスを直接やり取りするための統合方法。

この統合方法をオンにしていると、API GatewayはHTTPリクエストをそのままLambda関数に渡し、Lambda関数のレスポンスをそのままクライアントに返す、という形式を取ります。

Lambda プロキシ統合を使用すると、API ルートを Lambda 関数と統合できます。クライアントが API を呼び出すと、API Gateway はリクエストを Lambda 関数に送信し、関数のレスポンスをクライアントに返します。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html

これにより標準化された形式でLambda関数に渡されるため、Mangumのようなアダプターがリクエストを正しく処理できるのです。

Lambdaプロキシ統合がオフの場合、API GatewayはMangumのようなアダプターが正しく処理できない形式でLambda関数に送ってしまうようで、上述のエラーが出ます。

ということで、API Gatewayの画面からオンにすれば解決しました。

参考:

  • AWS repost

The issue was with the request mapping. There were none. SInce lambda is expecting a HTTP request mapping is needed before passing to the lambda.
https://repost.aws/ja/questions/QUxHgwh_cIRPuuy_sHav7pnQ/magnum-with-api-gateway

  • StackOverflor

This error occurs when we don't enable below flag in the create method page under any Resource in API gateway.
Enable this flag
Lambda proxy integration Send the request to your Lambda function as a structured event. Please click on the below image
https://stackoverflow.com/questions/77562091/mangum-adapter-unable-to-infer-handler-to-use-for-event-on-aws-api-gateway

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?