LoginSignup
53
54

More than 5 years have passed since last update.

【Python】AWSのAPI GatewayとLambdaを使ってREST APIを書いてみた

Last updated at Posted at 2015-11-12

はじめに

AWS の API Gateway と Lambda をつかって REST API を書いてみたのでメモしておきます。
API Gateway と Lambda を組み合わせて使うことで、EC2でサーバを立てなくて済むかな?

手順

  1. Lambda 関数の作成
  2. API Gateway で API の作成
  3. 作成した API のデプロイ

Lambda 関数の作成

Lambda の画面へ

 まずは、AWS のマネージメントコンソールにサインインして、そのあと AWS Lambda を選択してください。Lambda 関数を作成したことがない場合は「Get Started Now」ボタンを選択してください。
get-started.JPG

Lambda 関数の作成

 「Get Started Now」ボタンを押すと、Lambda 関数のサンプルリストが表示されます。今回は新しく作るので、右下の「Skip」ボタンを選択してください。
skip.JPG

 「Skip」ボタンを選択すると、Lambda 関数を作成する画面になるので詳細を記述していきます。
configure.JPG

関数名と言語の入力

 まずは関数名と言語を指定します。関数名に「hello_world」、言語は「Python2.7」と指定してください。
func_name.JPG

コードの入力

 次に実際のコードです。以下のコードをインラインエディタの中に貼り付けてください。{'message': 'Hello World!'} と返すだけの簡単なコードです。

import json


def lambda_handler(event, context):
    return {'message': 'Hello World!'}

ロールの選択

 続いて、ロールを設定します。既に存在するロールを使うこともできますが、今回は新しく作ります。Roleのドロップダウンを選択して「Basic execution role」を選択してください。
select_role.jpg

ロールの作成

 「Basic execution role」を選択すると以下のような画面が開きます。ここでは、IAMロールとして「新しいIAMロールの作成」、ロール名として「lambda_basic_execution」とします。入力が終わったら「許可」ボタンを選択してロールを作成します。
create_role.JPG

最終確認

 「許可」ボタンを押すと元の画面に戻ります。今回はメモリやタイムアウト時間の設定はしないので、そのまま「Next」ボタンを選択してください。

 「Next」ボタンを選択すると確認画面が表示されます。「Create Function」ボタンを選択して、Lambda Function を作成します。
review1.JPG

作成した Lambda 関数のテスト

 以上でLambda 関数の作成は完了しました。「Test」ボタンを選択して、「Execution Result」が以下のようになっているか確認します。

{
  "message": "Hello World!"
}

API Gateway で API の作成

API Gateway の画面へ

 Lambda 関数を作成したら、マネージメントコンソールのホーム画面に戻って、API Gatewayを選択してください。API を作成したことがなかった場合は「Get Started Now」ボタンを選択してください。
get-started-api.JPG

API名の入力

 API名を入力する画面になるので、API name に「Hello API」と入力した後、「Create API」ボタンを選択します。
new-api.JPG

リソースを作成

 次にリソースを作成します。「Create Resource」ボタンを選択してください。そのあと、Resource Name に「Hello」と入力して「Create Resource」ボタンを選択します。
create_resource.JPG

メソッドを作成

 リソースを作成したら、作成したリソースに対してメソッドを割り当てます。作成した「/hello」が選択されていることを確認したら、「Create Method」ボタンを選択します。そうすると「/hello」の下にドロップダウンが現れるので「GET」を選択します。
create_method.jpg

 その後、メソッド名の右にあるチェックボタン(☑)を選択すると、Integration TypeとしてLambda Function や HTTP Proxy が選択できるようになるので、Lambda Function を選択します。Lambda Region は Lambda 関数を作成したリージョンを選択し、Lambda Function には先ほど作成した Lambda 関数の名前である「hello_world」を入力します。すべて設定し終わったら、「Save」ボタンを選択します。
save_api.JPG

「Add Permission to Lambda Function」と出たら、「OK」を選択します。これで作成は完了です。

作成した API のテスト

 「Test」ボタンを選択して作成した API をテストしてみてください。Response Bodyを見ると Lambda 関数が実行されていることがわかるはずです。

{
  "message": "Hello World!"
}

API のデプロイ

 画面左側の「Deploy API」ボタンを選択します。
deploy_api.JPG

 「Deploy API」ボタンを選択すると以下のような画面が出てきます。Deployment Stageとして「New Stage」、Stage nameとして「beta」と入力し、「Deploy」ボタンを選択します。
deploy.JPG

Invoke URLが表示されます。
url.JPG

URLにあるbetaの後ろに「/hello」と付け足してからアクセスしてください。以下のように表示されたら成功です。お疲れ様でした。

{"message": "Hello World!"}
53
54
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
54