APIGatewayを用いてLambdaをHTTPで呼び出す方法について解説します。
概要
APIGatewayとは、独自で作成したビジネスロジックやデータ、または各種AWSサービスをHTTPで呼び出せるようにするためのサービスです。
APIGatewayがHTTPリクエストの受け口となり、適切なバックエンドに割り振ってくれます。
今回はバックエンドにLambdaを指定してAPIを作成してみます。
また、バックエンドにLambdaを指定することをLambda統合と呼ぶようです。
以下が今回作成するAPIの簡単な概略図です。
Lambdaの作成
まずはバックエンドの処理であるLambdaを作成していきましょう。
今回はチュートリアルなので、単純な固定文字列を返すだけの処理を作成します。
import json def lambda_handler(event, context): res = { "statusCode" : 200, "headers" : {"Access-Control-Allow-Origin" : '*'}, "body" : 'APIGateway Tutorial' } return res
APIGatewayとLambdaを統合する場合は、LambdaのレスポンスをAPIGatewayでハンドルできるような形式で返す必要があります。
上記のように返却値はbodyに含め、それ以外にステータスコードやヘッダーなどを付与してやる必要があります。
詳細については以下の記事を参照ください。
Lmabdaを作成したら保存して「アクション > 新しいバージョンを発行」をします。
これでLambda側の設定は完了です。
APIGatewayの設定
次にAPIGatewayを設定していきます。
APIGatewayを開き、「APIを作成」を選択します。
APIタイプを選択で「REST API」を「構築」します。
任意の名前や説明を入力。
それ以外はデフォルトのままで、「APIの作成」を選択します。
「アクション > メソッドの作成」を選択し、GETメソッドを作成
統合タイプで「Lambda関数」を選択。
Lambda関数には先ほど作成したLambda関数を設定します。
権限追加のポップアップが出たら、OKを選択します。
作成完了後、「テスト」を選択してテストを実施します。
以下のようにリクエストが返ってくればOKです。
テストが正常完了したら、APIGatewayをデプロイします。
デプロイすることで外部ネットワークからAPIを叩くことができます。
「アクション > APIのデプロイ」を選択。
デプロイするステージの選択画面が表示されます。
はじめてデプロイする場合は、ステージが存在しないので「新しいステージ」を選択します。
ステージ名や説明などは任意の値を入力しましょう。
入力が完了したら「デプロイ」を選択します。
デプロイが完了すると以下のようにステージのURLが表示されます。
このURLにリクエストを投げることでLambdaを起動することができます。
リクエストを投げてみる
Lambda、APIGatewayの設定が完了したので実際にリクエストを投げてみます。
今回作成したのはGETメソッドなので、ブラウザからでも直接起動することが可能です。
以下のようなリクエストが返ってくるはずです。
以上でAPIGstewayのLambda統合のチュートリアルは終了です。
今回はLambdaで固定を返すだけですが、当然パラメータを受けて動的に返却値を返すことも可能です。
パラメータを受けるサンプルについては、以下の記事を参照ください。