我尝试使用boto3
在python中列出Amazon s3存储桶中的对象。
似乎boto3
有两个函数可以列出存储桶中的对象:list_objects()
和list_objects_v2()
。
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