AWSのlambdaとECS taskについて
参考サイト
AWS Batch, Lambda, ECS Task 比較:バッチやジョブにはどれを使う? - Timers Tech Blog
Lambda も Batch も ECS Task も、何かのジョブを単発/定期でサーバー無しで実行するための手段として似ている。これらの特徴やメリット/デメリットの比較してみる。
AWS lambda
コードだけアップロードして、実行トリガーを組めばその通りに動くFaas(Function as a Service)。簡単なスクレイピングシステムなどを運用したいときなどに使えそうである。管理を必要とせず、高可用性を担保できる。
メリットとして
- コードのアップロードが簡単
- 実行環境の設定もメモリ割り当てや同時実行数などを設定するだけで済む
- トリガーの種類が多く、S3に画像がアップロードされたなどをプッシュ通知するなどできる
- cronのような定期実行のできる
デメリットとして
- 実行時間は15分が上限。長期間のバッチ処理は不可能。
ECS Task
ECSはそもそもコンテナ化されたアプリケーションを簡単にデプロイ、管理、スケールするサービス。その中でタスクを単一実行することができる。サービススケジューラ (長期実行タスクおよびアプリケーション用に)、タスクを手動で実行する機能 (バッチジョブまたは単一実行タスク用)、および Amazon ECS でクラスターにタスクを配置する機能がある。
- ECS運用環境では環境整備済みなので、タスク実行は比較的簡単に設定&実行可能
- (AWS Batchと同じく) コンテナ定義および実行環境は柔軟に設定可能
- タスク数も自由に設定可能なので、大量のタスクを一斉に実行するといった事も容易に可能
結論としては・・・
ECSクラスタを運用している&依存関係のない単一のジョブ => ECS Task
1ユーザーごとに実行する、比較的小さなジョブ => Lambda