はじめに
AWS Lambdaは、サーバーを管理することなくコードを実行できる便利なサービスです。
しかし、Lambdaにはさまざまな**制限(クォータ)**があります。
例えば、
- 「何GBまでのファイルを処理できる?」
- 「実行時間の上限は?」
- 「メモリはどこまで設定できる?」
といった疑問を持つ方も多いでしょう。
この記事では、AWS Lambdaを利用する上で知っておきたい主な制限について解説します。
Lambdaの主な制限一覧
| 項目 | 制限 |
|---|---|
| 最大実行時間 | 15分(900秒) |
| メモリ | 128MB〜10,240MB(10GB) |
一時ストレージ(/tmp) |
512MB〜10GB(設定可能) |
| デプロイパッケージ(ZIP) | 50MB(圧縮時) |
| デプロイパッケージ(展開後) | 250MB |
| コンテナイメージ | 最大10GB |
| 同期レスポンス | 最大6MB |
| ストリーミングレスポンス | 最大200MB |
| 非同期イベント | 最大1MB |
| 環境変数 | 4KB |
| レイヤー数 | 最大5個 |
| 同時実行数(デフォルト) | 1,000(リージョンごと) |
1. 最大実行時間は15分
Lambdaの実行時間は
最大900秒(15分)
です。
処理開始
│
▼
最大15分
│
▼
タイムアウト
15分を超える処理は途中で強制終了されます。
長時間処理を行いたい場合
以下のサービスを検討しましょう。
- AWS Step Functions
- Amazon ECS
- AWS Batch
- Amazon EC2
2. メモリは最大10GB
Lambdaでは
128MB〜10GB
まで設定できます。
メモリを増やすと、
- CPU性能
- ネットワーク性能
も向上します。
128MB
│
▼
1GB
│
▼
5GB
│
▼
10GB
メモリが多いほど高速に処理できますが、その分料金も高くなります。
3. 一時ファイルは最大10GBまで
Lambdaでは
/tmp
ディレクトリに一時ファイルを保存できます。
設定可能な容量は
512MB〜10GB
です。
例えば、
- CSV加工
- ZIP解凍
- PDF生成
- 動画変換
などで利用できます。
4. 処理できるファイルサイズは?
「Lambdaで何GBまでのファイルを処理できますか?」
という質問をよく見かけますが、
実は「処理対象」と「受け渡し方法」で変わります。
S3から読み込む場合
S3からファイルを取得する場合、
Lambda自体にファイルサイズの制限はありません。
つまり、
- 100MB
- 1GB
- 5GB
といったファイルでも取得できます。
ただし、
- メモリ
-
/tmp容量 - 15分以内に処理が終わること
が条件になります。
例
| ファイルサイズ | 処理可否 |
|---|---|
| 10MB | 〇 |
| 100MB | 〇 |
| 500MB | 〇(メモリ次第) |
| 5GB | △(ストリーミング処理推奨) |
| 20GB | ×(Lambdaには不向き) |
5. API Gateway経由では6MBまで
API GatewayからLambdaへ同期実行する場合、
レスポンスサイズは
最大6MB
です。
Client
│
API Gateway
│
Lambda
画像やPDFを返す場合は、
S3へ保存してURLを返す設計が一般的です。
6. デプロイパッケージの制限
ZIPでデプロイする場合は、
| 項目 | 制限 |
|---|---|
| ZIPファイル | 50MB |
| 展開後 | 250MB |
ライブラリが多い場合は
Lambdaコンテナイメージ
を利用すると、
最大10GBまで利用できます。
7. 環境変数は4KBまで
環境変数の合計サイズは
4KB
です。
そのため、
以下のような情報は保存しないようにしましょう。
- 大量のJSON
- SQL
- 証明書
代わりに、
- AWS Secrets Manager
- AWS Systems Manager Parameter Store
の利用がおすすめです。
8. 同時実行数にも制限がある
Lambdaはデフォルトで
1,000同時実行
まで利用できます。
アクセスが急増すると、
Throttling
が発生することがあります。
必要に応じて
AWSサポートへ申請することで増加できます。
Lambdaが苦手な処理
Lambdaは万能ではありません。
次のような処理には向いていません。
- 30分以上かかる処理
- 数十GB以上のファイル処理
- 常時起動が必要なサービス
- GPUを利用する処理
- 大規模な動画エンコード
これらは、
- Amazon ECS
- AWS Batch
- Amazon EC2
などの利用を検討しましょう。
Lambdaに向いている処理
逆にLambdaが得意なのは、
- APIの実装
- ファイルアップロード時の処理
- CSV加工
- ログ解析
- メール送信
- 定期実行(EventBridge)
- DynamoDB Streamsの処理
などです。
イベント駆動型のシステムと非常に相性が良いサービスです。
まとめ
Lambdaにはさまざまな制限がありますが、ほとんどのWebシステムでは十分な性能があります。
特に覚えておきたいポイントは次のとおりです。
| 項目 | 覚えておきたい値 |
|---|---|
| 実行時間 | 15分 |
| メモリ | 最大10GB |
/tmp |
最大10GB |
| ZIPデプロイ | 50MB(圧縮時) |
| 同期レスポンス | 6MB |
| 環境変数 | 4KB |
| 同時実行数 | 1,000(デフォルト) |
ファイルサイズに明確な上限があるわけではありませんが、メモリ・一時ストレージ・実行時間の3つが実質的な制約になります。
大容量ファイルを扱う場合は、ストリーミング処理やAmazon S3と組み合わせた設計を検討すると、Lambdaのメリットを活かしながら効率よく処理できます。