ただメモができるだけのブラウザアプリ「TextArea」はこちらw

AWS でバッチ処理・定期実行する4つの方法(EC2,EventBridge,SQS,ECS,Lambda)

AWS上でバッチ処理を行う場合に、

  • どのAWSサービスが選択肢として考えられるか
  • どのAWSサービスを選択すればいいのか

について考えていきます。

AWSでバッチ処理・定期実行する方法を4つ紹介し、それぞれ特徴やメリットとデメリットがありますので、この点について記載していきます。

バッチ処理・定期実行方式のパターンと特徴を知って適切な手段を選択しよう!という記事です。

まずはどのような構築方法があるかについて記載していきます。

4つのバッチ処理・定期実行方式

バッチ処理・定期実行方式は以下の4つを想定しています。

起動方式使用するAWSサービス概要
EC2EC2Linux系OSで用いられる定時実行機能であるcronのコマンドを使用する
SQS×ECS

EventBridge

SQS

ECS

EventBridgeでキューを生成し、ECSコンテナでキューを取得して実行する

ECSタスクスケジューリング

ECS

ECSタスクスケジューリングを利用して、コンテナを起動して実行する

LambdaEventBridge

Lambda

EventBridgeからLambdaを起動し、実行する

4つのバッチ処理・定期実行方式の詳細情報

それぞれのバッチ処理・定期実行方式について詳細を見ていきます。

EC2について

使用するAWSサービス

EC2

処理概要

Linux系OSで用いられる定時実行機能であるcronのコマンドを使用する

メリット

昔からよく使われているcronの知識が使える

デメリット

EC2インスタンスを起動しておく必要があり、使っていない時間もコストがかかる

障害に弱い。EC2サーバに障害があると終わる

サーバが複数になると管理が大変

EC2にも、EventBridgeをトリガーにStep Functionsを起動して、EC2のバッチを実行する方法もあるので、気になる方は以下のリンクをクリックくださーい

EC2のcronバッチを「EventBridgeをトリガーにStep Functionsを起動」に置き換えると、エラーハンドリングが快適になる
AWSのEC2で定期的なタスクを自動化するために、cronを使用しているケースも多いと思います。 しかし、Amazon Linux 2023ではcronがデフォルトで無効になっています。これはcron以外に、cronのようなバッチ実行・定期...

SQS×ECS

使用するAWSサービス

EventBridge

SQS

ECS

処理概要

EventBridgeでキューを生成。ECSコンテナでキューを取得して実行する

メリット

ECSを起動しておくため、コンテナの起動時間を要さない。

デメリット

EventBridgeでキューを生成するが、EventBridgeはまれに1 つのイベントに対して複数回トリガーされることもあるので要注意(1つの設定で複数キューが生成されることがある)

(多重起動対策をプログラムでしておく必要がある)

ECSを起動しておく必要があり、使っていない時間もコストがかかる

ECS タスクスケジューリング

使用するAWSサービス

ECS

処理概要

ECS タスクスケジューリングを利用して、コンテナを起動して実行する

メリット

処理実行時のみコンテナを立ち上げるので、無駄なコストが発生しない

デメリット

コンテナが起動するまでに時間がかかる。(ECS タスクスケジューリングが動き出してから実際にバッチが実行されるまでタイムラグがある)

1つのECS タスクスケジューリング設定で、複数コンテナが立ち上がってしまうことがあるため、多重起動対策をプログラムでしておく必要がある

Lambda

使用するAWSサービス

EventBridge

Lambda

処理概要

EventBridgeからLambdaを起動し、バッチ処理を開始する

メリット

コールドスタートの問題はあるが、比較的低レイテンシーで処理を開始できる。

デメリット

Lambdaには15分でタイムアウトする制限があるので、長時間実行のバッチ起動処理には向かない

どのサービスを使えばよいか

バッチ処理開始までに多少の遅延があっても許容される場合

「ECS タスクスケジューリング」を使用するのがいいと思われます。

デメリットの「コンテナが起動するまでに時間がかかる」が許容されるためです。

バッチ処理開始までの遅延が許容されない、かつ、バッチ処理時間が15分を超える

「SQS×ECS」を使用するのがいいです。

消去法です。

バッチ処理開始までの遅延が許容されない、かつ、バッチ処理時間が15分を超えない

遅延が少なく、実行時だけ課金される「Lambda」を選択します。

女性誌多数掲載!
普通の子に会える

まとめ

AWS でバッチ・定期実行する際の方式について記載しました。

AWSはサービスがいっぱいあり、バッチ実行時にどのサービスを使えばいいか迷うことも多いと思いますが、迷った時は本記事の「どのサービスを使えばよいか」が参考になると嬉しいです。

WEBサイト構築についての記事もありますので、よろしければ★

AWS でWEBサイト構築する6つの方法
今回はAWS上でWEBサイト構築する際に、どのサービスを使えばいいのー?について考えていきます。 (最近、AWSのサービス、どんな時に、どんなサービス使えばいいのー?について調べるのにはまってます) 6つの構築方法を紹介し、それぞれ特徴やメ...
スポンサーリンク
AWS
フォローする
さゆフィクション