如何使用S3 ListBucket列出超过1000个对象?

Rac*_*hel 7 amazon-s3 amazon-web-services s3cmd

我正在使用 Amazon S3 API,特别是 ListObjects (v2)、GetBucket 命令。令人沮丧的是,我只能取回 1000 个对象。我认为您指定 Delimeter 或 nextMarker 设置为诱导分页并返回所有内容。有人有一个如何实现这一点的例子吗?curl 或 GET 的最终结果实际上是获取所有内容,而不仅仅是 1000 个对象。

Joh*_*ein 7

如果list_objects()响应已IsTruncated设置为 True,则您可以进行后续调用,NextContinuationToken从上一个响应传递到ContinuationToken后续调用的字段。这将返回接下来的 1000 个对象。

\n\n

或者,您可以使用提供的分页器来为您执行此操作。

\n\n

来自Paginators \xe2\x80\x94 Boto 3 文档

\n\n
import boto3\n\n# Create a client\nclient = boto3.client(\'s3\', region_name=\'us-west-2\')\n\n# Create a reusable Paginator\npaginator = client.get_paginator(\'list_objects\')\n\n# Create a PageIterator from the Paginator\npage_iterator = paginator.paginate(Bucket=\'my-bucket\')\n\nfor page in page_iterator:\n    print(page[\'Contents\'])\n
Run Code Online (Sandbox Code Playgroud)\n