導入
「サーバーを立てずに動くコンピューティング」がLambdaです。しかし何でもLambdaで作ればいいわけではありません。SAAでは、EC2とLambdaの使い分けの判断基準が問われます。
説明
AWS Lambda は、コードをアップロードするだけでAWSが実行環境を管理してくれるサーバーレスなコンピューティングサービスです。イベント(S3へのアップロード、API Gatewayからのリクエスト、DynamoDBの変更など)をきっかけに関数が実行されるイベント駆動な設計が基本です。
flowchart LR
E1["S3にファイル追加"] --> L["Lambda関数"]
E2["API Gatewayリクエスト"] --> L
E3["DynamoDBの変更"] --> L
L --> O["処理結果を出力"]
Lambdaの主な制約と特徴は次の通りです。
- 実行時間の上限は15分。それを超える処理には向かない
- 呼び出しが増えると自動でスケールする(同時実行数の設定で上限を制御可能)
- 初回や久しぶりの呼び出しで初期化コストがかかる コールドスタート がある
- 課金はリクエスト数と実行時間に応じた従量課金で、待機コストはゼロ
| 観点 | EC2向き | Lambda向き |
|---|---|---|
| 実行時間 | 長時間・常駐 | 短時間(〜15分) |
| 負荷パターン | 一定〜緩やかな変動 | 断続的・イベント駆動 |
| 運用 | OS/ミドルウェアの管理が必要 | サーバー管理不要 |
| コスト | 稼働時間課金(アイドルでも課金) | 実行分のみ課金 |
具体例
似た2つの処理で、Lambdaが「向く/向かない」がくっきり分かれます。
- サムネイル生成 → Lambda向き … ユーザーが画像をS3にアップした瞬間、そのイベントでLambdaが起動し、数百ミリ秒で縮小版を作って終了。断続的・短時間・イベント駆動という3拍子が揃い、待機コストもゼロ。まさにLambdaの独壇場。
- 長編動画の高画質レンダリング → Lambda不向き … 1本の処理に30分かかる。Lambdaの実行時間上限は15分なので、そもそも完走できない。これはEC2(またはコンテナ、AWS Batch)で処理すべき。
判断軸をまとめると:「サーバー管理を最小化」「イベント駆動」「短時間(〜15分)」「使った分だけ課金」が要件ならLambda。「長時間の常駐」「特殊なOS/ミドルウェア依存」ならEC2。SAAでは、この実行時間15分の壁が「Lambdaを選んではいけない」引っ掛けとして頻出です。
読んでみよう
「サーバー管理を最小化したい」「イベントをトリガーに短時間の処理をしたい」「使った分だけ払いたい」とあればLambda、「長時間の常駐処理」「特殊なOS/ミドルウェア依存」とあればEC2、という判断基準を持っておきましょう。