【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) }
普通に実装すると以下のようにLambdaを設定、またフロントから通信する際にCORSを設定して終了です。
また、クエリのテンプレート設定等が面倒なので、Lambda統合プロキシを使用します。
3-3. テスト
API Gatewayのテスト機能でテストすると、エラーになります。
QueryStringPArametersが設定されていない為です。
3-4. クエリパラメータの設定
Request MethodのURL Query String Parametersに今回の例ではnameを必須設定で入れます。
再度、nameにhogeを入れてテストしてみます。
Query Stringがオンになり、クエリパラメータを入れることが出来るようになり、nameにhogeの値を設定して渡します。
無事にレスポンスボディが返ってきたので成功です。
4 おわりに
他にもLambda統合プロキシなど重要な項目もあるので、別記事で紹介しようかと思います。