Lambda
AWS のサーバーレスコンピューティングサービスで、コードをイベント駆動で実行する
AWSサーバーレス
Lambda とは
AWS Lambda は、サーバーの管理なしにコードをイベント駆動で実行するサーバーレスコンピューティングサービスである。API リクエスト、S3 イベント、DynamoDB Streams、スケジュールなどのトリガーで関数が起動し、実行時間に応じて課金される。
特徴
Lambda は OS、パッチ、スケーリングを AWS が管理するため、サーバー管理が不要だ。API リクエスト、S3 イベント、DynamoDB Streams などのトリガーでイベント駆動的に起動し、同時実行数に応じて自動スケールする。課金はリクエスト数と実行時間 (ミリ秒単位) の従量制で、最大実行時間は 15 分。
SAM での定義
SAM での定義の例を示す。
GetUser:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs22.x
MemorySize: 256
Timeout: 30
Events:
Api:
Type: HttpApi
Properties:
Path: /users/{id}
Method: GET
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref UsersTable
Environment:
Variables:
TABLE_NAME: !Ref UsersTable
Lambda 関数の実装
Lambda 関数の実装のコード例を示す。
import { APIGatewayProxyEventV2, APIGatewayProxyResultV2 } from 'aws-lambda';
export const handler = async (event: APIGatewayProxyEventV2): Promise<APIGatewayProxyResultV2> => {
const id = event.pathParameters?.id;
const user = await db.get({ TableName: process.env.TABLE_NAME!, Key: { id } });
if (!user.Item) return { statusCode: 404, body: 'Not Found' };
return { statusCode: 200, body: JSON.stringify(user.Item) };
};
トリガー
トリガーを以下にまとめる。
| トリガー | 用途 |
|---|---|
| API Gateway | REST / HTTP API |
| S3 | ファイルアップロード時の処理 |
| DynamoDB Streams | テーブル変更の処理 |
| SQS | 非同期メッセージ処理 |
| EventBridge | スケジュール実行、イベントルーティング |
| CloudWatch Logs | ログのフィルタリング |
コールドスタート
コールドスタートを図で示す。
コールドスタート: 実行環境の初期化 (100ms〜数秒)
→ 初回リクエストのレイテンシが増加
対策:
- Provisioned Concurrency: 事前にウォームアップ
- SnapStart (Java): スナップショットから高速起動
- 軽量ランタイム: Node.js, Python (Go, Rust はさらに高速)
ECS との使い分け
ECS との使い分けを以下に整理する。
| 観点 | Lambda | ECS (Fargate) |
|---|---|---|
| 実行時間 | 最大 15 分 | 無制限 |
| スケーリング | ミリ秒 | 分 |
| コスト (低トラフィック) | 安い (従量課金) | 高い (常時稼働) |
| コスト (高トラフィック) | 高くなる場合あり | 安定 |
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
AWS SAM
AWS のサーバーレスアプリケーションを定義・デプロイするためのフレームワーク
API Gateway
API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス
Lambda Layer
Lambda 関数間で共有ライブラリやカスタムランタイムを再利用する仕組み
サーバーレス
サーバーの管理をクラウドプロバイダーに委ね、コードの実行に対してのみ課金されるコンピューティングモデル
EventBridge
AWS のサーバーレスイベントバスで、イベント駆動アーキテクチャの中核を担う
オートスケーリング
トラフィックや負荷に応じてコンピュートリソースを自動的に増減させる仕組み