バナー画像

AWS batchについてまとめています。

AWS Batchは、AWS環境でバッチ処理を簡単におこなう機能

AWS Batchは、AWS環境でバッチ処理をおこなうための機能です。

関連)AWS Batch(バッチ処理をあらゆる規模で効率的に実行)| AWS

バッチ処理サーバーのようなものを用意しなくても、バッチ処理の定義としてCPUやメモリを指定しておくとバッチ処理実行時に動的にプロビジョニングされて実行環境が用意され、処理が実行されます。バッチ管理用のソフトウエアや、サーバークラスターのインストールが不要。AWS Batchでは、AWS FargateやAmazon EC2などのコンピューティング環境が選べます。

【関連記事】
AWSのFargateは、サーバーレスでコンテナを実行/EC2アプリのコンテナ化の方法

AWS Batchは、追加料金無しで使えます。ただし、バッチジョブを保存したり実行するために作成した AWS リソース (EC2 インスタンスや Fargate ジョブなど) に対しては、料金が発生します。

AWS Batchのメリットは、バッチ用のインフラが不要なこと。インフラ管理やバッチ処理用のプロビジョニング、管理、モニタリング、スケーリングといった作業が不要になります。さらに、バッチのコンピューティング環境としてFargateスポットを選ぶことでサーバレス環境でバッチ処理が実行可能となり、よりコストの削減が可能です。(ただし、コンテナ実行用にローカルファイルにデータや設定ファイルを置かないなどの条件を満たす必要があります)

AWS Batchは、AWSプラットフォームとネイティブに統合されています。そのため、AWS のスケーリング、ネットワーキング、アクセス管理機能を利用できます。Amazon S3 や Amazon DynamoDB などの AWS データストアからデータの取得と書き込みが安全に行われるジョブをすぐに作成して実行できるんですね。定期的に実行するジョブの処理量がたまたま多くて、よりスペックが必要だった場合にも自動スケールさせることが可能です。

AWS Batchの使い方

関連)AWS Batch

コンピューティング環境設定(コンピューティング環境の名前とサービスロール)、インスタンスのプロビジョニングモデル、最大vCPU、ネットワーキング(VPC ID、サブネット)の情報を設定します。プロビジョニングモデルは以下の4種類が選べます。

ジョブキューの作成では、ジョブキュー名、優先度、タグを設定します。タブはAWSリソースに割り当てるラベルでタグを使った検索やフィルタリング、コスト追跡が可能です。

ジョブ定義では、ジョブ定義名、実行タイムアウト(未完了ジョブが終了するまでの時間)、コンテナプロパティ(イメージ名、コマンド構文はbashかJSONか、実行コマンド、vCPU、メモリ、実行ロール、パブリックIPを割り当てるか、Fargateプラットフォームのバージョン)、ジョブに渡すパラメータ、タグを設定します。

ジョブ設定では、ジョブ定義で設定した内容がそのまま表示されます。特に変更なければ、次へ。

レビューおよび作成は、バッチ処理実行直前の確認です。「作成」をクリックでバッチ処理が作成されます。

ジョブのステータスはダッシュボードにて確認できます。ジョブのステータスには、以下があります。

各ジョブステータスの数値をクリックすることでジョブ情報の詳細を確認できます。以下は、FAILED(異常終了)したジョブの詳細です。ステータス理由の欄で、ジョブが失敗した原因(エラーログ)が確認できます。

AWS BatchをCLIからのジョブステータス確認とジョブのキャンセル

AWS CLIから、バッチ処理のステータス確認が可能です。

【関連記事】
AWS CLIのインストール方法 AWSアクセスキーの登録と疎通確認

aws batch list-jobsにて、–job-queueにはユーザ側で設定したジョブキュー名を指定します。以下の例では、ステータスがrunnableのまま停止しているジョブの一覧を表示します。

$aws batch list-jobs --job-queue myJOBQueue --job-status runnable --output text --query jobSummaryList[*].[jobId]
----------------------------------------------------------------------------------------
"0cffddb0-8bfa-4ba4-86ba-c5cad59e4529"
"884d8bdf-6192-4d4c-ac85-c51093460a01"
"236670e3-127a-4fe1-afd6-3f21cf1fe02e"
----------------------------------------------------------------------------------------

ジョブ実行のテストなどをおこなう際、一発で指定ジョブキューのジョブを全てキャンセルするツールを作っておくと便利です。以下は、myJOBQueueというジョブキューの全てのステータスのジョブに対して、ジョブ停止(aws batch terminate-job)を実行します。

#! /bin/bash
for state in SUBMITTED PENDING RUNNABLE STARTING RUNNING
do 
    for job in $(aws batch list-jobs --job-queue myJOBQueue --job-status $state --output text --query jobSummaryList[*].[jobId])
    do 
        echo -ne "Stopping job $job in state $state\t"
        aws batch terminate-job --reason "Terminating job." --job-id $job && echo "Done." || echo "Failed."
    done
done

AWS Batchのまとめ

ポテパンダの一言メモ
  • AWS Batchは、AWSでバッチ処理を簡単におこなう機能
  • コンピューティング環境にFargate(サーバレスのコンテナ実行環境)を選ぶとさらにコスト削減が可能
  • AWS Batchは、AWSマネジメントコンソールのほか、AWS CLIからも制御可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。