为了账号安全,请及时绑定邮箱和手机立即绑定

有没有一种快速的方法来获取具有匹配前缀的 aws 存储桶中的词法最大键

有没有一种快速的方法来获取具有匹配前缀的 aws 存储桶中的词法最大键

撒科打诨 2022-10-18 16:52:21
boto3在python中使用是获取s3存储桶中具有匹配前缀的最后一个键(按词法排序)的更好方法目前正在做以下工作:bucket = 'hello'prefix = 'is/it/me/your/looking/for'paginator = s3.get_paginator('list_objects_v2')last_key = Nonefor page in paginator.paginate(Bucket=bucket, Prefix=prefix):    for obj in page['Contents']:        last_key = obj['Key']显然,随着与前缀匹配的对象数的增加,这会受到影响。
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

不。

磁盘上的数据结构可以很容易地支持这一点,但亚马逊没有公开这样的功能。


我有一个“查找最近存储的时间戳”用例,即 compute max(stamp)

这是使它工作的倒计时kludge:

任意定义 END_OF_TIME,可能是 2060-01-01。

然后remaining秒就是减去当前时间。用前导零格式化它,以便有固定数量的列。写入记录时将其用作 S3 对象名称前缀。

使用这种方案很难计算最小值(stamp),但找到最大值很简单。这是返回的第一个结果list_objects_v2


查看完整回答
反对 回复 2022-10-18
?
繁星coding

TA贡献1797条经验 获得超4个赞

您清楚地提到您需要boto3版本,但这里是工作 cli 版本。它可能会给你一些线索。


aws s3api list-objects --bucket hello --prefix "is/it/me/your/looking/for" --query "reverse(sort_by(Contents,&Key))"


在您的代码中可能是这样的(抱歉不熟悉python)


query = 'reverse(sort_by(Contents,&Key))'

for page in paginator.paginate(Bucket=bucket, Prefix=prefix, Query=query):


查看完整回答
反对 回复 2022-10-18
  • 2 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信