AWS Lambdaは、サーバーを意識せずにコードを実行できるAWSのサーバーレスサービスです。リクエストやイベントに応じて自動でスケールし、実行時間に対してのみ課金されます。本記事では、Lambdaの基本的な仕組みから代表的なユースケース、利用時の注意点までをわかりやすく整理します。
AWS Lambdaとは
AWS Lambdaは、関数(コード)をアップロードしておき、イベント発生時にAWS側が自動で実行してくれるサービスです。サーバーの構築・運用・パッチ適用が一切不要で、トラフィックの増減にも自動対応します。「コードを書いたら、あとはAWS任せ」という発想を実現する代表的なサービスです。
仕組みの基本
- イベント駆動:APIリクエスト、ファイルアップロード、DB更新、スケジュールなど、何らかの「イベント」をトリガーに実行
- ステートレス:関数ごとに独立した実行環境。状態は外部(DynamoDB、S3など)に保存する
- 自動スケール:同時実行数はAWS側で自動調整。突発的な負荷にも追従
- 従量課金:実行回数 × 実行時間 × メモリで課金。アイドル時間は無料
対応ランタイム
Node.js、Python、Java、Go、.NET、Rubyなど主要言語の公式ランタイムが提供されています。コンテナイメージ(最大10GB)でデプロイすることも可能なため、対応ランタイムにない言語でも実行できます。
シンプルな関数の例(Node.js)
// index.mjs
export const handler = async (event) => {
const name = event.queryStringParameters?.name ?? "world";
return {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}!` }),
};
};
これをLambdaにアップロードし、API Gatewayと統合するだけで、URLでアクセスできるAPIが完成します。
代表的なユースケース
1. REST/HTTP APIのバックエンド
API Gateway / Application Load Balancer / Function URLs と組み合わせて、サーバーレスなAPIを構築。インフラの常時稼働コストがかからず、トラフィックがゼロの間は無料です。
2. ファイルアップロード時の自動処理
S3に画像がアップロードされたタイミングでLambdaを起動し、サムネイル生成・メタデータ抽出・ウイルススキャンなどを自動実行。
3. 定期バッチ・スケジュール処理
EventBridge Scheduler / Schedules を組み合わせて、cronのような定期実行を実現。サーバーを24時間立ち上げておく必要がありません。
4. ストリーミングデータ処理
Kinesis / DynamoDB Streams / SQSと連携し、リアルタイムにメッセージを処理。スケールはAWSが面倒を見てくれます。
5. CloudFrontと組み合わせたエッジ処理(Lambda@Edge)
世界中のエッジロケーションでLambdaを実行できる「Lambda@Edge」を使えば、リクエストヘッダー書き換えやA/Bテストなどを低遅延で処理できます。
メリットとデメリット
メリット
- サーバー管理が不要・OSパッチ等の運用負担ゼロ
- 自動スケール・高可用
- 従量課金で、低トラフィック時のコストが極小
デメリット・注意点
- コールドスタート:しばらく実行されていないと初回呼び出しが遅くなる。Provisioned ConcurrencyやSnapStartで緩和可能
- 最大実行時間15分:長時間バッチには向かない(Fargate等の併用を検討)
- ステートレス前提:セッションやキャッシュは外部ストレージへ
- 大量呼び出し時のコスト試算:常時高トラフィックなAPIではコンテナ(ECS/EKS)の方が安いケースもある
まとめ
AWS Lambdaは、サーバーレス時代の「コンピューティングの基本部品」です。イベント駆動・自動スケール・従量課金という3点を理解できれば、設計の引き出しが一気に広がります。まずはAPI GatewayやS3トリガーの小さな関数を1本作って、サーバーレスの体験を味わってみてください。