【AWS】API GatewayのGETメソッドでクエリパラメータ取得

. 使用するサービス

(AWS)

  • Cloudformation
  • Lambda

2.概要

API GatewayをLambdaの呼び出しに使用することが多いと思います。その際、メソッドの選択肢としてGETがあります。GETで何かしらの値をLambdaからもらう際に、取得する内容の条件等にフロントからクエリパラメータを送ることで、Lambdaでパラメータを受け取り、内部で処理をすることで実現します。
実装の際、Lambdaとメソッドを指定するだけでは、クエリパラメータを受け取れない事実が最近発覚したので説明します。(開発中はなかなか気づかず、恥ずかしい限りです)

3. 実装

3-1. Lambda例

Lambdaは以下の内容で作成

import json

def lambda_handler(event, context):
    # TODO implement
    
    parameter = event["queryStringParameters"]
    
    name = parameter["name"]
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello ' + name)
    }

3-2. API Gatewayの実装

普通に実装すると以下のようにLambdaを設定、またフロントから通信する際にCORSを設定して終了です。
また、クエリのテンプレート設定等が面倒なので、Lambda統合プロキシを使用します。

api_gateway_invoke_lambda
API Gateway Lambda呼び出し

3-3. テスト

API Gatewayのテスト機能でテストすると、エラーになります。

api_gateway_test
API Gateway テスト

QueryStringPArametersが設定されていない為です。

3-4. クエリパラメータの設定

Request MethodのURL Query String Parametersに今回の例ではnameを必須設定で入れます。

api_gateway_query
クエリ設定

再度、nameにhogeを入れてテストしてみます。

api_gateway_test2
API Gateway 再テスト

Query Stringがオンになり、クエリパラメータを入れることが出来るようになり、nameにhogeの値を設定して渡します。
無事にレスポンスボディが返ってきたので成功です。

4 おわりに
他にもLambda統合プロキシなど重要な項目もあるので、別記事で紹介しようかと思います。