この記事の目次
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を上手に活用しよう

この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞