概要
アプリ開発などでサーバレスな環境構築をすることがあると思います。
そう言った場合にAWSでだけで実装することができるバッチ処理の簡単な作り方をご紹介します。
色々やり方はありますが、今回はLambdaとCloudWatchに焦点を当ててご紹介します。
また解説する内容は必要最低限のプログラムなどになりますので全体的には15分程で試すことが出来るかと思います。
1. Lambdaで処理を作ろう
まず定期処理が行われた際の実際の処理が行われるプログラムを作成していきます。
AWSのLambdaのトップページより"Create function"ボタンを押下しファンクション作成のページに遷移します。
今回は"Author from scratch"を選択し、Function name(関数名)、Runtime(言語)をそれぞれ入力・選択し"Create function"ボタンを押下します。(筆者は関数名"qiitaBatchFunction"、Runtime"Python3.7"をそれぞれ入力・選択)
上記のページに遷移すればLambda関数の作成は完了です。
実際に行いたい処理を"lambda_function.py"を記述します。
またnpmなどでライブラリを導入したい場合や別途ソースコードの管理をしたい場合は、"Actions ▼"を押下し、"Upload zip file."を選択することで外部のソースコードを利用することができます。
実際に作成したソースコードが動くのか確認する場合はページ上部の"Test"ボタンを押下することで確認することが可能です。
では次に定期実行させる仕組みを作っていきましょう!
2. CloudWatchで定期実行させよう
次にCloudWatchで先ほど作成したLambda関数を定期実行させてみましょう。
CloudWatchのサイドバーより"Rules"をクリックします。
そして"Create rule"のボタンを押下します。
まず今回は"Event Source"より"Schedule"を選択します。
そして"Fixed rate of -"を選択し定期実行させたい間隔を設定します。(筆者は5分間隔で起動させる予定なので5を入力し"Minutes"を選択)
もし細かい設定を行いたい場合は、"Cron expression"を選択しスケジュールを設定して下さい。
こちらに関しては検索エンジンで"Cron 書き方"などと調べて頂くと筆者が説明するよりも分かりやすい内容が出てくると思います。
次に"Targets"より"Add target"を押下します。
すると何を実行させるか選択できるので"Lambda function"を選択し先ほど作成したLambda関数を選択します。(ここでは筆者が作成した"qiitaBatchFunction"を選択)
"Configure details"を押下します。
最後に"Rules"の一覧ページに表示される際のName(表示名)とDescription(説明)を記載して"Create rule"ボタンを押下するだけです。
もし作成と同時に定期実行を行いたくない方は"Stete"のチェックを外して下さい。
以上で定期実行の実装は完了です。
あとはサイドバーのLog groupsなどで定期実行されているかログを確認するなどして動作確認を行なって下さい。
3. 最後に
今回は必要最低限の動作ということでご紹介致しましたが基本的にはLambdaの処理部分を変えるだけでお好みの動作を行うことが出来るかと思います。
もしzipファイルを作りたい場合は検索エンジンで"lambda zip 外部"と検索して頂くと丁寧に紹介されているサイトが出てくると思います。
筆者自身もまた別の機会にLambdaで使用する外部ソースコードのzipファイル作成方法を投稿する予定です。
最後まで見ていただきありがとうございました。