boto3 list_objects和list_objects_v2有什么区别?

时间:2016-05-30 21:54:56

标签: python amazon-s3 boto3

我尝试使用boto3在python中列出Amazon s3存储桶中的对象。

似乎boto3有两个函数可以列出存储桶中的对象:list_objects()list_objects_v2()

2和使用其中一个的好处有什么区别?

2 个答案:

答案 0 :(得分:20)

并排比较。

list_objects():

response = client.list_objects(
    Bucket='string',
    Delimiter='string',
    EncodingType='url',
    #Marker to list continuous page
    Marker='string',
    MaxKeys=123,
    Prefix='string'
)

list_objects_v2()

response = client.list_objects_v2(
    Bucket='string',
    Delimiter='string',
    EncodingType='url',
    MaxKeys=123,
    Prefix='string',
    # Replace marker to list continuous page
    ContinuationToken='string',

    # set to True to fetch key owner info. Default is False.
    FetchOwner=True|False,

    # This is similar to the Marker in list_object()
    StartAfter='string'
)

添加了功能。由于每页1000个键列出限制,使用标记列出多个页面可能是一个令人头疼的问题。从逻辑上讲,您需要跟踪成功处理的最后一个密钥。使用ContinuationToken,您不需要知道最后一个密钥,只需检查响应中是否存在NextContinuationToken。您可以生成并行进程来处理1000个密钥的乘法,而无需处理获取下一页的最后一个密钥。

答案 1 :(得分:-1)

如果您要开发新内容,Amazon建议使用版本2。从AWS文档:

  

获取存储桶(列出对象)版本1

     

重要

     

此API已修改。我们建议您使用较新的   版本,开发时为GET Bucket(列表对象)版本2   应用程序。有关更多信息,请参见GET Bucket(列出对象)   版本2。为了向后兼容,Amazon S3继续支持   GET Bucket(列表对象)版本1。

https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html