omuronの備忘録

個人的な備忘録

「AWSの基礎を学ぼう 第五十六回 AWS Batch」 #awsbasics 受講メモ

awsbasics.connpass.com

「Batch といえばバッチ処理でしょう」と勘違いしていた AWS Batch です。

セッション

AWS Batch おさらい

講師:アマゾン ウェブ サービス ジャパン、シニアエバンジェリスト 亀田氏

バッチコンピューティングとは

AWS Batch

  • コンテナイメージを用意すればスケーラブル/大規模バッチ処理可能
    • バッチ処理環境をコンテナ化できるのであればオススメ
    • 画像解析とか重くて大量の処理向け
      • 軽い処理はわざわざ使わなくていい
  • アーキテクチャ
    • ジョブ定義からジョブ作成
      • ジョブ作成時に定義を書換可能(ECS は書き換えできないけど Batch は可能)
    • ECR/Docker Hub/Nvidia GPU Cloud などからコンテナイメージ取得
    • ECS で処理
      • Fargate, Fargate Spot, EC2 オンデマンド, EC2 スポット
    • S3 や EFS, FSx for Lustre に処理結果を保存
  • ジョブ投入方法
    • Lambda (S3イベント経由とか)
    • Step Functions
    • CloudWatch Events
    • などなど...
  • ジョブ種類
    • 単一ジョブ
      • 1回のジョブ投入で1ジョブを作成
      • 大規模向けなのでこのケースはテストとかだけで使う
    • 配列ジョブ
      • 1回のジョブ投入で複数の子ジョブを作成
    • マルチノード並列ジョブ
      • 1回のジョブ投入で複数の子ジョブを作成
      • 複数コンテナ間で通信処理
  • ジョブ依存関係
    • 各ジョブに依存関係で前後関係を設定可能
      • ジョブ結果でフロー制御をしたければ Step Functions も利用する

所感

re:Invent 参加している時に「AWS Batch」が発表されて、セッションを受講したところ「思ってたのと違うな...」となった原因は、夜間バッチとかをイメージしていたためでした。
業務上、大規模計算とかしたいケースが思い浮かばないので、使うことはしばらくなさそうかな。 Fargate とか使っているのであれば、比較的容易に利用可能そうですね。