Amazon API GatewayとLambdaを使って簡単なWebAPIを作ってみよう!

AWSラボ
スポンサーリンク

皆さん、こんにちわ。
hidesanです。

今回は、AWSサービスを使って簡単なWebAPIを作ってみたいと思います。

APIにも様々なものがありますが、その中でもWebAPIというのはHTTPプロトコルを利用したAPIです。

HTTPによって呼び出されて結果を返すというシンプルな仕組みのため、「手軽に使える」「汎用性がある」というメリットがあります。

 

最近のWebサービスは、このWebAPIが備わっていることがほとんど当たり前となっています。

今回はこんなWebAPIをAWSサービスを使ってお手軽に作成してみたいと思います。

スポンサーリンク

どのようなものを作るの?

特定のURLをブラウザで叩いたら、現在の時刻を表示してくれる単純なものを作ります。

コードの言語はPython3.6となります。

機能としてはめっちゃショボい代物ですが、基本的なWebAPIのため、中身を作り込膨らますことで、ある程度のWebAPIは作ることが可能となります。

仕組みの全体概要

API GatewayでHTTPリクエストをキャッチし、そのリクエストに紐づいたLambda関数をキックします。

キックされたLambdaは、現在時刻を文字列でAPI Gatewayへ戻し、API Gatewayはリクエストの結果として現在時刻文字列を返します。

WebAPIの作り方

今回はCloud9を使ってLambdaを作成していきたいと思います。

Cloud9を利用すると、開発環境を構築せずに済みますから、開発までの準備が非常に楽になりオススメです。

また自動的にAPI Gatewayも設定してくれますので、楽チンです。

※Cloud9を利用することで、自動的にCloudFormationのスタックが作成されます。API GatewayやLambdaは、このCloudFormationのスタックの一部として作成されることとなります。

(1)Cloud9を立ち上げます

(2)右側から[λ+]をクリックします

(3)”Function name”欄に任意の名前を入力して、[Next]をクリックします

(4)”Select rumtime”欄で”Python 3.6″を選択、”empty-python”を選択して[Next]をクリックします

(5)”Function trigger”欄を”API Gateway”にします。
こうすることで、後に紹介するAPI Gateway側の設定を簡略化することになります。
“Resource Path”は”testapi”、”Security”は”NONE”を設定し、[Next]をクリックします。

(6)”Memory”欄、”Role”欄はデフォルト設定のまま[Next]をクリックします

(7)[Finish]をクリックします

(8)次のコードをcloud9に記載します。

(9)テストしてみます。[Run]→[Run]をクリックするとテストが実行され、Responseとして現在時刻(UTC)が表示されました。

(10)作成したLambda関数を本番環境へデプロイします。
作成したLambdaを右クリックし、[Deploy]をクリックします。

(11)API Gateway コンソール画面を開きます

(12)作成された[cloud9-TestFunc]をクリックします

(13)[ステージ]→[▼]→[GET]をクリックし、”URLの呼び出し”欄にあるリンクをクリックしてみましょう

はい。この通り。
現在時刻(UTC)がブラウザに表示されましたね。


いかがでしたでしょうか?

結構簡単にWebAPIを実装することができましたね。

しかも、サーバーレスでの実装となります。
(Cloud9についてはサーバー有りですが・・・)

これを元にして、様々なWebAPIを試しに作成してみてはいかがでしょうか?

以上、hidesanでした!

スポンサーリンク
AWSラボ
Tech Dive
タイトルとURLをコピーしました