手軽にAWS S3のファイルを定期削除する方法(AWS Lambda)

こんにちは。ぐっさんです。
 
テンポラリファイルをS3に保存しており、定期的に削除したいとの依頼がありましたので、S3にあるフォルダを定期的に削除する方法をご紹介します。

まずは、関数の作成

AWSのコンソールでLambdaのサービスを選択します。
Lambdaの選択
右上の「関数の作成」をクリックします。
関数の作成
「一から作成」を選択し、関数名・ランタイム・アーキテクチャを入力して「関数の作成」をクリックします。
一から作成

関数名 (任意の関数名)
ランタイム Python 3.9
アーキテクチャ x86_64

コードの入力

関数の一覧から作成した関数名をクリックします。
関数の選択
下記のコードを、lambda_function.pyに入力して、Deployボタンをクリックします。
コードの入力

import boto3

def lambda_handler(event, context):
    s3 = boto3.resource('s3')
    bucket = s3.Bucket('Bucket名')
    bucket.objects.filter(Prefix="削除対象オブジェクトパス").delete()
    s3 = boto3.client("s3", region_name='ap-northeast-1')
    response = s3.put_object(
      Bucket='Bucket名',
      Key='削除対象オブジェクトパス',
    )

ロールの設定

Lambda関数が、S3を操作する権限を設定します。設定タブを選択し、右上の編集をクリックし、編集画面を表示します。
設定編集画面の表示
実行ロールでS3の編集権限があるロールを指定します。S3の権限ロールがあるIAMがない場合は、「AWSポリシーテンプレートから新しいロールを作成」より、ロールを作成してください。ロールを選択したら、保存ボタンをクリックします。
実行ロールを設定

定期実行の設定

関数の概要にある「+トリガーを追加」をクリックします。
トリガーを追加
トリガーの設定で「EventBridge」を選択し、新規のルールを作成します。各設定を入力し、追加ボタンをクリックすれば完了です。

ルール名を任意の名前を入力し、ルールタイプをスケジュール式を選択します。スケジュール式は、cronに似た形で指定でき、指定方法は、下記を参考にしてください。

Frequency
毎日午前 10:15 (UTC) cron(15 10 * * ? *)
毎週月曜日から金曜日まで午後 6:00 cron(0 18 ? * MON-FRI *)
毎月 1 日の午前 8:00 cron(0 8 1 * ? *)
平日の 10 分ごと cron(0/10 * ? * MON-FRI *)
月曜日から金曜日まで午前 8:00 から午後 5:55 まで 5 分ごと cron(0/5 8-17 ? * MON-FRI *)
毎月最初の月曜日の午前 9 時 cron(0 9 ? * 2#1 *)

 
それでは、よいS3ライフを!
 
 
 
 
《関連記事》

記事をシェア
MOST VIEWED ARTICLES