amazon-web-services - 用于aws s3的python boto,如何获取存储桶中的排序和有限文件列表?

标签 amazon-web-services amazon-s3 boto

如果存储桶上的文件太多,而我只想获取 100 个最新文件, 我怎样才能只获得这些列表?

s3.bucket.list好像没有这个功能。有谁知道这个吗?

请告诉我。谢谢。

最佳答案

无法在服务端进行此类过滤。 S3 API 不支持它。您可以通过在对象名称中使用前缀来完成类似的事情。例如,如果您使用如下模式命名所有对象:

YYYYMMDD/<objectname>
20140618/foobar (as an example)

您可以使用 S3 中的 ListBucket 请求的 prefix 参数来仅返回今天存储的对象。在 boto 中,这看起来像:

import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('mybucket')
for key in bucket.list(prefix='20140618'):
    # do something with the key object

您仍然需要检索具有该前缀的所有对象,然后根据它们的 last_modified_date 在本地对它们进行排序,但这比列出存储桶中的所有对象然后进行排序要容易得多.

另一个选项是将元数据对象(S3 对象)存储在 DynamoDB 等数据库中,然后查询该数据库以查找要从 S3 检索的对象。

您可以找到有关 S3 中分层列表的更多信息 here

关于amazon-web-services - 用于aws s3的python boto,如何获取存储桶中的排序和有限文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282214/

相关文章:

amazon-web-services - 使用 terraform 初始化 terraform 后端

php - 我可以使用 PHP 直接上传到 Amazon S3 存储桶而不将其保存在本地系统中吗?

django - 使用 django-storage 和 boto 保存另一个同名文件

python - 访问值 boto3 字典响应

amazon-web-services - 用于列出所有 api 网关部署的 boto 脚本

amazon-web-services - 如何允许 Bitbucket-Pipelines 从 Amazon EC2 容器服务 (ECR) 拉取镜像?

amazon-web-services - AWS Cloudformation 输出

amazon-web-services - 何时显式使用 boto3 session

amazon-web-services - Laravel 5 Amazon AWS S3错误: Client error: 403 RequestTimeTooSkewed

ios - swift 中包含 AWSAPIGatewayResponse 的单元测试方法