AWSのサービスを使ってCronによるスケジューラーを作成しよう
IT・技術関連
更新日:2024.09.05


AWSのサービスである「ジョブスケジューラー」とは
本記事はAWSのマネージドサービスを使ってCronによるジョブスケジューラーを実装します。ジョブスケジューラーとは、一定の時間間隔や特定の日次に実行されるジョブのことです。
例えば、
・毎週火曜日の午前8時に特定のメッセージをSlackに送信する
・60秒毎に特定のサーバーが動いているか、ヘルスチェックをする
・毎年12月21日の午前0時に誕生日のお祝いメールを送信する
などです。
上記のように、特定の日時または一定の間隔を指定することがスケジューラーには求められます。本記事では、スケジュールを指定するCronの書き方を学んだ上で、それをAWSのサービスでどのように実行するかを学んでいきましょう。
Cronとは

crontab -e
と実行するとCron式の確認と編集を行うことができます(下記はRaspbianをインストールしたRaspberry Piにて実行した例です。)
pi@raspberrypi:~ $ crontab -e
# Edit this file to introduce tasks to be run by cron.
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
~中略~
20 * * * * /home/ichiro.sato/application/hogehoge.jar
10 17 * * * /home/ichiro.sato/application/helloworld.jar
詳しい式の読み方は後で解説します。ここではhogehoge.jarとhelloworld.jarが定期的に実行されるような設定がなされている、というのを理解してください。
Cron式の書き方

Cron式のサンプル

30 18 25 * * *
【例2】毎週月曜日の10時15分に実行するジョブ
15 10 * * 1 *
【例3】2021年12月21日の0時0分に実行するジョブ
0 0 21 12 * 2021
【例4】毎時5分に実行するジョブ
5 * * * ? *
【例5】5分毎に実行するジョブ
*/5 * * * ? *
【例6】2時間毎に実行するジョブ
0 */2 * * ? *
AWSにおけるCron式の書き方の注意点

20 * * * * /home/ichiro.sato/application/hogehoge.jar
というようにRasbianでは「*」が5つ分ですが、前セクションで話した記載方法では「*」が6つです。本記事で説明しているCronの書き方は、あくまでAWSのサービスで指定できる記載方法であると認識してください。
AWSであってもEC2でLinuxインスタンスを立てて、そのインスタンス内でCronを記載する場合は、OSの記載の仕方に合わせてください。
ハンズオン:Cloud Watch EventとLambdaを連携

Lambda関数の作成
以下の手順で、Cron式で実行するための簡易な関数を作成します。 1.AWSコンソールにログインし、AWS Lambdaを開きます。 2.「関数の作成」ボタンを押下します。 3.「設計図の使用」を選択し、設計図の中から「hello-world」のテンプレートを選択後、右下にある「設定」ボタンを押下します。 4.「関数名」に任意の関数名を入力します。実行ロールは「基本的な Lambda アクセス権限で新しいロールを作成」を選択します。その後、右下の「関数の作成」を押下します。 5.作成されたら。「関数コード」にてソースコードを修正します。以下のコードをコピー&ペーストし、「デプロイ」を押下します。'use strict';
exports.handler = (event, context, callback) => {
console.log('※スケジュールイベントを受信!');
callback(null, '終了');
};
以上でLambda関数の作成は完了です。
Cloud Watch Eventの設定
以下の手順で、Cron式によるスケジュールを設定します。 1.AWSコンソールにログインし、Could Watch Eventを開きます。 2.イベント>ルール を選択します。 3.イベントソースの「スケジュール」をチェックします。その後、「Cron式」をチェックします。その後テキストボックスに、0/3 * * * ? *を入力します。 4.ターゲットにて先程作成したLambda関数を選択します。 5.画面右下の「設定の詳細」を押下します。 6.名前・説明に任意の文字列を入力した後、「ルールの作成」を押下します。 以上でスケジュールの設定は完了です。この例では3分毎にLambda関数を実行する、というジョブが完成しました。 実行された結果は、CloudWatch Logs→Log groups から確認することができます。3分毎にログが出力されているか確認してみてください。CloudWatchイベントとLambdaを上手に活用しよう

この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
ITエンジニアの派遣を利用したい企業様へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。