MENU

AWS Batchとは何か?特徴や利用までの手順もあわせて解説

AWS Batchとは何か?

開発者や科学者、エンジニアなどが膨大な量のコンピューティングリソースにアクセスする方法で、一般的なものをBatchコンピューティングといいます。

 

AWS BatchはCPUやメモリに最適化されたコンピューティングリソースの中から必要なものにアクセスし、数十万件におよぶバッチコンピューティングジョブを実施します。

 

一連のバッチ管理機能が含まれているため、バッチコンピューティングソフトウェアやサーバークラスターをパソコンにインストールしなくていいという点が特徴です。

バッチ処理の定義付けとは何か?

バッチ処理の定義とは、パソコンにあらかじめ構成されている処理を自動的に行うことです。バッチ(Batch)は一束、ひとまとめという意味であり、起動時間は短いものの、処理時間が長いのが特徴です。

 

業務中にバッチ処理をすると他の作業が停止してしまう可能性があります。そのため、業務後にパソコンを起動して自動で処理しておくことが多いです。カレンダーから設定し、オートで作動するようにしておきます。可用性が高いため、様々な企業で使われているのが特徴です。

 

定期実行することで作業の効率化が図れる上に、精密情報の整理やエラー処理もできます。

 

AWS Batchを使わないと多重起動になってしまい、パソコンがフリーズするリスクがあります。タスク実行ロールで監視して、パソコンやネットワークに負担がかかりすぎないよう、作業時間を配分戦略して処理するのがおすすめです。

AWS Batchの特徴について6つ

フルマネージド型のサービスであるAWS Batchは、様々な規模のバッチコンピューティングワークロードを行うことができます。大量の暗号化されたユーザーデータ処理を必要最低限のパソコン稼働だけでこなすため、無駄が出ません。

 

こうしたこと以外にも、AWS Batchのリージョンサービスにはいくつかの特徴があります。ここからはAWS Batchの特徴について解説していきます。

1:コストの最適化ができる

同時に複数のジョブをこなせるはずのインスタンスが、1つの作業しか実行していないことはよくあります。ジョブ終了後からインスタンスが終了されるまでの待機時間が長く、コストがかかってしまうことも多いです。

 

AWS Batchはジョブの際に起動されるインスタンスを必要最低限にし、終了するまでの待機時間を短くします。コストを最適化するため、月間で数百円の電気料金を節約できる可能性があります。

2:AWSプラットフォームとの統合が可能

アプリケーションを開発する際には、どんな技術インフラストラクチャプラットフォームを選べばいいか分からない人が多いことでしょう。アプリは開発したら終わりではなく、管理や運営をする必要があるため、その時その時で用意するプラットフォームは違います。

 

2006年から100万人以上が利用しているAWSのプラットフォームは、大規模な運営ができる上にAWS Batchと統合できます。

 

出典:クラウドプラットフォームを選ぶ|AWS
参照:https://aws.amazon.com/jp/choosing-a-cloud-platform/

3:フルマネージド型のサービスになる

同時に様々な作業をこなさないといけないBatchコンピューティングでは、スケジューラによるバッチコンピューティングワークロードの管理が重要です。

 

AWS Batchはアンマネージドと違い、フルマネージド型で、作業に必要なソフトウエアを個別にインストールしなくて済みます。

 

結果を分析することと問題を解決することに集中できるため、コンピューティング環境を整えるための作業への負担を減らせます。

4:複数のジョブキューに優先度を設定し最適化ができる

特別な設定をしていない状態でインスタンスが起動しないでいると、ジョブはRUNNABLEというステータスのままになってしまいます。この状態が続くとコストが無駄になるため、複数のジョブキューに優先度を設定しておくことが望ましいです。

 

コンピューティング環境を設定するのにも使えることから、作業が効率的になります。

5:依存関係のジョブの実行ができる

実行したいジョブがある時は、ほとんどの場合、その前に成功しておかないといけない他のジョブがあります。このような依存関係のジョブをAWS Batchであれば最大20個記述可能です。

 

個別でジョブを指定して起動する必要がないため、オフィスにいない時に自動で複数のジョブを実行して終わらせておくことができます。

 

ジョブは成功するとpendingからrunnableへ移行し、そこからstarting、runningへと移行します。ジョブはIDで指定できますが、配列ジョブの場合はIDが必要ありません。

 

出典:ジョブの依存関係|AWS
参照:https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/job_dependencies.html

6:モニタリングを行いログ記録ができる

ジョブの実行ステータスは、AWSマネジメントコンソールに表示されます。コンピューティング性能と同じように実行中、保留中、および完了済みのジョブに関連するメトリクスを確認可能です。

 

このようなモニタリングのログ記録は、Amazon cloudwatch logsにもインターネット経由で書きこまれるためデータ保存ができます。事前にログ設定をし、ログ出力などを調節しておきましょう。

AWS Batchのユースケース3つ

アプリケーションの開発、運営、管理に必要なAWS Batchは、どのような業種で利用されているのか疑問に感じる人は多いことでしょう。ここからはAWS Batchの使用例について、3つの例を基に解説していきます。

1:ライフサイエンス

バイオ医薬品をはじめとする製品を製造している企業が科学的情報を利用するために、ハイパフォーマンスコンピューティング環境を用意します。

 

AWS Batchなら計算化学、臨床モデリング、分子動力学といった情報収集や、ゲノムシーケンシング試験の結果分析など総合的に利用可能です。

 

また、目的の薬剤に結合できそうな構造を特定するのに必要な情報を収集し、分析した上で今まで以上に効果的な薬品の開発や治療法の確立ができる可能性もあります。

2:デジタルメディア

エンターテイメント企業はデータの並列処理や高解像度ビデオコンテンツ向けのファイル、グラフィックなどのコンテンツを制作、送信する際に膨大な量のデータを使います。バッチコンピューティングリソースを使うことで、コンテンツ制作がスムーズになります。

 

コンテンツレンダリングワークロードを自動化することもできるため、作業プロセスで異なる作業の同時実行が可能です。

3:金融サービス

価格付け、市場位置、リスク管理などでハイパフォーマンスコンピューティングを使用していますが、AWS Batchを使うとスケーラビリティを最適化してコストを節約することができます。

 

ジョブのリソーシングやスケジューリングを自動化することで、意思決定までの時間を短縮し、機械学習でミスが少ない作業を実現します。非同期やハンズオンなど設定を駆使して、作業しましょう。

 

取引が終わった段階で行う1日分の大規模なデータ処理や、不正調査のための不正なパターンを検出するために必要な機密情報の分析を自動化します。

AWS Batchの利用料金形態4つ

AWS Batchには料金形態がいくつかあります。自社に合った料金形態を選ぶことで、無駄のない出費でAWS Batchを利用できるでしょう。追加料金はないので、EC2、インスタンス、AWS fargateなどのリソースにだけ料金が発生します。

 

ここからはAWS Batchの機能、用途ごとに発生する料金形態について解説していきます。

1:ジョブキュー

数十万件のバッチコンピューティングジョブを、簡単に効率よくこなせるようになるジョブキューは最大で50個使えます。追加料金がなく節約しながら使用できるのが特徴です。

 

すべてのユーザーが構成図の作成なしでジョブを追加できるため、利便性が高いこともメリットです。また、複数ジョブや複数コマンドを同時実行する場合も、無駄のない料金で作成できます。

 

出典:AWS Batch がジョブキューの制限を 50 に拡大|AWS
参照:https://aws.amazon.com/jp/about-aws/whats-new/2021/04/aws-batch-raises-job-queue-limit/

2:Cloudwatch Logs

Amazon CloudWatchには初期設定費用や基本料金もありません。その月ごとに使った分の料金を支払う従量課金制です。

 

ec2、s3、kinesisなどAWSシリーズは無料で使える項目もあります。例えば、基本モニタリングのメトリクス(5分間隔)、毎月最大50個のメトリクスに対応するダッシュボード3個、5GBデータのログなどです。

 

出典:無料利用枠|AWS
参照:https://aws.amazon.com/jp/cloudwatch/pricing/

3:Amazon ECR

Amazon elastic container registry(Amazon ECR)は、プライベートリポジトリに保存するデータとインターネットに転送するデータにだけ料金が発生します。

 

1年間で500GBのストレージを利用できるプライベートリポジトリ(ローカルリポジトリ)と、月間500GBを利用できるパブリックリポジトリがあり、これで足りない場合は、AWSアカウントを取得してECRを認証するとパブリックリポジトリから毎月5TB使えます。

 

出典:料金の詳細 (無料利用枠の上限以上のご利用)|AWS
参照:https://aws.amazon.com/jp/ecr/pricing/

4:Amazon ECS

Amazon elastic container service(Amazon ecs)は、フルマネージド型のコンテナオーケストレーションサービスです。

 

AWS fargateを使用して、ECSクラスタを実行できます。 サーバーのプロビジョンと管理がいらないので、アプリケーションごとに使うリソースに応じた料金を支払えます。

AWS Batchの利用までの手順4つ

AWS Batchをはじめる手順は難しく、時間がかかると考えている人が多いことでしょう。ここからは初めてAWS Batchを使う場合の手順、ワークフロー(workflow)の設定などについて具体的に解説していきます。

 

YouTubeやSNSなどのように簡単ではありませんが、入門マニュアルがあり、初心者でも設定できるようになっています。また様々な機能を使い分けられるので、作業内容によって設定方法を変更してみましょう。

1:使用前にセットアップをしておく

最新のAWSバッチ機能をサポートしているバージョンのAWS cliを使う際、AWS cli画面にバッチ機能の項目が表示されない場合は、最新バージョンにアップグレードしましょう。最新にしたら以下の手順でセットアップします。

 

1.WindowsでAWSにサインアップします
2.iamユーザーを作成します
3.コンピューティング環境、コンテナインスタンスのiamロールを作成します
4.キーペアを作成します
5.virtual private cloudを作成します
6.セキュリティグループを作成します
7.AWS cliをインストールします

 

上記の手順は、AWSのサイトにも記載されているため、確認しながら進めてください。

2:使用時のフローの順番を設定する

pegasus wms、cromwell、luigiといった主要なワークフローエンジンをサポートしているAWS Batchは、ec2やspotインスタンスを実行します。まず使用する時のフローの順番を設定します。

 

フローの順番は保管先Aから保管先Bまでデータを転送するのに、プロセスA、B、Cを直列経由するといった順番のことです。プロセスBを飛ばして、プロセスAからCにデータを送信できるようにすることもできます。

 

1.ジョブ定義を作成します
2.コンピューティング環境変数を設定します
3.ジョブキューを作成します
4.ジョブを構築します
5.作成したジョブを実行します

 

この手順ですすめていきます。systemデータ処理の見積もりを出しておいて、スケジュールを立てておくとフローの順番が決めやすいです。metaflowやnextflow、tensorflow、データ呼び出しなども決めましょう。

3:Get startedをする

準備が整ったらGet Startedをしましょう。使い方としてはロールを作成し、インストールしてからスタートします。これまでの流れで全ての準備が整ったら、AWS Batchを手動実行してください。

 

起動テンプレートには、コンピューティング環境とジョブキューを作成してサンプルの「hello world」ジョブを送信するオプションがあります。これを実行してからのスタートになります。

Job run-time

デフォルトの設定のままでも使用できますが、以下の項目を自由に変更できます。

 

1.新規ジョブ定義を作成します
2.ジョブ定義の名前をつけます
3.Job roleでAWS APIを使用する権限をジョブコンテナに付与するIAMロールを指定します

 

Job roleでの設定はオプションのため、しなくても問題はありません。runningの設定は後から変更することもできます。

Container properties

ジョブタイプ、ジョブ実行に使用するdockerイメージ、コマンドに渡すコマンド形式とjson形式、最大vcpuの数、メモリのハード制限を設定していきます。こちらもデフォルトのままでも使用可能です。

 

初回実行ウィザードで送信するコマンドはこちらで変更できます。christianhxc/aws-batch-101といった作業に必要なコマンドは別で設定します。

Set your compute environment type

マネージド型での設定が用意されている状態のデフォルトがありますが、コンピューティング環境タイプを決めます。コンピューティング環境名は必須ですが、サービスロール、インスタンスロールは空欄でも使用できます。

Configure your compute resources

プロビジョニングモデル、オンデマンドインスタンス、スポットインスタンス、上限入札価格、スポットフリートロールを設定していきましょう。

 

スポットフリートロールは事前に準備しておく必要があります。

 

指定するのは、インスタンスタイプの指定、コンピューティング環境で維持するec2 vCPUの最小数、コンピューティング環境の起動に必要なec2 vCPUの数、コンピューティング環境で、スケールアウトできるec2 vCPUの最大引数などです。

 

デフォルトのままでいい項目がいくつかあります。

Set up your networking

EC2インスタンスを起動するvpcのID、EC2インスタンスを起動するサブネット、EC2インスタンスに適用するセキュリティグループを設定します。

 

デフォルトではデフォルトVPC、デフォルトVPCの全てのサブネット(最低1つは要指定)、デフォルトVPCのデフォルトセキュリティグループといった設定になっています。revisionやrerunといった操作はできません。

Set up your job queue

ジョブキューの名前を設定します。ジョブキューを好きな名前に決められますが、それ以外の設定は変更できません。

 

ここまでの設定でAWS Batchをスタートアップする設定は終了です。多くの項目でデフォルトが使えるので、初心者でも混乱しないように工夫されています。

4:実行後のジョブ結果やログを確認する

実行した後でダッシュボードから、ジョブキューの名前やジョブの状態などを確認していきます。submitted、pending、runnable、starting、failed、succeededの結果に関する評価が表示されます。

 

succeededは終了コードが0です。もしタスク処理(task)がしきれず、waitの状態が続きタイムアウトになってしまったり、評価(message)が失敗通知だったりした場合は再実行(retry)してみましょう。

 

障害がどこにあるかはスケジュール実行の履歴を見れば分かるので、分析してみてください。

AWS Batchについて詳しく理解しよう

AWS Batchを使い始めるにはユースケースを知り、夜間バッチでも確実に実行するようにあらかじめ設定しておく必要があります。ユーザーガイドをよく読み専門用語を理解して、スタートアップを成功させましょう。

 

もしデフォルトのtemplateで設定されているトリガーが不要な場合は、チュートリアルを参考に登録解除して使いやすいように変更しましょう。