#topicpath ---- #contents **API GatewayからAWS Lambdaを呼び出す。 [#i2d0e487] AWS Lambdaは、サーバレスでロジックを記述できる関数型のフレームワークです。EC2などでサーバを立てて常駐させてたようなサービスを、関数を登録しておくような感覚で構築する事ができる仕組みです。 また API Gateway は、AWSのサービスをRESTで呼び出す事ができるフレームワークです。これらを用いて、API GatewayからLambdaを呼び出すことで、サーバレスなREST/API環境が構築できそうです。 具体的には https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev?q_param=value1 などとクエリパラメタ付きのリクエストを送ると、 { "my_param1": "value1" } なんてJSONを echoするAPIを構築してみます。 ** Lambda関数の作成 [#ue909962] *** まずはパラメタを受け取るLambda関数を定義 [#xaa8c941] Lambdaサービスのトップにアクセスし、関数の作成 >> 一から作成を選択します #ref(01.png) 関数名を helloworld に、ロールは新しく作成(lambdaRole)し、関数の作成をクリック #ref(02.png) helloworldという関数が作成され、関数を記述する画面が表示されます。今回はPythonを選択しました。 #ref(03.png) 真ん中あたりの「ハンドラ」というテキストボックスに、lambda_function.lambda_handler とありますが、これはソースコードの lambda_function.pyのlambda_handlerメソッドを呼び出すことを意味しています。で、具体的なコードは 単純なオブジェクトを一つ、 return { "my_param1": event['param1'] } と返すように記述しました。 さて右上の「テスト」ボタンをクリックしてみると「テストイベントの設定」という、関数を呼び出した際にパラメタに渡ってくるオブジェクトを指定できる画面が表示されます。 #ref(04.png) 図のように、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'] とやってアクセス出来ることが確認できました。 ** API Gatewayの作成 [#yb7a6a71] *** つぎにAPI Gatewayを定義 [#m44b7b2d] ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}