API GatewayからAWS Lambdaを呼び出す。

AWS Lambdaは、サーバレスでロジックを記述できる関数型のフレームワークです。また API Gateway はAWSのサービスをRESTで呼び出す事が出来るフレームワークです。これらを用いて、API GatewayからLambdaを呼び出すことで、サーバレスなAPI環境が構築できそうです。

具体的には

https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev?q_param=value1

などとクエリパラメタ付きのリクエストを送ると、

{
  "my_param1": "value1"
}

なんてJSONを echoするAPIを構築してみます。

まずはパラメタを受け取るLambda関数を作成

Lambdaサービスのトップにアクセスし、関数の作成 >> 一から作成を選択します

01.png

関数名を helloworld に、ロールは新しく作成し、(lambdaRole) 関数の作成をクリック

02.png

helloworldという関数が作成され、関数を記述する画面が表示されます。今回はPythonを選択しました。

03.png

右上のハンドラというテキストボックスに、lambda_function.lambda_handler とありますが、これはソースコードの lambda_function.pyのlambda_handlerメソッドを呼び出すことを意味しています。で、具体的なコードは 単純なオブジェクトを一つ返すように記述しました。

さて右上の「テスト」ボタンをクリックしてみると、「テストイベントの設定」というパラメタに渡ってくるオブジェクトを指定する画面が表示されます。

04.png

図のように、JSONオブジェクトを指定しますが、ここでは末尾に"param1": "value1" というパラメタを指定しています。これはコード中:

return {
 "my_param1": event['param1']
}

のevent['param1'] に渡ってくるようになっています。

テスト

つぎにAPI Gatewayを定義

curl https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev -d 'q_param=value1' -G

$ curl https://lf7by7vxpk.execute-api.ap-northeast-1.amazonaws.com/dev -d 'q_param=value1' -G | jq {

 "my_param1": "value1"

}

MacBookPro?:~ masatomix$


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS