AWS - Batch
Batch
AWS Batch 是一個全託管的 批次運算服務 (Fully Managed Batch Computing Service),
能讓你在 AWS 上自動配置 EC2 / Fargate 資源,
以高效率、低成本執行 大量非即時 (non-interactive) 的批次任務。
批次任務
批次任務(Batch Job)是指:不需要即時反應、
可以在背景中大量執行的工作,例如
| 常見例子 | 說明 |
|---|
| 🧮 大量資料分析 | 每天處理數百 GB 資料 |
| 🧬 基因運算 / 模擬 | HPC(High Performance Computing) |
| 🖼️ 影像或影片轉檔 | 轉換上千個檔案格式 |
| 📊 報表生成 | 每晚自動生成分析報告 |
| 🤖 機器學習訓練 | 批量訓練模型或進行推論 |
架構核心組件
| 元件 | 說明 |
|---|
| Job | 一次要執行的任務(可以是腳本、程式、容器) |
| Job Definition | 定義 Job 要怎麼執行(映像檔、vCPU、記憶體、環境變數等) |
| Job Queue | 等待被執行的任務佇列 |
| Compute Environment | 提供實際運算資源(EC2 / Fargate) |
| Scheduler | AWS Batch 的核心,負責排程、分配資源與執行 Job |
運作流程
- 使用者提交一個 Job → 放進 Job Queue
- Scheduler 判斷資源需求
- 自動啟動 / 選擇 Compute Environment(EC2 或 Fargate)
- Job 被執行(可平行多個)
- 執行完畢後自動釋放資源
Compute Environment 類型
| 類型 | 說明 | 適用情境 |
|---|
| Managed | AWS 自動幫你配置與調整 EC2 / Fargate | 一般使用者 |
| Unmanaged | 你手動管理 EC2 / Spot 資源 | 高度客製化需求 |
| Fargate Mode | 完全無伺服器,按秒計費 | 輕量或短任務 |
| EC2 + Spot | 自動使用低價 Spot Instances | 成本最佳化任務 |
任務平行化與相依性
- 平行執行 (Array Jobs)
- 相依任務 (Job Dependencies)
- 設定任務執行順序,例如 Job A → Job B → Job C