案外、きちんとまとまっている記事が少ない。
API GatewayとLambdaを接続するとき、「Lambda プロキシ統合」をオンにするのが定番の方法なのだが、これがかえってハマった。
GETとPOSTで様子が違うのだ。
まず、POSTの場合。
実は「Lambda プロキシ統合」をオンにしなくてもラムダ側でペイロードを
event
で普通に取れるので、これを受け取って任意の処理をさせれば良い。
(この際、このデータをjson.loads()をかけてdictに戻さないと処理が出来ないので注意)
もし「Lambda プロキシ統合」をオンにした場合ペイロードは
event["body"]
となる。
曲者だったのがGET。
こちらは、「Lambda プロキシ統合」をしないとうまく引数が渡せないようだ。
「Lambda プロキシ統合」をオンにすることにより、APIの入力を決まった形にマッピングしてくれ、処理がしやすくなる。
ラムダ側では、
event["queryStringParameters"]
で、クエリ引数を受け取ることが出来る。
が、落とし穴があり、さらに「URL クエリ文字列パラメータ」をセットしないと引数が渡りません。
自分が読んでいた本にはそのような記述がなかったので、軽くハマってしまった。
やり方は、以下が参考になるだろう。
【AWS】API GatewayのGETメソッドでクエリパラメータ取得 - Buffalokusojima’s diary
. 使用するサービス(AWS) Cloudformation API Gateway Lambda 2.概要API GatewayをLambdaの呼び出しに使用することが多いと思います。その際、メソッドの選択肢としてGETがあります。GETで何かしらの値をLambdaからもらう際に、取得する内容の条件等にフロントからク...
案外面倒なものだと思う一方、この面倒さが仕事につながるという事も知っているので気分は複雑だ。
コメント