AWSの構成を見ていて、RDSの次に「Lambdaって何じゃい」となりました。
結論、AWS Lambdaは**「これが起きたら、この処理をして」をAWSにお願いするサービス**です。
たとえば「画像がアップロードされたら、小さいサムネイル画像も作る」。この「画像がアップロードされたら」が合図で、「小さい画像を作る」がLambdaの仕事です。
この記事では、AWSを触り始めたばかりの人向けに、AWS Lambdaとは何かをサクッと整理します。
AWS Lambdaは「合図が来たら仕事をする係」
画像投稿サービスを例にすると、Lambdaは次の順番で動きます。
1. ユーザーが画像をアップロードする
2. S3というファイル置き場に画像が保存される
3. Lambdaへ「画像が来たよ」と合図が届く
4. Lambdaが画像を小さくする
5. 処理が終わる
人でたとえるなら、Lambdaは呼び鈴が鳴ったときだけ出てきて、決められた仕事をして帰る人です。
この合図は画像のアップロードだけではありません。
- Webサイトからリクエストが来た
- 毎朝7時になった
- 処理待ちのデータが追加された
など、いろいろな出来事をきっかけにできます。
図のWebサイト側は、次の流れです。
ブラウザ
↓
API Gateway(リクエストを受ける玄関)
↓
Lambda(コードを実行する)
├→ RDS(データを保存する)
└→ CloudWatch Logs(実行記録を残す)
API Gatewayが玄関、Lambdaが中で仕事をする人です。Lambdaだけですべてを担当するのではなく、他のAWSサービスとつないで使います。
「サーバーレス」はサーバーがないわけではない
Lambdaはサーバーレスのサービスです。
自分は最初、「サーバーなしでどこでコードを動かすん?」となりました。実際にはAWS側のサーバーで動いています。
ただし、こちらでサーバーを用意したり、OSを更新したり、アクセス増加に合わせて台数を増やしたりする必要がありません。
つまりサーバーレスは、サーバーがないではなく、サーバーの管理をAWSに任せられるという意味でした。裏にはいます。そりゃそう。
家でたとえると「注文が来たときだけ動くキッチン」
以前のAWS RDSとは? DBを運用込みで借りるサービスと同じ家のたとえにすると、こうなります。
| サービス | 家でいうと |
|---|---|
| API Gateway | 玄関・受付 |
| Lambda | 注文が来たときだけ動くキッチン |
| RDS | データの保管庫 |
| CloudWatch Logs | 監視カメラの録画 |
Lambdaは処理をする場所であって、データを保存する場所ではありません。残したいデータはRDS、画像などのファイルはS3へ保存します。
最初に覚える言葉は3つだけ
| 用語 | 意味 |
|---|---|
| 関数 | Lambdaに登録する仕事のまとまり |
| トリガー | Lambdaを動かす合図 |
| イベント | 合図と一緒に渡される情報 |
画像の例なら、次のようになります。
トリガー:S3に画像が保存された
イベント:どの画像が保存されたか
関数 :その画像を小さくする処理
難しそうに見えますが、合図を受け取って、決められた仕事をするだけです。
動いたかどうかはCloudWatch Logsを見る
Lambdaを実行したあと、「本当に動いたのか」「エラーになっていないか」を確認する場所がCloudWatch Logsです。
START RequestId: 3f993f48-...
END RequestId: 3f993f48-...
REPORT RequestId: 3f993f48-... Duration: 3088.35 ms ...
最初は、STARTとENDが1組なら「1件の仕事が始まって終わった」と読めれば十分です。エラーが起きた場合もここに記録されます。
料金は基本的に、呼び出された回数とコードが動いた時間で決まります。ただし、API GatewayやRDSなど一緒に使うサービスの料金は別です。
まとめ
- AWS Lambdaは、イベントが来たときだけコードを実行するサービス
- サーバーの用意や管理はAWSに任せられる
- まずは「トリガー=合図」「イベント=渡される情報」「関数=仕事」の3つがわかればよい
- 実行結果はCloudWatch Logsで確認する
これから触る人は、AWSコンソールでLambdaを開き、既存の関数の「関数の概要」を眺めてみるのがおすすめです。どこから矢印が入り、どこへつながっているかを見るだけで、システムの地図になります。
まず見るだけで戻ってよし。
参考
- AWS Lambda とは — AWS ドキュメント
- Lambda の仕組み — AWS ドキュメント
- AWS Lambda の料金 — AWS
- 【図解】AWS Lambdaとは。中身はただのPython関数で、書いて貼れば5分で動く — Qiita … 実際に関数を作って動かしたい人向け
関連記事
- AWSデプロイ後に見る3画面メモ(CloudFormation / Lambda / CloudWatch) … Lambdaの実画面とログを確認する実践編
- AWS RDSとは? DBを運用込みで借りるサービス … Lambdaが処理したデータの保存先を整理した記事
- AWSのDB、コンソールで中身が見えるやつと見えないやつがありました … LambdaとRDSの接続で詰まった話
