超簡単にサーバーレスを実現できるAWS Lambdaって?
外資系企業でソフトウェアエンジニアをしております、タロイモと言います。今日もよろしくお願いします。
今回はAWSの中でもサーバーレスを簡単に実現できるLambda(ラムダ)というサービスについてご紹介します。
サーバーレス
一定のサーバー容量に依存することなく、稼働に必要なリソースを動的に設定し、マネージドサービスを利用する事でシステム構築をする運用方法。
参考
サーバーを必要としないという意味でなく、サーバーを運用・準備する必要がないというところがポイント。
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"}}
APIにアクセスすることで、先ほどのLambda関数から値が返ってくることが分かります。
{"statusCode":200,"body":"\"Hello from Lambda!\"","event":{"key1":"value1"}}
3. 終わりに
今回は手軽にサーバーレスAPIを作ることができるAWS Rambdaをご紹介しました。
手軽にサーバーを立てアプリを作ることができるので、アプリの通知や監視をしたいときに便利ですね。
ご精読ありがとうございました。