本文へスキップ
BecomeCoder

AWSコース · 第3章 コンピューティング · レッスン16

サーバーレス ― Lambda

導入

EC2は便利ですが、「OSのアップデート」「セキュリティパッチ」「使っていない時間の課金」など、サーバーを持つこと自体の手間とコストが発生します。Lambdaは、その「サーバーを持つこと」自体をなくしてしまうサービスです。

説明

AWS Lambdaは、サーバーの管理を一切せずにコード(関数)を実行できる、代表的なサーバーレスコンピューティングサービスです。特徴は次の通りです。

  • サーバー管理不要 … OSやミドルウェアの管理はAWSが行う。利用者はコードだけを用意する。
  • イベント駆動 … 「S3にファイルがアップロードされた」「APIにリクエストが来た」「決まった時刻になった」といったイベントをきっかけに実行される。
  • 従量課金 … 実行された回数と実行時間(ミリ秒単位)に対してのみ課金される。呼び出されていない間は料金がかからない。
  • 自動スケーリング … リクエストが増えれば、Lambda自体が並行実行数を自動的に増やして対応する。
sequenceDiagram
  participant S3 as S3(画像アップロード)
  participant Lambda as Lambda関数
  S3->>Lambda: アップロードイベント発生
  Lambda->>Lambda: 画像をリサイズ
  Lambda-->>S3: サムネイルを保存

EC2との違いを整理すると、EC2は「サーバーを借りて常時起動しておく」のに対し、Lambdaは「必要なときだけ処理が動き、終われば消える」という違いになります。常時大量のリクエストをさばき続けるならEC2(や後述のコンテナ)が有利な場合もありますが、「特定のイベントに反応して短時間の処理をする」用途(画像処理の自動化、APIの裏側の処理など)ではLambdaが非常に相性が良く、コストも抑えやすくなります。

具体例

写真投稿アプリで「ユーザーが写真を上げたら、自動でサムネイル(縮小版)を作る」機能を考えます。

EC2で作ると … サムネ生成用のサーバーを1台、24時間起動しっぱなしにする必要があります。投稿が1日数枚しかない深夜でも、電源は入りっぱなしで料金が発生し、OSのパッチ当ても自分の仕事です。

Lambdaで作ると … こうなります。

  1. ユーザーが写真をS3にアップロードする
  2. その「アップロードされた」というイベントがLambda関数を自動起動する
  3. 関数が写真を縮小してサムネイルをS3に保存し、数百ミリ秒で終了して消える

課金されるのは関数が動いた数百ミリ秒 × 回数分だけ。投稿がない時間は1円もかかりません。サーバーの管理も不要。「特定のイベントに反応して短時間動く」処理は、Lambdaの独壇場です。

読んでみよう

Lambdaは「サーバー管理不要・イベント駆動・実行した分だけ課金」の3点をセットで覚えましょう。EC2=常時起動、Lambda=必要なときだけ、という対比が試験でもよく問われます。

次のレッスンへ →