AWS re:Invent で念願の Lambda の定期実行がサポートされました。
【AWS発表】AWS Lambdaのアップデート – Python, VPC, 実行時間の延長, スケジュールなど
API Gateway と組み合わせてサーバーレスのシステムが組めるようになったけど、
実際にサービス等で利用する場合には Lambda のスケジュール実行が出来なくと困ることが多いですが、
やっとサポートされました。
ということで、実際に試してみました。
手順としては、Lambda 実行用のロールを作成し、その後 Lambda を作成し、それに対して Scheduled Event を設定する流れです。
Lambda 実行用ロール作成
Lambda の実行には、実行権限の付いたロールが必要なので作成します。
IAM から作成できます。
テスト実行用の Lambda の作成
-
Function の設定をします。
Name に HelloWorldFunction を入力し、Role に作成したロールを選択。
実行するコードはテスト用に console に Hello World !!! と吐くだけに変更しました。
Lambda に定期実行を設定
次に、作成した Function に対してスケジュール設定を行います。
-
event source を追加
5 分間隔で実行するよう設定します。実際は、時間指定とかも出来ます。
Event souce type に Scheduled Event を選択。
Name にイベント名を入力。
Schedule expression に rate(5 minutes) を選択。
Enable event source は Enable now を選択。
Submit をクリックします。
実際に定期実行されるか、CloudWatch で確認
ログに、Lambda で console に吐いた Hello World !!!! が表示されてますので、成功ですね。
まとめ
とにかく簡単にサクッとスケジュール設定が出来ました。
最初にあげたように Web サービスや、アプリでサービスを行う際、殆どの場合スケジュール実行するようなタスクが絡んでくるので、今回の機能追加によって Lambda の有用性はかなり上がったかと思います。しかも元々かなり低価格ですし。
AWS API Gateway + AWS Lambda + ( CloudFront ) + DynamoDB + ( SPA or NativeApp ) のような構成でサービスも運営できちゃいます。
今回地味に、API Gateway も東京リージョンも対応したみたいなので、全てを東京リージョンで運営できますので、ドンドン Lambda を使っていこうと思いました。