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)
SchedulerAWS Batch 的核心,負責排程、分配資源與執行 Job

運作流程

  1. 使用者提交一個 Job → 放進 Job Queue
  2. Scheduler 判斷資源需求
  3. 自動啟動 / 選擇 Compute Environment(EC2 或 Fargate)
  4. Job 被執行(可平行多個)
  5. 執行完畢後自動釋放資源

Compute Environment 類型

類型說明適用情境
ManagedAWS 自動幫你配置與調整 EC2 / Fargate一般使用者
Unmanaged你手動管理 EC2 / Spot 資源高度客製化需求
Fargate Mode完全無伺服器,按秒計費輕量或短任務
EC2 + Spot自動使用低價 Spot Instances成本最佳化任務

任務平行化與相依性

  • 平行執行 (Array Jobs)
    • 一次提交多個子任務,如處理一批檔案。
  • 相依任務 (Job Dependencies)
    • 設定任務執行順序,例如 Job A → Job B → Job C
更新於