素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

【サーバーレスアーキテクチャ】AWS lambdaとCloudWatch Eventsを組み合わせてCron処理でLambda関数をスケジューリング処理する方法【バッチ/自動化】

投稿日:

スポンサーリンク

336×280




Lambda関数を定期実行しよう

サーバーレスを実現出来るLambda関数

先日まで、AWS Lambdaに関する記事をご紹介しました。

Lambda関数を使えば、サーバーを用意せずにAWSサービスをトリガーに処理を実装出来るので今注目されている技術です。

Cronによる定期実行も可能

そして、もう一つの強みが何と言ってもCron指定により定期実行をスケジューリング出来ることです!

これを知った時、サーバーを用意せずに実現出来ることが素晴らしすぎて感動しました。

また、設定自体もとても簡単に行うことが出来たので、今回は手順をご紹介致します。

手順

前提

サンプルとしては以下の記事で作成したLambda関数を利用します。

しかし、定期実行の場合はeventを取得出来ない為、CloudWatch Logsに以下のようなエラーログが出てしまいます。

ですので、lambda_function.pyを以下のように修正しておきましょう。

トリガーの作成

まずはLambda関数の設定画面を開き、設定タブを選択した状態でDesignerCloudWatch Eventsを選択します。

すると、下部エリアがトリガーの設定画面になるので新規のルール作成を選択し、ルール名・ルールの説明を入力したら、ルールタイプスケジュール式にチェックを入れ、スケジュール式にcron形式を入寮します。

今回は試しに1分ごとに起動したいのでcron(0/1 * * * ? *)と入力しましょう。

そして、トリガーの有効化にチェックを入れたら追加ボタンをクリックしましょう。

CloudWatch Eventsがセットされていることを確認して保存ボタンをクリックします。

正常に保存されたらスケジュールに則ってLambda関数が実行されるはずです。

確認

では、CloudWatch Logsを覗いてみましょう。

正しく1分ごとに実行されていますね♪

オススメの参考書

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド

Pythonスタートブック 増補改訂版

終わりに

以上のようにサーバーレスで定期実行処理を実装することが出来ました。

この機能を組み合わせて使うことで、バッチ処理なども行う事が出来るので興味のある方は試してみてください♪

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , , ,

blogenist

Author: blogenist

お名前.comサイドバー

アーカイブ