この記事の目次
「AWS Batch」とは?
「AWS Batch」とは、AWSが提供している「バッチ処理」を管理するためのサービスです。
バッチ処理に関する各種設定(例:バッチの実行スケジュール、バッチ処理の内容、バッチを実行するインスタンスの種類等)をするだけで、「AWS Batch」用のインスタンスを自動生成し、設定に沿ってバッチ処理を実行してくれます。
つまり「AWS Batch」側でサーバー上の各種管理作業等を実施してくれる「フルマネージド」なサービスによって、自社サービスの構築作業に集中できます。
なおバッチ処理を管理するコンピューターサービスを「バッチコンピューティング」と呼びます。
「バッチコンピューティング」とは?
「バッチコンピューティング」とは、例えば「月末の売上集計処理」等の主に業務に関するコンピューター処理(「ジョブ」と一般的に呼ばれています) を業務サーバー上で自動的に連続実行することです。
なおジョブを実行するサーバーのことを一般的に「バッチサーバー」と呼びます。「AWS Batch」は、AWS上で提供されている「バッチサーバー」のサービスとも言えます。
詳細な「AWS Batch」の使い方の前に、その概要について解説します。
「AWS Batch」の使い方の概要について
「AWS Batch」では、JavaやPython等のプログラム内で設定したり、実行用コマンドの引数として決めたり、PL/SQLのようなジョブ制御言語で設定したりすることで、事前にバッチ処理実行時に必要な各種入力値を定義しておきます。
また先行して実施されたジョブの処理結果によって、後続のバッチ処理の内容が変化(例:正常終了の場合は「バッチA」を実行する、エラー発生時は「バッチB」を実行する、といった判断分岐)する場合があります。
そのため、こういった判断分岐に応じた複数のジョブの処理ルートを用意したり、スケジューリング(例:タイムアウト時には「バッチC」を実行する等)したり、といった使い方を考慮する必要があります。
「AWS Batch」のジョブについて
「AWS Batch」のおける「ジョブ」とは、業務処理のバッチ実行単位であると同時に、「AWS Batch」に設定する「作業単位」を指します。
具体的な「作業単位」としては、 Cシェル等の「シェルスクリプトファイル」、Linuxの「実行可能ファイル」、「Dockerコンテナイメージ」等になります。
これらのジョブを「AWS Batch」に投入することで、設定された「作業単位」の内容に沿って処理が順次実行されます。
「ジョブ」の使い方の設定方法は、「ジョブ定義」と「ジョブキュー」で行います。こちらは次項以降で詳細に説明します。
「ジョブ定義」とは?
「ジョブ定義」とは、ジョブの実行方法や実行する処理内容を定義したもの、つまりジョブの「設計図」に該当します。
具体的な「ジョブ定義」の内容としては、「Dockerイメージ(例:aws_account_id.dkr.ecr.region.amazonaws.com/public-web-app:latest)」と実行するコマンドを指定します。
また「Amazon S3」等のAWS上のストレージのコンテナに関して、各種プロパティや環境変数等を制御することもできます。
「ジョブ定義」の具体例として、「echo ‘hello ggmedia’」を実行するケースを次項で紹介します。
「ジョブ定義」の具体例
以下が「ジョブ定義」の具体例です。
{
"jobDefinitionName": "ggmedia-run-job-definition",
"jobDefinitionArn": "arn:aws:batch:ap-northwest-1:012123456789:job-definition/ggmedia-run-job-definition:1",
"revision": 1,
"status": "ACTIVE",
"type": "container",
"parameters": {},
"containerProperties": {
"image": "ggmedia",
"vcpus": 4,
"memory": 4000,
"command": [
"echo",
"'hello ggmedia'"
],
"volumes": [],
"environment": [],
"mountPoints": [],
"ulimits": []
}
}
「ジョブキュー」とは?
「ジョブキュー」とは、ジョブを登録しておく「キュー」のことです。
詳細な使い方としては、「AWS Batch」にジョブを投入すると、内部の処理としてこの「ジョブキュー」に登録されます。
「ジョブキュー」は、一つ以上のバッチサーバーのインスタンスと紐付けられ、「優先度」を設定してジョブの実行順序を制御することが可能です。
例えば、一定の処理時間内に終了させる必要があるようなジョブには「優先度:高」と設定しておきます。反対に、AWS上のリソースに余裕がある時には、ジョブに「優先度:低」を設定します。
「AWS Batch」の具体的な使い方について
「AWS Batch」の具体的な使い方について、「AWS Batch コンソール」での「ジョブ定義」、環境構築、「ジョブキュー」作成の順に解説していきます。
なお「AWS Batch コンソール」画面で提供されている「AWS Batch 初回実行ウィザード」には、AWS上の実行環境と「ジョブキュー」を生成し、「Hello World」を実行するためのサンプル用「ジョブ定義」が用意されています。
また「AWS Batch」で起動できる「Dockerイメージ」用のジョブ定義を作成して、ジョブキューに投入することも可能です。
「AWS Batch」の使い方のステップ1:ジョブ定義等の設定
「AWS Batch」の使い方のステップ1として、「ジョブ定義」を作成します。
最初に、「AWS Batch コンソール」画面から「初回実行ウィザード」を開きます。
次に、「Amazon EC2 の使用」をクリックし、「ジョブランタイム」、「環境」と入力していき、続けて「パラメータ」、「環境変数」を入力して、「次」をクリックします。
ジョブ定義を新規作成するために、「ジョブ定義名」欄でジョブ定義の名称を入力します。
続いて、「コンテナイメージ」欄にて利用したい「Dockerイメージ」をクリックします。ここで「Docker Hub レジストリ」上のイメージファイルは、設定不要で選択可能です。
最後に、環境のリソースを指定するために、「コマンド」欄にてDockerコンテナに投入するコマンドを設定します。
「AWS Batch」の使い方のステップ2:メモリ関連の設定
「AWS Batch」の使い方のステップ2として、メモリ関連の設定をします。
「vCPUs」にてDockerコンテナ用に確保する予約数を決め、「メモリ」欄にてジョブ実行用コンテナのメモリに関する制限値(MiB単位)で設定し、「ジョブ試行」欄にてジョブ失敗時の上限リトライ数を設定しましょう。
なおオプション設定で、ジョブ用コンテナに投入する環境変数を指定できますが、認証情報データ等の機密情報を指定しないように注意が必要です。
「AWS Batch」の使い方のステップ3:コンピューティング環境の設定
「AWS Batch」の使い方のステップ3として、実行するコンピューティング環境のタイプを設定するために、「コンピューティング環境名」欄に一意な名称を入力します。
その後、「サービスロール」欄と「EC2 インスタンスロール」欄に、ロールを新規作成、もしくは既存流用を選択します。
次に、インスタンスを設定するために、「プロビジョニングモデル」欄は「オンデマンド」を選択して、「Amazon EC2 スポットインスタンス」を利用します。
続けて、「最小 vCPUs」、「Desired vCPUs」で必要な数値を設定しましょう。
「AWS Batch」の使い方のステップ4:ネットワーク関連の設定
「AWS Batch」の使い方のステップ4として、VPCやサブネット等のネットワークの設定を行います。
具体的には、「VPC ID」、「サブネット」、「セキュリティグループ」について、利用対象を選択していきます。
最後に、「ジョブキュー」を設定するために、「ジョブキュー名」欄にて一意な名称を入力します。
「AWS Batch」の利用料金について
「AWS Batch」の利用料金ですが、このサービスを利用することによる追加料金は請求されません。
ただし、バッチジョブを実行するために作成した各種AWSリソース(例:Amazon EC2インスタンス、Fargateジョブ等)に対しては料金が発生します。
「AWS Batch」の使い方をおさえ作業の効率化を目指そう!
「AWS Batch」の概要や使い方について解説しました。
ぜひAWSの各サービスとシームレスに連携できる「AWS Batch」を活用して、自社のバッチ処理を効率化してみてはいかがでしょうか。
この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2023年12月6日キャリア・転職システムエンジニアへのキャリアチェンジで必要な資格は?
- 2023年12月6日キャリア・転職キャリアチェンジでエージェントを活用するメリット
- 2023年12月6日キャリア・転職プログラマーへのキャリアチェンジに必要な資格は?
- 2023年12月6日キャリア・転職サーバーエンジニアへのキャリアチェンジで必要な資格は?