Contents
AWS Lambda料金の基本構造
AWS Lambdaの課金モデルは、リクエスト回数(Invocation)、実行時間(Duration)、メモリ容量(Memory)の3つの要素から成り立っています。それぞれが独立して算出され、最終的な請求額に影響を与える仕組みを理解することで、コストの最適化につながります。特にエンジニアやIT管理者は、ワークロードに応じてどの要素が費用のかなりを占めるか把握する必要があります。
Lambda課金の3つの単位について
AWS Lambdaでは以下の3つの単位で料金が発生します:
| 項目 | 定義 | 料金計算に与える影響 |
|---|---|---|
| Invocation | 関数を呼び出すたびに発生する費用 | 実行回数×0.2円(米国東部リージョン例) |
| Duration | 実行時間(100ms単位で切り上げ) | 実行時間×メモリ容量×0.384円/GB・秒(米国東部) |
| Memory | 関数に割り当てたメモリサイズ(MB単位) | メモリ容量が大きいほどDurationのコストが増加 |
注意点:Durationは100ms単位で切り上げられ、メモリ容量によっても変動します。たとえば350msの実行時間は400msとして計算されます。
Invocation・Duration・Memoryの関係性
これらの要素は独立して発生するため、トータルコスト=Invocationコスト+Durationコスト+Memoryコストという式で算出されます。ただし、MemoryコストはDurationに含まれるため、ダブルカウントではありません(後述)。例えば、100回のInvocationと平均500msの実行時間(256MBメモリ)の場合、以下のようになります:
- Invocationコスト:100 × 0.2円 = 20円
- Durationコスト:(500ms ÷ 100ms) × 256MB × 0.384円 = 48.6円
このように、InvocationとDurationの両方が高額になるケースが多いため、それぞれを個別に最適化する必要があります。
ダブルカウントの仕組みとその影響
LambdaではMemoryコストがDuration計算に含まれる点に注目が必要です。これは「ダブルカウント」ではなく、「1つの要素で複数のコスト要因が反映される」という特徴です。
DurationとMemoryの併せて発生するコスト
実行時間が短くても、メモリ容量が高い場合、Durationのコストが増加します。以下に具体的な計算例を示します:
ケース:100msの実行時間(512MBメモリ)で関数を呼び出すと、
- Durationコスト:(100ms ÷ 100ms) × 512MB × 0.384円 = 196.6円
一方、同じ実行時間を128MBメモリで実行すると、196.6円 ÷ 4 ≈ 49.2円とコストは4分の1に抑えられます。このように、Memory設定がDurationの計算に直接影響します。
実際の課金例で見る計算方法
以下にAWS公式資料をもとにした計算式を示します:
|
1 2 |
総コスト = (Invocation数 × 0.2円) + (実行時間(100ms単位)× メモリ容量(MB)× 0.384円 ÷ 1,000) |
÷1,000の由来:1秒=1,000msであるため、実行時間を秒単位に変換する処理です。
リージョンごとの価格差と考慮点
AWS Lambdaの料金はリージョンによって変動するため、運用コストに大きな影響を与えます。以下の表に2023年現在の主なリージョンのMemoryコストを比較します(1秒間実行の場合):
| リージョン | リージョンコード | Memory 1GBあたりのコスト(円/秒) | 補足 |
|---|---|---|---|
| 米国東部(US East) | us-east-1 | 0.384 | 最も安価なリージョン |
| アジア太平洋(AP-Northeast1) | ap-northeast-1 | 0.522 | インフラの拡張により上昇 |
| ヨーロッパ(EU-West1) | eu-west-1 | 0.478 | 中央値に近い価格 |
参考:AWS Lambda料金ページ(英語版)でリージョンごとの詳細情報を確認可能
使用量ベースの請求書の読み方
AWSマネジメントコンソールでは、Lambdaの利用状況を明確に確認可能です。請求書の項目ごとに解説します。
AWSマネジメントコンソールでの確認手順
- AWS Management Consoleを開き、「Bill & Cost」を選択
- フィルタリングで「Lambda」と検索し、利用明細を表示
- 「Usage Type(使用量タイプ)」から「Invocations」「Duration」「Memory」に分類
請求明細の項目ごとの解説
以下のように請求書には複数の項目が記載されます:
- Invocations:関数呼び出し回数(0.2円/件)
- Duration:実行時間(100ms単位で計算)
- Memory:メモリコスト(Durationに含まれるため、個別表示はなし)
注意点:MemoryコストはDuration計算に含まれるため、明確に分離されていません。コスト分析には「Cost Explorer」の活用が推奨されます。
クラウドウォッチによるコストモニタリング
Lambdaのコストを可視化し、異常値を検知するためにはCloudWatchやCost Explorerの活用が有効です。
Cost Explorerの活用法
- AWS Management Consoleで「Cost Explorer」を開く
- 期間を選択し、「Lambda」とフィルタリング
- グラフから「Invocations」「Duration」ごとの傾向を確認
例:月次のコストをグラフ化して、急激な増加がないかを監視
アラーム設定でコスト制御
CloudWatchではアラームを作成し、異常値の検知を自動化できます。手順は以下の通りです:
- CloudWatchにアクセスし、「Alarms(アラーム)」を選択
- 「Create Alarm(アラームの作成)」で「Lambda関数のCostメトリクス」を選択
- しきい値を設定し、通知先を指定
例:月間コストが5,000円を超えた場合にメールアラームを発生させる
最適な利用パターンの見極め方
Lambdaの料金構造を理解した上で、自社のワークロードに最適な設定を探ることが重要です。
自身のワークロードに合わせた最適設定
- Memory値の見直し:メモリが大きいほどDurationコストが増加するため、最小限のサイズで運用することを検討
- Invocation頻度の分析:高頻度な呼び出しは課金額に影響を与えるため、ロードバランサーやキャッシュの導入を検討
スケーリングポリシーの調整
Lambdaでは自動スケーリングが可能ですが、以下のように最適化できます:
- 最小と最大並列実行数を設定し、過剰なリソース使用を防ぐ
- プロビジョニングされたコンテナ(Provisioned Concurrency)を活用し、ピーク時のレイテンシー削減に注力
CTA:AWSマネジメントコンソールで実際に請求書を確認し、自身の利用パターンに合った最適な設定を探してみましょう。