こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- AWSのサービスを用いて自作関数を一定のスケジュールで定期実行する方法を知りたい。
- AWS EventBridgeによるイベントルールの作成方法とLambdaでのルール適用方法を知りたい。
AWS上でスケジュール関数を定期実行する方法
本記事ではAmazon EventBridgeで作成したイベントルールをもとに、AWS Lambdaを呼び出し、関数を定期実行するための方法を解説します。
Amazon EventBridgeとは
Amazon EventBridgeはイベントを使って多様なアプリケーションを接続できるようにするサーバーレスなイベントパスサービスです。
EventBridgeを通じて、AWS上でのアクション(ステータス変更などシステムの状態が変わること)やAWS内外のサービス同士を接続し、イベント駆動型アプリケーションを容易に実装することができます。
一定のスケジュール設定のもと関数を定期実行したい場合、EventBridgeを用いて定期実行ルールを作成し、後述のLambda関数を実行します。
AWS Lambdaとは
AWS Lambdaとは、自身で作成した関数をリクエスト(イベント発生)の都度、自動で実行できるようにするサーバーレスコンピューティングサービスです。
Lambdaは、EventBridgeで作成したイベントルールををもとに起動し、関数を実行します。
Lambdaの具体的な特徴は下記に示します。
- サーバーのプロビジョニングや管理をすることなく、アプリケーションやバックエンドサービスのコードが実行可能。
- 関数をLambdaに保存すると、その関数がリクエストやイベントをトリガーとして自動実行できる。
- Java、Go、PowerShell、Node.js、C#、Python、Rubyをネイティブとしてサポートしている。その他の言語は Runtime APIを別途用いることで対応可能。
- 定期的なダウンタイムはなく、可用性が高い。
- 最長15分まで関数の実行が可能。
EventBridgeとLambdaを用いた関数の定期実行手順
「Lambda関数の作成」と「イベントルールの作成」の2つ手順をもとに関数の定期実行を実現します。
Lambda関数の作成手順
Lambda関数の作成手順は、下記記事で詳しく解説しています。Lambda関数の作成が未済の方はまずこちらをご覧下さい。
下記記事の目次(3):【実践】Lambda関数の作成まで終えられると問題なしです!
【AWS Lambda】自作関数をクラウド上で作成・実行する方法|Python・Ruby・Java・Node.js等対応
AWS Lambdaを用いて自作した関数をクラウド上で自動実行する方法を解説します。
イベントルール(スケジュール・定期実行条件)を作成する手順
EventBridgeでイベントルールを作成する手順を下記に示します。
- AWSマネジメントコンソールにログインし、EventBridgeコンソールを開く
- 「ルールの作成」を選択
- ルール設定項目を入力
- ステータス確認
【実践】EventBridgeでイベントルールを作成しLambda関数を定期実行
AWSマネジメントコンソールにログインし、EventBridgeコンソールを開く
AWSマネジメントコンソールにログインし、Amazon EventBridgeと検索し、EventBridgeコンソールを開きます。
「ルールの作成」を選択
EventBridgeのトップ画面にある「ルールを作成」ボタンをクリックします。
ルール設定項目を入力
ルールは特定のイベントを監視し、ユーザーの選択したAWSターゲット(今回ターゲットはLambda関数を指す)へと振り分けます。
AWS上であるイベントが起きた際、自動的にAWS上で処理を実行するためのルールや、一定間隔のスケジュールに従って処理を実行するためのルールを作成できます。
ルールの名前・説明を記述
ルール名とその説明を記載します。
パターンを定義
パターンの定義では「イベントパターン」か「スケジュール」を選択します。今回はスケジュールを選択し、Lambda関数を定期実行することとします。
ターゲットを選択
定期実行したいターゲットを選択します。今回は「Lambda関数」と指定します。加えて、定期実行したい関数を機能欄から選択します。
以上設定が完了しましたら画面右下の「作成」をクリックしましょう!
ステータス確認
ルールの作成が完了しましたらEventBridgeのルール一覧画面に遷移します。作成したルールのステータスがEnabledになっていれば、そのイベントが有効になっていることを示しています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら