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)
ジョブ定義します。定義した後、ジョブ送信します。
echo Hello World
するだけのジョブです。
ルールの作成(CloudWatch Events)
次にCloudWatch Eventsのルールの作成を行います。
「ルールの作成」をクリックします。
30分ごとに実行するように設定し、「ターゲットの追加」をクリックします。
ジョブキュー…arnかジョブキュー名
ジョブ定義…ジョブ定義名:改定
ジョブ名…任意のジョブ名
「設定の詳細」をクリックします。
任意の名前を付けて「ルールの作成」をクリックして完成です。
30分ごとにジョブが実行されるようになります。
まとめ
キューイングされるバッチ処理を順次実行していく場合においてはAWS Batchが向いていると思います。
ただ単に30分ごとに定期実行するのであればLambda + CloudWatch Events、もしくは、ECSスケジューリングの方が良い気がします。
バッチ処理が簡単であればLambda、複雑なバッチ処理の場合はECSが向いていると思います。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント