🐕

POSTリクエストをAPI Gatewayを通してLambdaで受け取る

2024/07/09に公開


AWSでPOSTリクエストの内容をAPI GWを経由してLambdaで受取り、処理をしたい。
しかしエラーとなったため、以下に解決法を示す。

エラー

  • API GatewayからのリクエストはそのままではLambdaで受け取れない
Lambda関数
def lambda_handler(event, context):
    print("event: ", event)
    return {
        "statusCode": 200,
        "headers": {
            "Content-Type": "application/json"
        }
    }
以下のようなエラー
Execution failed: Could not parse request body into json: Could not parse payload into json: 

対処法

  • API Gatewayでマッピングテンプレートを記載する。
    • API Gateway > リソース > 統合リクエスト > 編集
    • 一番下あたりの「マッピングテンプレート」
      テンプレート本文
      {
        "body" : $input.json('$')
      }
      
    • 変更後はAPIデプロイを忘れずに。。
    • Lambdaを再度実行
      以下のようなレスポンスが返ってくる
      {'body': 'hogehoge'}
      

参考

Discussion