2021/09/22

「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’」を実行するケースを次項で紹介します。

「ジョブ定義」の具体例

以下が「ジョブ定義」の具体例です。


{
    "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エンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】