サーバーレスを実現できるAWS Lambda

サーバーレス
一定のサーバー容量に依存することなく、稼働に必要なリソースを動的に設定し、マネージドサービスを利用する事でシステム構築をする運用方法。
参考
サーバーを必要としないという意味でなく、サーバーを運用・準備する必要がないというところがポイント。

目次

  1. 1. Lambdaとは
  2. 2. LambdaでサーバーレスAPIを作る
  3. 3. 終わりに

1. Lambdaとは

Lambdaとは
Lambdaを使用することで、アプリケーションやバックエンドサービスの管理を不要にします。コードさえアップロードすれば、高可用性を実現しながらコードを実行およびスケーリングするために必要なことは、すべて Lambda により行われます。コードは、他の AWS サービスから自動的にトリガーするよう設定することも、ウェブやモバイルアプリケーションから直接呼び出すよう設定することもできます。
(参考:AWS Lambda)

簡単に言うとラムダは、関数をアップロードするだけで自動的にサーバーを管理し、関数のトリガーまで設定できる機能を提供するサービスです。


Lambdaの仕組み

Lambdaは、以下のような流れで使用できます。

Lambda関数を作成する。
関数が発火するきっかけとなるエンドポイントを作成する。
関数はエンドポイントにアクションがあったときのみに発火する。

スクリーンショット 2020-08-12 21.04.56

2. LambdaでサーバーレスAPIを作る

次はLambdaでサーバーレスAPIを作る流れを確認します。

サーバーレスAPIのユースケースの流れはこのような感じです。

スクリーンショット 2020-08-12 20.32.57

ユーザーがインターネット経由でAPIにアクセスすると、Lambda関数が実行され、結果が返されると言う流れです。

今回は画像とともにサーバーレスAPIの作り方の確認だけします。

スクリーンショット 2020-08-12 21.23.57

Lambdaコンソールに移動し、Lambdaエディタにて、関数を作成します。
handler関数がLambdaが自動で実行してくれるLambda関数です。
引数eventはLambda関数が発火する要因となるイベントが入っています。
今回はAPIなので、eventにHTTPパラメータ、ヘッダ、メソッド、ボディなどの情報が格納されてLambda関数の引き金となります。


次にAmazonAPI GatewayからRESTAPIを作成します。

APIのセットアップで、APIにアクセスすると先ほど作成したLambda関数が実行されるように設定します。

このままAPIをデプロイし、APIのURLを取得したら、CURLコマンドで以下のように打ってください。

$ curl -X POST --header "Content-Type: application/json" -d '{"key1":"value1"}' https://kniiqf3nbc.execute-api.ap-northeast-1.amazonaws.com/APIdeploy
{"statusCode":200,"body":"\"Hello from Lambda!\"","event":{"key1":"value1"}}

copy

APIにアクセスすることで、先ほどのLambda関数から値が返ってくることが分かります。

{"statusCode":200,"body":"\"Hello from Lambda!\"","event":{"key1":"value1"}}