「AWS Batch」の概要と使い方を詳しく解説!利用料金についても紹介

この記事でわかること
「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’」を実行するケースを次項で紹介します。
「ジョブ定義」の具体例
以下が「ジョブ定義」の具体例です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
{
"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」を活用して、自社のバッチ処理を効率化してみてはいかがでしょうか。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新: -
AWSのT2とT3の違いとは?用途に合った選択をしよう!
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)