我想检查今天在 s3 中上传的文件并检查文件是不是超过 1 小时
Posted
技术标签:
【中文标题】我想检查今天在 s3 中上传的文件并检查文件是不是超过 1 小时【英文标题】:I want to check files which are uploaded today in s3 and check if the files are more than 1 hour我想检查今天在 s3 中上传的文件并检查文件是否超过 1 小时 【发布时间】:2021-12-22 05:30:57 【问题描述】:我想创建一个 lambda,每隔一小时监控一个 s3 存储桶。 lambda 的条件应该是这样的:
如果今天上传了文件,则 lambda 应该获取对象列表并检查 lastmodified 是否距离现在超过 1 小时。
如果今天没有文件上传,lambda 应该什么都不做。 我尝试了下面的代码,但它给了我所有旧文件。我不希望 lambda 检查昨天或之前上传的文件。它应该只检查今天上传的那些文件,并告诉我这些文件是否早于现在 1 小时。
我不想要 s3 事件通知。
请帮助我如何实现这一目标
import boto3
import os
from datetime import datetime, timedelta, timezone
from dateutil.tz import tzutc, UTC
TOPIC_ARN = 'mysnstopicarn'
s3_resource = boto3.client('s3')
sns_resource = boto3.resource('sns')
sns_topic = sns_resource.Topic(TOPIC_ARN)
lessthan = []
greaterthan = []
result = []
listobjects = s3_resource.list_objects(Bucket='mybucketname',Delimiter='Archives')['Contents']
def lambda_handler(event, context):
for key in listobjects:
if key['LastModified'] < datetime.now(timezone.utc) - timedelta(hours=1):
lessthan.append(key['Key'])
for i in lessthan:
path, filename = os.path.split(i)
result.append(filename)
final = list(filter(None, result))
sns_topic.publish(Message=f"This object final is more than one hour old")
【问题讨论】:
【参考方案1】:您正在寻找最新的文件,因此您应该寻找LastModified
值大于您的目标日期。
# if LastModified is greater than (not less than) the target
if key['LastModified'] > datetime.now(timezone.utc) - timedelta(hours=1):
【讨论】:
```if key['LastModified'] > datetime.now(timezone.utc) - timedelta(hours=1):以上是关于我想检查今天在 s3 中上传的文件并检查文件是不是超过 1 小时的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Coldfusion fileExist检查Amazon S3上是否存在文件?
Django-storage - 如何在上传前检查文件大小?