lambdaでcronが使える?

lambdaとは

AWS(Amazon Web Services)について調べていると、目にする機会の多い「lambda(ラムダ)」というサービスをご存じでしょうか。AWS lambdaとは、プログラムをAWSに登録しておくことで、サーバレスで自動的に処理を走らせることのできるAWSの代表的なサービスのことです。また、AWS lambdaはタイプ問わずにアプリケーションの開発やバックエンドサービスの構築・開発を行うことが可能です。

lambdaはサーバレス

AWS lambdaはスピーディに、効率よく開発作業を行いたいときにその真価を発揮します。まず、lambdaの大きな特徴としてクラウド上でアプリケーションの実行ができる点が挙げられますが、なによりサーバレスで実行が可能な点はlambda最大の特徴といえます。ご自身で環境構築作業を行ったことがある方は分かるかと思いますが、一般的にジョブ起動にはサーバ・プロビジョニング(※利用が可能なサーバからサーバを選別し、OSやミドルウェア等の適切なソフトウェアをロードし、システム設定やIPアドレスなどのサーバ固有の設定をする作業)を行い、サーバや実行環境の構築を行うことが必要不可欠です。中には仕組みの理解が複雑な工程などが存在し、特に初心者にはハードルが高く大変な作業だったりします。そういった点でAWS lambdaは、上述のようなOSや言語環境等のセットアップ、サーバのプロビジョニングや管理などの一切が不要です。よって、難易度や手間を大幅に削減することが可能であり、作業者は「自身が行いたいプログラムを開発すること」のみに集中することができます。したがって非常に効率の良い開発が行いやすくなります。

cronとは

次にcronについての説明です。cronとはUNIX系のOS(MacやLinux)に入っている常駐プログラム(OSの起動時に自動的に実行され、常時動作しているソフトウェア)のひとつです。普段Windowsを利用している方は聞きなじみの無いワードかもしれませんので、まず簡単にcronの機能について確認してみましょう。cronとは事前に「指定した時間に、どのプログラムを動作させるか」を指示しておくことで、その時間になった際にあらかじめ指定したプログラムを動かしてくれるものです。もちろん一回だけ動作させたいプログラムを指定することもできますが、これではcronを使う必要もないので、定期的に複数回動作させたいプログラムを指定する使い方が一般的です。

cronの使用例

では、イメージがしやすいよう具体例を挙げてみましょう。例えば毎週月曜日から金曜日まで朝9時30分に動作させなくてはならない、バックアップを取得するプログラム(backup.exe)があったとしましょう。人が行うと忘れてしまう可能性があるものの、ことデータのバックアップとなると確実に動作させたいプログラムではありますが、果たして毎日、確実に業務を漏れなく実施することが出来ると言い切れるでしょうか。仮に、電車の遅延や朝会議の時間が伸びた際など想定外の外的要因が発生した際、焦りや多忙から作業自体を忘れてしまうことが起きる可能性も無きにしも非ずです。そこで、こういったリスクヘッジに大いに役立つのがcronなのです。cronに対して、月曜日から金曜日の9時30分に動作させたいbackup.exeを指定しておくことで、あらゆる外的要因が発生した際にも確実に業務を行うことが可能です。ただし注意点として、プログラムを動作させたい時間にPCが起動していなくてはなりません。それでは結局、人が行わなくてはならなくなってしまいます。しかしそれでは困るので、定時に動作させることのできなかったプログラムをPCの次回起動時に行ってくれるanacronというものもありますが、ここでは説明を割愛します。

lambdaとcronで効率化

さて、ここまでにlambdaとcronの特徴について書いてきましたが、それぞれサーバレスで開発が行えたり、定期的な業務を自動化できるなど両者ともに効率化が図れるということが分かりました。しかし前述の通りcronはUNIX系のOSでのみ動作しているとお伝えしました。この記事をご覧いただいている方の中には、当然Windowsユーザーの方もいらっしゃるかと思います。では、なぜ利用がUNIX系に限定的なcronの説明をしたのでしょうか。それこそが、本題である「lambdaでcronが使える?」の回答です。厳密にはcronを使うことはできません。しかし、AWS lambdaにはcron式というスケジュール式がサポートされているため、ほぼcron同様の実装をすることができます。それでは早速使い方を見ていきましょう。lambdaにおけるcron式のフォーマットはcron(分 時 日 月 曜日 年)です。ここで利用時の注意点として下記が挙げられます。
①タイムゾーンがUTC(協定世界時)であるので、日本時間から-9時間で考える
②日と曜日のいずれかが「?」でなくてはならない。
したがって、例えば毎週月曜日から金曜日の9:30に対象のプログラムを動作させたい場合の指定は、cron(30 0 ? * MON-FRI *)となります。
前述したようなバックアップ以外にも、日次で開くようなアプリケーションなどをPCの起動と同時に作動させるなど、ルーチン業務に対して様々な使い方ができます。

最後に

これからリモートワークで開発を始める方や、自宅で新たに環境を構築する必要があるものの、「環境構築なんて分からない」という初心者の方や、「手っ取り早く開発がしたい」「なるべく定期的な作業の手間を省きたい」など、めんどくさい作業を一挙に解決できるlambdaを導入し、効率化を図ってみてはどうでしょうか。

コメントを残す

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