お知らせ
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ライフを!
《関連記事》