#topicpath
----


#contents



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関数を作成 [#xaa8c941]
Lambdaサービスのトップにアクセスし、関数の作成 >> 一から作成を選択します

#ref(01.png)

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

#ref(02.png)

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

#ref(03.png)

右上のハンドラというテキストボックスに、lambda_function.lambda_handler とありますが、これはソースコードの lambda_function.pyのlambda_handlerメソッドを呼び出すことを意味しています。で、具体的なコードは 単純なオブジェクトを一つ返すように記述しました。
真ん中あたりの「ハンドラ」というテキストボックスに、lambda_function.lambda_handler とありますが、これはソースコードの lambda_function.pyのlambda_handlerメソッドを呼び出すことを意味しています。で、具体的なコードは 単純なオブジェクトを一つ、
 return {
  "my_param1": event['param1']
 }
と返すように記述しました。

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

#ref(04.png)

図のように、JSONオブジェクトを指定しますが、ここでは末尾に"param1": "value1" というパラメタを指定しています。これはコード中:
図のように、JSONオブジェクトを指定したりできますが、ここでは"param1":"value1" というテストデータを指定しました。これは関数中の event['param1'] に渡ってくるようになっています。

*** テスト [#lad1f2b3]
つぎにこの画面下の「作成」をクリックすると、元の画面に戻ってきます。先のテストイベントが選択された状態になっているので、再度「テスト」をクリックすることで、関数が実行されます。

#ref(06.png)


関数の戻り値は
 return {
  "my_param1": event['param1']
 }
と書きましたが、実行結果は
 return {
  "my_param1": "value1"
 }
となっていて、テストイベントの
 {
   "key3": "value3",
   "key2": "value2",
   "param1": "value1"   ←ココ
 }
この値が event['param1'] とやってアクセス出来ることが確認できました。

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



*** テスト [#lad1f2b3]

** つぎにAPI Gatewayを定義 [#m44b7b2d]




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




----
この記事は
#vote(おもしろかった,そうでもない)

#comment

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

MacBookPro:~ masatomix$
SIZE(10){現在のアクセス:&counter;}


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