AWS Lambdaは、サーバーを管理することなくコードを実行できるサーバーレスコンピューティングサービスです。本記事では、AWS Lambdaの基本、サーバーレスアーキテクチャの概念、実装方法、ユースケースについて解説します。
1. AWS Lambdaとは?
AWS Lambdaは、イベントに応じてコードを実行し、自動的にスケールするマネージドサービスです。
Lambdaの特徴
サーバーレス運用(インフラ管理不要)
イベント駆動型の実行(S3、DynamoDB、API Gatewayなどと連携)
自動スケーリング(リクエスト数に応じてインスタンス数を調整)
従量課金制(リクエスト数と実行時間に基づく課金)
マルチランタイム対応(Node.js, Python, Java, Go, etc.)
Lambdaの主なユースケース
- APIのバックエンド処理(AWS API Gatewayと組み合わせ)
- データ処理(S3にアップロードされたデータの変換)
- イベントドリブンアーキテクチャ(DynamoDBの変更検知)
- タスクの自動化(定期実行のバッチ処理)
2. サーバーレスアーキテクチャとは?
サーバーレスアーキテクチャは、インフラ管理をAWSなどのクラウドプロバイダーに委ね、イベント駆動でアプリケーションを構築する手法です。
サーバーレスの主な構成要素
サービス | 役割 |
---|---|
AWS Lambda | イベント駆動のコード実行 |
Amazon API Gateway | APIのエンドポイント管理 |
Amazon DynamoDB | スケーラブルなNoSQLデータベース |
Amazon S3 | ストレージサービス(静的ファイル配信) |
Amazon EventBridge | イベントルーティングとワークフロー管理 |
メリットとデメリット
インフラ管理不要 → サーバーのセットアップやメンテナンスが不要
コスト効率が良い → 使った分だけ課金
スケーラブル → トラフィックに応じて自動で拡張
コールドスタートの影響 → 初回実行時に遅延が発生する可能性
実行時間制限 → Lambdaは最大15分までの処理制限あり
3. AWS Lambdaの実装
Lambda関数の作成(AWSマネジメントコンソール)
- AWS Lambdaコンソール で「関数の作成」をクリック
- 「一から作成」を選択し、ランタイム を選択(例:Python 3.9)
- 実行ロール を選択(デフォルトまたはIAMポリシーを設定)
- 「作成」をクリックし、コードを編集
- 「デプロイ」後、「テスト」を実行して動作確認
サンプルコード(Python)
import json
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello from AWS Lambda!')
}
AWS CLIでLambdaを作成
aws lambda create-function \\
--function-name MyLambdaFunction \\
--runtime python3.9 \\
--role arn:aws:iam::123456789012:role/execution_role \\
--handler lambda_function.lambda_handler \\
--zip-file fileb://function.zip
4. AWS Lambdaのトリガー設定
Lambda関数は、さまざまなAWSサービスからトリガーできます。
代表的なトリガー
サービス | トリガーの例 |
---|---|
API Gateway | HTTPリクエストの処理 |
S3 | ファイルアップロード時の処理 |
DynamoDB Streams | データ変更の検知 |
EventBridge | スケジュール実行 |
S3のイベントでLambdaを実行
- S3バケットの「プロパティ」から「イベント通知」を追加
- イベントタイプ を「PUT」に設定(アップロード時に実行)
- 送信先 を「AWS Lambda」にし、関数を指定
5. Lambdaのパフォーマンス最適化
Lambdaを効果的に活用するための最適化方法を紹介します。
コールドスタートの対策
- プロビジョンドキャパシティを有効化(常時ウォームアップ状態)
- 軽量なランタイムを選択(Node.jsやPython)
- 環境変数の利用(頻繁に変更する値は関数内にハードコードしない)
メモリとタイムアウトの調整
- メモリを増やすとCPUも比例して増加
- 短時間で処理を終えるように最適化
aws lambda update-function-configuration \\
--function-name MyLambdaFunction \\
--memory-size 512 \\
--timeout 10
ログ管理(Amazon CloudWatch Logs)
Lambdaの実行ログはCloudWatchに記録されます。
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info("Lambda関数が実行されました")
デッドレターキュー(DLQ)の設定
処理失敗時にメッセージを保存するために SQS または SNS を活用
aws lambda update-function-configuration \\
--function-name MyLambdaFunction \\
--dead-letter-config TargetArn=arn:aws:sqs:us-east-1:123456789012:MyQueue
6. まとめ
AWS Lambdaとサーバーレスアーキテクチャを活用すると、インフラ管理を最小限に抑えつつ、スケーラブルなアプリケーションを構築できます。
AWS Lambda はイベント駆動型でスケーラブルな関数実行環境
API Gateway、DynamoDB、S3と組み合わせることで柔軟なシステム構築が可能
適切なメモリ、実行時間、キャッシュを設定しパフォーマンスを最適化
次のステップでは、「API Gatewayを使ったサーバーレスAPIの構築」について詳しく解説していきます!