AWS S3に格納されたファイルを検知してバッチを実行する

この記事を書いたチーム:frontier

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

AWS S3にファイルが格納されたタイミングでLambdaバッチを自動実行する手順をご紹介します。
スケジュールや他イベントにてLambdaを自動実行する場合は、複数のサービスを組み合わせる必要がありますが、S3のファイルを検知して自動実行する場合は、EventBridge等の他サービスを使用せずに済みます。

 

環境

AWSLambda
AWSS3
AWSCloud Watch logs
言語:Python 3.9
 ※言語には依存しない為、どの言語を選んでいただいても問題ありません。

 

Lambdaでトリガー作成

実行したいLambda関数にて「トリガーを追加」を設定していきます。

・下記を設定
 バケット名:対象のバケット
 イベントタイプ:指定なし
  →デフォルトで「すべてのオブジェクト作成イベント」となっています(PUT」や「POST」等、個別の指定も可能です)
 プレフィックス:指定なし(任意)
  →バケット内の特定フォルダを指定したい場合は、フォルダパスからここに記入していきます。
 サフィックス:.owari
  →検知したいファイル名を記入します。

S3にファイルをアップロードし、Lambda自動実行確認


Cloud Watch logsLambda実行ログを確認すると「.owari」ファイルがアップロードされた時間と同様の時間となっていることが確認できます。

 

補足 – Cloud Watch logsの確認方法

Lambda関数の実行ログは、CloudWatch Logs内に記録されていきます。
下記手順にてログ画面に移動すると便利です。

「モニタリング」タグ→「Cloud Watch ログを表示」→対象の「ログストリーム」


さいごに

ファイルをS3へ格納したら自動で加工したい、ファイルの内容を読み取って処理を行いたい場合はスケジューリングせずとも、Lambdaが自動実行できるようになります。とても手軽に設定が可能なので、ぜひ試してみてください。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス