AWS Lambda Functionをスケジュールして定期実行する

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

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登録時に行ったルールを確認・編集できる。

f:id:letitride:20200604155559p:plain

アクションボタンよりイベントの編集が行える。

CloudWatch EventsからLamda Functionにパラメータを与える

また、イベントの編集時にターゲットを編集することで、Lamda Functionのeventにパラメータを渡すことができる。

  • ターゲット: Lambda関数
  • 関数: 対象の関数名を選択・入力
  • 入力の設定: 定数の場合Jsonを選択

f:id:letitride:20200604160232p:plain


スケジュールイベントの開始

Lambda関数のテストが終了すればスケジュールイベントを開始させる。

対象のLambda関数のコンソールに移動して、

DesinerエリアのCloudWatch Events/EventBridgを押下すると以下のようなフォームが表示されるので、無効トグルを押下し有効にすることでスケジュールジョブの定期実行が始まる。

f:id:letitride:20200604155259p:plain