我只想从S3存储桶中检索最后一个修改过的密钥,在一个特定的前缀中使用boto3。在
# Get Today's date
today = datetime.date.today()
# Get Objects date
s3 = boto3.resource('s3',region_name=AWS_REGION)
bucket = s3.Bucket('xxx')
objs = bucket.objects.filter(Prefix='yyyy').limit(1)
def get_object_check_alarm():
try:
for obj in objs:
print(obj)
lastobjectdate = (obj.last_modified).date()
except botocore.exceptions.ClientError as e:
error_code = e.response['Error']['Code']
if error_code == '404':
print("There is no file")
# Compare with defined date
if today == lastobjectdate:
print(today)
print(lastobjectdate)
print("OK, lastest file comes from today")
else:
print(today)
print(lastobjectdate)
print("Mail sent")
使用此代码,当前结果不会输出最后修改的键。我试图将limit()增加到limit(10),但没有成功。在
更新开始
也许,在S3中创建带有日期前缀的对象可能更好。在
{bucket}/yyyy/mm/dd/{object}
示例:myS3bucket/2018/12/29/我的文件.txt在
使用这种方法,您的查询变得很简单,可以确定您是否在特定的一天有任何文件,并且您检索到的文件数列表也会变短。在
更新完成
我不确定你给出了完整的代码,但在上面的代码片段中有一些缩进问题。我刚在下面测试了一下,结果很好,我得到了正确的
last_modified
日期。在请确保您在正确的区域作为存储桶。而且
^{pr2}$last_modified
位于UTC
时区,因此您的比较应该考虑这一点。在下面是输出。我在EST区域,所以日期仍然是12月28日,但对象创建日期是12月29日,因为对象创建时已经是12月29日了。在
相关问题 更多 >
编程相关推荐