# 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

# 運作流程

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

# 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
更新於