AWS LambdaはCloud WatchのEventトリガーと連動してCronのように定期実行することができます。
定期実行Functionの作成
Cloud WatchのルールとLambda ファンクションを別々に定義することも可能ですが、Lambda関数定義時に設計図から定義すると関数作成と同時にCloud Watchイベントも作成、イベントに関数の紐付けまでを行えます。
関数の作成
から設計図の使用
を選択。
設計図
にlambda-canary
と入力・選択する。
lambda-canary
のカードを選択・押下すると関数情報の入力画面に遷移するので、関数名・関数のロールなどの入力を行う。
CloudWatch Events/EventBridge トリガー
関数情報の入力時に設計図としてCloudWatch Eventsの登録を併せて行うことができる。
- ルール名: 任意のもの
- ルールタイプ: スケジュール式 を選択
- スケジュール式には例のようなcronの書式を使用できる 例: rate(1 day)、cron(0 17 ? * MON-FRI *)
- トリガーの有効化: 関数のテスト終了にスケジュール実行するので、チェックを外す
- ラムダ関数のコードと環境変数はもちろん後から修正可能なので、必要なければ削除しておけばよい。
関数の作成で、Lambda関数の作成と同時にCloudWatch Eventsも作成される。
CloudWatch Eventsの確認
CloudWatchコンソールのルール項目でFunction登録時に行ったルールを確認・編集できる。
アクションボタンよりイベントの編集が行える。
CloudWatch EventsからLamda Functionにパラメータを与える
また、イベントの編集時にターゲット
を編集することで、Lamda Functionのevent
にパラメータを渡すことができる。
- ターゲット: Lambda関数
- 関数: 対象の関数名を選択・入力
- 入力の設定: 定数の場合Jsonを選択
スケジュールイベントの開始
Lambda関数のテストが終了すればスケジュールイベントを開始させる。
対象のLambda関数のコンソールに移動して、
DesinerエリアのCloudWatch Events/EventBridgを押下すると以下のようなフォームが表示されるので、無効トグルを押下し有効にすることでスケジュールジョブの定期実行が始まる。