はじめに
AWS Lambda で、サーバレスに処理を実行することができます。
Lambda は単独では動きません。実行のトリガーを与えてやる必要があります。
本記事では、Lambda を定期的に実行するために EventBridge を利用してトリガーを与える方法を解説します。
この記事を読むとわかること
- EventBridge を使って、Lambda 関数を定期実行する方法がわかります。
- 定期実行処理の利用イメージがわかります。
【参考】この記事で学んだことを使って、アプリケーションを作ってみました! →
EventBridge とは?
EventBridge とは、イベント駆動の非同期処理を実現する「イベントルータ」の一種であるフルマネージドサービスです。
イベントルータは、非同期処理のトリガーとなる「イベント」をシステム間でやり取りする際のルーティングを担います。
EventBridge は、他のサービスから受信したイベントを利用するだけでなく、 自分で
トリガーとなるイベントを定期的に発行するという機能も持っています。
利用イメージ
一つの例として、通勤に利用している路線の遅延を駅に行く前に検知するために、関連するツイート数が増えたら SMS で通知してくれる機能を考えています。
このうち、ツイート数のチェックを 15 分おきに自動実行する部分で、EventBridge を利用します。
- EventBridge で、15 分おきにイベント発行
- Lambda で、TwitterAPI を使った処理を実行する
- 条件に合致した場合、SMS を送る
ちなみに、この図の中で利用している
SNS
もイベントルータの一種です。SNS は、イベントを渡す先として、他のシステムや AWS サービスだけでなく
SMSやEメールといった配信機能
を選ぶことができるのが特徴です。前提
- AWS マネジメントコンソールにアクセスできること。
- Lambda 関数を作成できていること。
Lambda 関数のトリガーとして EventBridge を追加する
EventBridge の設定方法を具体的に解説していきます。
トリガーの追加
Lambda のマネジメントコンソールから、トリガーを追加します。
トリガーの設定
トリガーを設定します。
- トリガー:EventBridge (CloudWatch Events)
- ルール:新規ルールの作成
- スケジュール式:
cron(0/15 * * * ? *)
スケジュール式は、「rate 式」と「cron 式」の2通りの書き方があります。
cron 式で「15 分おき」を表すには以下のように記載します。
cron(0/15 * * * ? *)
その他の書き方はルールのスケジュール式 - Amazon CloudWatch Eventsを参照。
実行を確認
15 分ほど待ちましょう。
「モニタリング」タブに実行結果が表示されます。
CloudWatch のログを確認すると、console.log()
の中身も確認できます。
完了です。超簡単ですね!
まとめ
Lambda 関数の処理を定期的に実行する処理を作成することができました。
関連記事
Lambda 関数の作り方・ソースコードのアップロード方法
参考資料
- https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html
- https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-cloudwatchevents-tutorial.html
- https://d1.awsstatic.com/webinars/jp/pdf/services/20200610_AWS_BlackBelt_Building_Event_driven_Architectures_on_AWS.pdf
- https://d1.awsstatic.com/serverless-jp/contents/202102_EDA_steps_patterns.pdf