S3 存储桶:当已经有数百万个文件时,删除所有早于 15 分钟的文件的简便方法
S3 bucket: Easy way to remove all the files older than 15min when there are already millions of files
我正在尝试删除 s3 存储桶中超过 15 分钟的所有文件。下面的 python 脚本只获取文件名。文件数量以百万为单位。
import boto3
import datetime
client = boto3.client('s3')
paginator = client.get_paginator("list_objects_v2")
for page in paginator.paginate(Bucket='raw-data-ingestion-us-west-2-dev'):
print(page["Contents"])
for file in page["Contents"]:
file_name =file.get("Key")
modified_time = file.get("LastModified").replace(tzinfo=None)
difference_days_delta = today_date_time - modified_time
difference_minutes = difference_days_delta.seconds/60
if difference_minutes > 15:
print("difference_minutes---", difference_minutes)
print("file more than 15 minutes older : - ", file_name)
else:
print("file less than 15 minutes older : - ", file_name)
上面打印早于 15 分钟的文件名的脚本本身需要几个小时。
我必须在中间停止脚本。
想知道如何不间断地完成删除吗。
我存储的文件如下:
DEV001_STEL_FOOTMODE/2022/03/02/03/40/1646192437.755104-1646192439.467863-DEV001_STEL_FOOTMODE
哪里
2022/03/02 (refers date)
03/40 (refers hr and minute)
DEV001_STEL_FOOTMODE
将是某种主要的子文件夹。桶内有很多这样的子文件夹,每个文件每小时都被撕毁,文件也以相同的主子文件夹为后缀
Amazon S3 提供 Object Lifecycle 可以在指定时间段后删除对象。
它将提供最简单的删除对象的方法。但是,解决方案只有一天,删除对象可能需要 24-48 天。
您没有提供有关对象创建方式的任何信息或 'used',因此我的其他建议是:
- 如果对象未被使用,则不要创建它们。 (简单!)
- 如果进程是 'using' 文件(例如,创建每个对象时触发 AWS Lambda 函数),那么该进程也可以在完成处理后删除对象。
- 将对象存储在单独的子目录中,这样您就知道您始终可以删除给定子目录中的对象(例如,每 15-30 分钟使用一个新的子目录)。
我正在尝试删除 s3 存储桶中超过 15 分钟的所有文件。下面的 python 脚本只获取文件名。文件数量以百万为单位。
import boto3
import datetime
client = boto3.client('s3')
paginator = client.get_paginator("list_objects_v2")
for page in paginator.paginate(Bucket='raw-data-ingestion-us-west-2-dev'):
print(page["Contents"])
for file in page["Contents"]:
file_name =file.get("Key")
modified_time = file.get("LastModified").replace(tzinfo=None)
difference_days_delta = today_date_time - modified_time
difference_minutes = difference_days_delta.seconds/60
if difference_minutes > 15:
print("difference_minutes---", difference_minutes)
print("file more than 15 minutes older : - ", file_name)
else:
print("file less than 15 minutes older : - ", file_name)
上面打印早于 15 分钟的文件名的脚本本身需要几个小时。
我必须在中间停止脚本。
想知道如何不间断地完成删除吗。
我存储的文件如下:
DEV001_STEL_FOOTMODE/2022/03/02/03/40/1646192437.755104-1646192439.467863-DEV001_STEL_FOOTMODE
哪里
2022/03/02 (refers date)
03/40 (refers hr and minute)
DEV001_STEL_FOOTMODE
将是某种主要的子文件夹。桶内有很多这样的子文件夹,每个文件每小时都被撕毁,文件也以相同的主子文件夹为后缀
Amazon S3 提供 Object Lifecycle 可以在指定时间段后删除对象。
它将提供最简单的删除对象的方法。但是,解决方案只有一天,删除对象可能需要 24-48 天。
您没有提供有关对象创建方式的任何信息或 'used',因此我的其他建议是:
- 如果对象未被使用,则不要创建它们。 (简单!)
- 如果进程是 'using' 文件(例如,创建每个对象时触发 AWS Lambda 函数),那么该进程也可以在完成处理后删除对象。
- 将对象存储在单独的子目录中,这样您就知道您始终可以删除给定子目录中的对象(例如,每 15-30 分钟使用一个新的子目录)。