[小ネタ]Serverless FrameworkでLambdaを定期実行させる
はじめに
Serverless Frameworkのドキュメントを何気なく読んでいたところ、 ふと便利そうな機能があったので取り上げてみます。
タイトルにあるように、Lambdaを定期実行させるための設定です。
手順
Serverless FrameworkでLambda Functionを作成し、その定義に定期実行の定義を追加します。 Lambdaの実装言語にはGolangを選択しました。
1. プロジェクト作成
$ serverless create -u https://github.com/serverless/serverless-golang/ -p go-lambda-scheduled
テンプレートとして作成されるmain.goに、fmt.PrintlnでCloudWatch Logsにメッセージを吐くようにします。
func Handler() (Response, error) { fmt.Println("hello!!") // これを追記 return Response{ Message: "Go Serverless v1.0! Your function executed successfully!", }, nil }
2. serverless.ymlにスケジュールを追記
serverless.ymlのLambdaの定義に「events」としてスケジュールを設定します。今回はcron形式で設定しました。
functions: t-honda-hello: handler: bin/main events: - schedule: cron(0/1 * * * ? *)
3. ビルド
$ GOOS=linux go build -o bin/main
4. デプロイ
$ serverless deploy
結果確認
デプロイしたLambdaを見ると、以下のようにCloudWatch Eventsが設定されています。
CloudWatch Logsを見ると、以下のように定期的にメッセージが出力されています。
まとめ
Lambdaの定期実行という、よくありがちな要件が非常に簡単に実現できることが分かりました。 本記事が何かの役に立てば幸いです。
参考サイト
https://serverless.com/framework/docs/providers/aws/events/schedule/