IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > AWSのサービスを使ってCronによるスケジューラーを作成しよう

AWSのサービスを使ってCronによるスケジューラーを作成しよう

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

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

Cronとは

読み方はクーロンです。Cronとは元々Linuxのサーバーにおいてスケジュールを指定することができる機能です。特定の時間や頻度でとあるアプリケーションを実行したい、という際に設定を行う機能です。 Linuxで
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式の書き方に関して学習していきます。既にCron式の書き方をご存知の方は読み飛ばしていただいても構いません。 AWSで指定できるCron式の基本系は* * * * * *と「*」が6つ並んだ状態で、それぞれが半角スペース空いています。この「*」を必要に応じて数字に置き換えて任意のスケジュールを指定します。 順番は「分→時間→日→月→曜日→年」です。 1番目の*:分を0〜59の整数で指定します。 2番目の*:時間を0〜23の整数で指定します。 3番目の*:日を1〜31の整数で指定します。 4番目の*:月を1〜12の整数で指定します。 5番目の*:曜日を1〜7の整数で指定します(1が日曜日) 6番目の*:年を1970〜2199の整数で指定します。

Cron式のサンプル

前のセクションでCron式の書き方を学んだかと思います。このセクションでは具体例を見てみましょう。 基本は指定したいものだけを指定する、です。つまり、指定したくないパラメーターは「*」のままでいいということです。また、一定の間隔を指定したい場合は/を用いて表記します(25分毎の場合は/25と記載します) 【例1】毎月の25日の18時30分に実行するジョブ
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式の書き方の注意点

このセクションではAWS特有のCron式の書き方の注意点を説明します。基本的にはCronとは一般的な規格であるため、様々なアプリケーションやサービスでCronが使われています。しかし書き方・仕様には若干差異があります。 勘の良い方であれば既に気付いているかと思いますが、一番最初に説明したcrontab -eと、前セクションで説明したCronの記載方法は異なります。
20 * * * * /home/ichiro.sato/application/hogehoge.jar
というようにRasbianでは「*」が5つ分ですが、前セクションで話した記載方法では「*」が6つです。本記事で説明しているCronの書き方は、あくまでAWSのサービスで指定できる記載方法であると認識してください。 AWSであってもEC2でLinuxインスタンスを立てて、そのインスタンス内でCronを記載する場合は、OSの記載の仕方に合わせてください。

ハンズオン:Cloud Watch EventとLambdaを連携

このセクションでは、AWSのマネージドサービスであるCloud Watch EventとLambdaを連携されて、Cron式を用いたスケジュールドジョブを実装します。 Cloud Watch EventではCron式によるスケジューラーを設定することができ、そのスケジューラーをトリガーに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でも定番のマネージドサービスであるCloud Watch EventとLambdaを組み合わせることで簡単にサーバーレスのスケジュールドジョブを構築することができます。 定期的にチャットツールにメッセージを送信する機能であったり、EC2インスタンスの起動停止(料金節約のために夜間停止するなど)するなどといった機能を簡単に実現できます。 Cron式はCloud Watch Event以外でも世の中で広く使われています。活用したことない方は是非、この機会に書き方を覚えましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア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月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ