Python 在s3存储桶中搜索文件(密钥)需要更长的时间

Python 在s3存储桶中搜索文件(密钥)需要更长的时间,python,amazon-s3,boto,Python,Amazon S3,Boto,我在s3存储桶中有10000个文件。当我列出所有文件时,需要10分钟。我想使用BOTO(AWS的Python接口)实现一个搜索模块,该模块根据用户输入搜索文件。有没有一种方法可以用更少的时间搜索特定的文件?AFAIK您可以做的最好的方法是根据文件前缀使用过滤结果 有两种方法可以实现搜索 案例1。正如john所建议的,您可以在列表方法中指定s3密钥文件的前缀。这将返回以给定前缀开头的S3密钥文件的结果 案例2。如果要搜索以特定后缀结尾的S3键,或者我们可以说是扩展名,则可以在分隔符中指定后缀。请记

我在s3存储桶中有10000个文件。当我列出所有文件时,需要10分钟。我想使用BOTO(AWS的Python接口)实现一个搜索模块,该模块根据用户输入搜索文件。有没有一种方法可以用更少的时间搜索特定的文件?

AFAIK您可以做的最好的方法是根据文件前缀使用过滤结果

有两种方法可以实现搜索

案例1。正如john所建议的,您可以在列表方法中指定s3密钥文件的前缀。这将返回以给定前缀开头的S3密钥文件的结果

案例2。如果要搜索以特定后缀结尾的S3键,或者我们可以说是扩展名,则可以在分隔符中指定后缀。请记住,只有在为以该字符串结尾的搜索项提供后缀的情况下,它才会给出正确的结果。 Else分隔符用于路径分隔符


我建议您使用案例1,但如果您想使用特定后缀更快地搜索,则可以尝试案例2,或者在另一个数据库(例如DynamoDB)中保留一个bucket内容列表,并使用该列表回答查询。是的,如果您经常需要该信息,你绝对应该把它缓存到像DynamoDB这样的地方,而不是每次都执行列表操作。存储密钥的建议是合理的(而且是有效的),我的回答完全基于S3API和Boto。我不想再创建一个DB。。所以我接受了约翰的建议,效果很好!这是我的示例日志20121015/00030662235a41d1/DR_SUCCESS/9204f47e28b646f39aa871556730c96f/1350334249946dr.1.log。有没有一种方法可以让我找到中间的DRY成功?