AWS Batch+CloudWatch Eventsで定期実行

AWS Batch+CloudWatch Eventsで定期実行

バッチ処理のような重たい処理を実行する環境をAWS Batchで一時的に用意してそれをCloudWatch Eventsで定期実行してみます。(30分ごと)

比較対象は3通りくらいです。

バッチ案
VPC Lambda + CloudWatch Events
AWS Batch + CloudWatch Events
ECSスケジューリング

AWS Batchでコンピューティング環境を作成すると、ECSのクラスターが作成されます。

AWS Batch+CloudWatch Eventsを使用する場合は、EC2は実行ごとに作成&削除するようにすることが出来ます。

ジョブ定義(AWS Batch)

ジョブ定義します。定義した後、ジョブ送信します。

AWS Batch+CloudWatch Eventで定期実行

AWS Batch+CloudWatch Eventで定期実行

AWS Batch+CloudWatch Eventで定期実行

echo Hello Worldするだけのジョブです。

ルールの作成(CloudWatch Events)

次にCloudWatch Eventsのルールの作成を行います。

AWS Batch+CloudWatch Eventsで定期実行

「ルールの作成」をクリックします。

AWS Batch+CloudWatch Eventsで定期実行

30分ごとに実行するように設定し、「ターゲットの追加」をクリックします。

AWS Batch+CloudWatch Eventsで定期実行

ジョブキュー…arnかジョブキュー名

ジョブ定義…ジョブ定義名:改定

ジョブ名…任意のジョブ名

「設定の詳細」をクリックします。

AWS Batch+CloudWatch Eventsで定期実行

任意の名前を付けて「ルールの作成」をクリックして完成です。

30分ごとにジョブが実行されるようになります。

まとめ

キューイングされるバッチ処理を順次実行していく場合においてはAWS Batchが向いていると思います。

ただ単に30分ごとに定期実行するのであればLambda + CloudWatch Events、もしくは、ECSスケジューリングの方が良い気がします。

バッチ処理が簡単であればLambda、複雑なバッチ処理の場合はECSが向いていると思います。

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA