お知らせ
2023.12.5(Tue)
目次
こんにちは。ぐっさんです。
テンポラリファイルをS3に保存しており、定期的に削除したいとの依頼がありましたので、S3にあるフォルダを定期的に削除する方法をご紹介します。
AWSのコンソールで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ライフを!
《関連記事》