モード変更


    言語

AWS Batchの活用

2022/10/28

膨大な量のデータの時代に、バッチはアプリケーションと同じくらい、欠かせない処理です。
バッチを起動するためにはフレームワークを選びつつデプロイ先も思考する必要があります。
一般的と言えば Spring Batch, Kubernetes の Job や Cronjob、分散システムの場合 Hadoop、Apache Spark などの技術を使って Kubernetes 上デプロイの形です。
ただし、小規模のプロジェクトまたは単独のバッチだと上記の導入は困難です。
したがって以下の懸念点がありました:

  • 導入&運用コスト
  • モニタリングとログ記録
  • ジョブの優先度&リトライ設定

そのため今回はクラウドプロバイダーから提供しているサービスを目指して AWS のバッチサービスを紹介したいと思います。

概要

AWS Batch は AWS 上の各種リソースに、バッチ処理を簡単かつ、効率的に行うことができるサービスです。なお、先述した問題を解決できます。
以下は基本の特徴をリストアップしながらプレビューしましょう。

コスト最適化

  • フルマネージドサービスなので導入&運用コストゼロ
  • AWS Batch に対する追加料金は発生しません。AWS リソースの費用のみがかかります。

モニタリングとログ記録

  • メトリクスは AWS マネジメントコンソールに表示される
  • コンピューティング性能や、実行中、完了済みなどのジョブの状態も確認することができる
  • ログ AWS CloudWatch に書き込まれ、バッチ毎にログを確認できる

ジョブ実行、優先度&リトライ設定

  • 複数ジョブキューで優先度を設定できて、リソースの無駄をコントロールが可能
  • 条件によるリトライの仕組みがある。例: エラーコード=3 の場合リトライをする
  • ML に応じるマルチノード並列、GPU の実行が可能

主な機能を紹介しましたので、AWS の構成をみていきましょう。

構成

基本的に 3 つに分かれています:ジョブ定義 (Job Definition)、キュー (Job Queue)、コンピューティング環境 (Computing environment) 実行できるまでには、最低限、以下のフローのように定義しなければなりません。

  1. コンピューティング環境の準備
    • バッチジョブ実行に必要とする CPU、メモリのリソースです。
    • 「コンピューティング環境画面」で設定できます。
  2. ジョブキューの定義
    バッチジョブにコンピューティング環境と優先順位を付ける設定です
  3. ジョブ定義
    コマンド、コンテナ、パラメータなどの指定
  4. ジョブ実行
    ジョブ定義から実行できるジョブ設定が生成され、キューに入る このステップの入り口がいくつがあり、一般的にはイベントとしてトリガーしますが、Batch のコンソールで手動起動の形も可能です。

これで簡単のバッチを作成できますが、実際、自動化、通知などを求められるケースが多かったのです。その際にコンテナイメージ作成やトリガーの Eventbridge 設定必要となり、次に伝えます。

スタディケース

AWS Batch は AWS プラットフォームと統合されていることから、AWS を利用している場合構築が最適的です。 以下のように crontab で DynamoDB を書き込むバッチを起動して結果を担当者へ通知するシステムを構築してみました。 ①② バッチスクリプトを含むイメージは、開発者がソースコードを変更した時点で(Github Actions で)ビルドされる。
③ 開発者が AWS にログインし、EventBridge、Batch でジョブ定義、cron、通知などを設定する。
④⑤ cron で起動したバッチジョブには、スポットインスタンスも同時にプライベート subnet 中に作成される。
⑥⑦ バッチスクリプトが入ったコンテナ起動後、コマンドが実行される。DynamoDB のアクセスがプライベートで行われる。
⑧ ログは Cloudwatch に送信されるが、AWS Batch コンソールから参照することができる。
⑨ ジョブのイベント、ステータスを EventBridge で管理するため、実行エラーの際に SNS 経由で関係者を通告する。
このようにセキュリティ向上のプライベートシステムができました。ややこしく見えましたが、実際に AWS Batch をメインに作業しますので、Kubernetes より実装しやすいと思います。

最後に

個人的にはすごく使いやすく良いサービスなのに、プラットフォーム利用料金が 0 というのはありがたいです。 AWS を使うのであれば AWS Batch は最強の選択肢であり、開発者の負担を減らしてプログラミングに集中することができるのです。 ぜひ活用してみてください。

出典

Photo source:
https://aws.amazon.com/

awsbatchserverless

Author

HieuLuan Quan

HieuLuan Quan

バックエンドエンジニア

バックエンド、フロンエンド、アプリケーション開発経験であり、フールスタックエンジニアです

その他おすすめ記事

2026/07/07

FastAPI × Diffusers でローカル完結の「顔属性変換」学習アプリをつくる

生成 AI を「使う」だけでなく「アプリに組み込む」とどうなるのか。これを手を動かして理解したくて、人物写真をアップロードすると顔の属性(性別的な見た目)だけを別の性別に変換する学習用 Web アプリを個人で作りました。外部の画像生成 API には一切頼らず、推論まですべてローカルで完結させているのが特徴です。本記事では、その構成と実装上の判断、つまずいた点を技術寄りに整理して共有します。 なぜ「ローカル完結」にこだわったのか 顔写真は最もセンシティブな個人データのひとつです。学習目的とはいえ、自分や知人...

Ryuji Takano

Ryuji Takano

Machine Learning

2026/06/30

AIで生演奏のピッチ検出を試してみた

さて。このAI全盛期、我が社でも例に漏れずAIをうまく使っていこうという流れがきているため、AIを使った技術の検証をしてみようと思います。 どうせなら自分に身近なテーマを、ということで長らく趣味で習っているヴァイオリンのピッチ判定ができたら面白そうです。 調べてみたところいくつか使えそうなAIモデル(CREPE、Basic Pitch)があったため使えるか検証していきます。 また、比較用としてAIを使っていない従来の方式のaubioも試してみましょう。 はてさて、全てうまく動くでしょうか...。 環境構...

Mayumi Ishiyama

Mayumi Ishiyama

Machine Learning

サービス開発実績会社情報
採用情報インサイトお問い合わせ
© 2022 Monstarlab
情報セキュリティ基本方針個人情報の取り扱いについて個人情報保護方針