サーバーレス
一定のサーバー容量に依存することなく、稼働に必要なリソースを動的に設定し、マネージドサービスを利用する事でシステム構築をする運用方法。
参考
サーバーを必要としないという意味でなく、サーバーを運用・準備する必要がないというところがポイント。
目次
- 1. Lambdaとは
- 2. LambdaでサーバーレスAPIを作る
- 3. 終わりに
1. Lambdaとは
Lambdaとは
Lambdaを使用することで、アプリケーションやバックエンドサービスの管理を不要にします。コードさえアップロードすれば、高可用性を実現しながらコードを実行およびスケーリングするために必要なことは、すべて Lambda により行われます。コードは、他の AWS サービスから自動的にトリガーするよう設定することも、ウェブやモバイルアプリケーションから直接呼び出すよう設定することもできます。
(参考:AWS Lambda)
簡単に言うとラムダは、関数をアップロードするだけで自動的にサーバーを管理し、関数のトリガーまで設定できる機能を提供するサービスです。
Lambdaの仕組み
Lambdaは、以下のような流れで使用できます。
①Lambda関数を作成する。
②関数が発火するきっかけとなるエンドポイントを作成する。
③関数はエンドポイントにアクションがあったときのみに発火する。

2. LambdaでサーバーレスAPIを作る
次はLambdaでサーバーレスAPIを作る流れを確認します。
サーバーレスAPIのユースケースの流れはこのような感じです。

ユーザーがインターネット経由でAPIにアクセスすると、Lambda関数が実行され、結果が返されると言う流れです。
今回は画像とともにサーバーレスAPIの作り方の確認だけします。

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"}}