はじめに
Pythonのバッチ処理を作成する機会が多いので、AWS上でPythonバッチを動かす際の選択肢と、それぞれの特徴・選び方について解説します。
1. AWSでPythonバッチを動かす主なサービス
AWSでPythonバッチを動かす際によく使われるサービスは以下の3つです。
- Lambda(サーバレス関数実行)
- Glue(サーバレスETL/バッチ処理)
- ECS Fargate(コンテナ実行)
2. 各サービスの特徴
Lambda
- Pythonバージョン
- 3.14対応(最新)
-
料金
- 圧倒的に安い
- CPU
- メモリに比例してCPU性能が向上
- メモリ
- デフォルト128MB
- 最大10GB
- 1MB単位で割り当て可能
- エフェメラルストレージ
- デフォルト512MB
- 最大10GB
- 1MB単位で割り当て可能
- 埋め込み型のVScodeエディタで編集可能
- ディレクトリも作成可能
- Lambdaレイヤーで任意のモジュールをインポート可能
- Python 3.13であれば公式のADS SDK for Pandasが利用可能
- 最新バージョンにもそのうち適用されると思われる
- 実行時間最大15分の制限あり、小規模バッチ向き
- デフォルトでタイムアウトが3秒なので注意
Glue Python Shell
- Pythonバージョン
- 3.9(2025年10月 EOL)
- EOLされたがバージョンアップされていない
- 3.9(2025年10月 EOL)
- CPU
- 1/16DPUと1DPUが選択可能
- メモリ
- 最大16GB
- エフェメラルストレージ
- 20GB
- Lambdaの制限を超える場合の選択肢
- EOLとなってしまったのでセキュリティ上使いづらい
- セキュリティ要件を満たさない場合今後の更新に期待するか他に移行するしか...
Glue(ETL)
- 最新はPython 3.11(2027年10月 EOL)
- CPU/メモリ
- 様々な種類を選択可能
- エフェメラルストレージ
- ローカルディスク(/tmp)は利用不可
- 分散処理前提のため、Worker数2以上でしか動作しない
- PySpark等の分散処理前提でスクリプトを書かなければ、1ワーカーは遊休リソースとなる
ECS Fargate
- 任意のPythonバージョン・ライブラリ利用可
- CPU/メモリ/エフェメラルストレージ
- 様々な種類を選択可能
- DockerFile作成が必要
- カスタマイズ性高いが構築はやや面倒
3. サービス比較表
| Lambda | Glue | ECS(Fargate) | |
|---|---|---|---|
| 実行時間上限 | 15分 | 無制限 | 無制限 |
| メモリ(最大) | 10GB | Pythonshell:16GB / Glue:128GB | 120GB |
| 起動時間 | 即時 | 30秒程度 | 数分 |
| コスト | 最小 | 中 | 小 |
| 定期実行方法 | EventBridge | Glueトリガー/Glueのスケジューラ | EventBridge |
| 構築/運用負荷 | 小 | 小 | 中 |
| ローカルディスク | 最大10GB | Pythonshell:20GB / Glue:使えない | 20GB~200GB |
4. サービス選定フローチャート
- これ以外にも以下に応じて選定してください
- コスト
- 管理のしやすさ
- 処理規模・要件
- 特にEOLが許容できるか
5. まとめ
AWS上でのPythonの実行環境の選択肢はLambda、Glue(Python Shell含む)、ECSの主に3つです。要件に合わせて選択しましょう。
- 軽量バッチ:Lambda
- 重い処理:Glue
- カスタマイズ重視:ECS Fargate
- まずはLambda→Glue→ECSの順で検討
