今回は、TerraformでS3 + Lambda + CloudWatchを使ってS3のバケットに置いたLambda関数(zipファイル)を定期実行する方法をまとめていきます。
基本的にそれぞれのリソースのソースコードを分けて載せていきますので、 お使いの環境に併せて必要な部分を参考にしてもらえたら嬉しいです!
1. Lambdaを置くS3バケットを作成
Lambda関数(zipファイル)を置くS3のバケットを作成します。
versioningはお好みでtrueにしてください。(デフォルトはfalseです)
2. Lambdaを作成
Lambdaを作成します。
あくまでインフラリソースとしての作成なので、Lambdaの関数(zipファイル)は任意のものを使用してください。
function_name | 任意の関数名 |
s3_bucket | zipファイルを置くバケット名(ここでは上記バケットを指定) |
s3_key | zipファイルを置く |
handler | 実行ハンドラ名 |
runtime | 使用言語バージョン |
timeout | タイムアウト |
role | Lambdaにアタッチするロールのリソース |
publish | Lambdaのバージョン管理を有効化 |
3. CloudWatchのイベントを作成
CloudWatchのScheduled Eventを作成します。
イベントは通常のクーロン形式で記入できます。
4. イベントをLambda側で許可する
最後に、作成したCloudWatchのイベントを実行することを、Lambda側で許可します。
(Permissionを与える)