はじめに
AWS の API Gateway と Lambda をつかって REST API を書いてみたのでメモしておきます。
API Gateway と Lambda を組み合わせて使うことで、EC2でサーバを立てなくて済むかな?
手順
- Lambda 関数の作成
- API Gateway で API の作成
- 作成した API のデプロイ
Lambda 関数の作成
Lambda の画面へ
まずは、AWS のマネージメントコンソールにサインインして、そのあと AWS Lambda を選択してください。Lambda 関数を作成したことがない場合は「Get Started Now」ボタンを選択してください。
Lambda 関数の作成
「Get Started Now」ボタンを押すと、Lambda 関数のサンプルリストが表示されます。今回は新しく作るので、右下の「Skip」ボタンを選択してください。
「Skip」ボタンを選択すると、Lambda 関数を作成する画面になるので詳細を記述していきます。
関数名と言語の入力
まずは関数名と言語を指定します。関数名に「hello_world」、言語は「Python2.7」と指定してください。
コードの入力
次に実際のコードです。以下のコードをインラインエディタの中に貼り付けてください。{'message': 'Hello World!'} と返すだけの簡単なコードです。
import json
def lambda_handler(event, context):
return {'message': 'Hello World!'}
ロールの選択
続いて、ロールを設定します。既に存在するロールを使うこともできますが、今回は新しく作ります。Roleのドロップダウンを選択して「Basic execution role」を選択してください。
ロールの作成
「Basic execution role」を選択すると以下のような画面が開きます。ここでは、IAMロールとして「新しいIAMロールの作成」、ロール名として「lambda_basic_execution」とします。入力が終わったら「許可」ボタンを選択してロールを作成します。
最終確認
「許可」ボタンを押すと元の画面に戻ります。今回はメモリやタイムアウト時間の設定はしないので、そのまま「Next」ボタンを選択してください。
「Next」ボタンを選択すると確認画面が表示されます。「Create Function」ボタンを選択して、Lambda Function を作成します。
作成した Lambda 関数のテスト
以上でLambda 関数の作成は完了しました。「Test」ボタンを選択して、「Execution Result」が以下のようになっているか確認します。
{
"message": "Hello World!"
}
API Gateway で API の作成
API Gateway の画面へ
Lambda 関数を作成したら、マネージメントコンソールのホーム画面に戻って、API Gatewayを選択してください。API を作成したことがなかった場合は「Get Started Now」ボタンを選択してください。
API名の入力
API名を入力する画面になるので、API name に「Hello API」と入力した後、「Create API」ボタンを選択します。
リソースを作成
次にリソースを作成します。「Create Resource」ボタンを選択してください。そのあと、Resource Name に「Hello」と入力して「Create Resource」ボタンを選択します。
メソッドを作成
リソースを作成したら、作成したリソースに対してメソッドを割り当てます。作成した「/hello」が選択されていることを確認したら、「Create Method」ボタンを選択します。そうすると「/hello」の下にドロップダウンが現れるので「GET」を選択します。
その後、メソッド名の右にあるチェックボタン(☑)を選択すると、Integration TypeとしてLambda Function や HTTP Proxy が選択できるようになるので、Lambda Function を選択します。Lambda Region は Lambda 関数を作成したリージョンを選択し、Lambda Function には先ほど作成した Lambda 関数の名前である「hello_world」を入力します。すべて設定し終わったら、「Save」ボタンを選択します。
「Add Permission to Lambda Function」と出たら、「OK」を選択します。これで作成は完了です。
作成した API のテスト
「Test」ボタンを選択して作成した API をテストしてみてください。Response Bodyを見ると Lambda 関数が実行されていることがわかるはずです。
{
"message": "Hello World!"
}
API のデプロイ
「Deploy API」ボタンを選択すると以下のような画面が出てきます。Deployment Stageとして「New Stage」、Stage nameとして「beta」と入力し、「Deploy」ボタンを選択します。
URLにあるbetaの後ろに「/hello」と付け足してからアクセスしてください。以下のように表示されたら成功です。お疲れ様でした。
{"message": "Hello World!"}