# 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