boto3 中的 aws s3 - 如何通过 boto3 中的 s3 分页器移动到下一页
aws s3 in boto3 - how to move to next page by paginator of s3 in boto3
我正在尝试通过分页器或 buckets.objects.all() 获取 s3 对象。
但是没有任何想法传递下一页或下一个令牌来移动。
我想在 html 中分页显示 s3 图片。
这是 s3 分页器代码。这里没有任何通过的下一页。
http://boto3.readthedocs.io/en/latest/guide/paginators.html
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
PaginationConfig={'MaxItems': 10})
(更新,我删除了之前的内容,只适用于典型的list_objects,不适用于paginator)
对@HelloV的赞美,如果你需要精确的分页控制,你可以试试boto3.client('s3').list_objects_v2而不是list_objects,
目前,paginator('list_objects') 将 return 一个 "Marker" 元素,它允许您使用 JMESPpath 跳转到特定的迭代器。
filtered_iterator = page_iterator.search("Contents[?Marker = `<a_marker_key>`]")
for key_data in filtered_iterator:
print(key_data)
但是,您仍然需要遍历整个分页器迭代器来存储标记键,并进行页面操作。对于 list_objects_v2,您将获得 "ContinuationToken"(如 Marker)和 "NextContinuationToken",与 list_object
相比,它可以让您更好地遍历页面
您将 MaxItems
与 PageSize
混淆了。
MaxItems
Limits the maximum number of total returned items returned while
paginating.
页面大小
Controls the number of items returned per page of each result.
无需跟踪下一个page/token,迭代器会为您完成。以下代码 returns 每页 2 个对象,最多 10 个对象,这意味着最多可以有 5 次迭代。 MaxItems
和 PageSize
都是可选的。现在清楚了吗?
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
PaginationConfig={'PageSize': 2, 'MaxItems': 10})
for page in page_iterator:
print(page['Contents'])
我正在尝试通过分页器或 buckets.objects.all() 获取 s3 对象。 但是没有任何想法传递下一页或下一个令牌来移动。
我想在 html 中分页显示 s3 图片。
这是 s3 分页器代码。这里没有任何通过的下一页。
http://boto3.readthedocs.io/en/latest/guide/paginators.html
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
PaginationConfig={'MaxItems': 10})
(更新,我删除了之前的内容,只适用于典型的list_objects,不适用于paginator)
对@HelloV的赞美,如果你需要精确的分页控制,你可以试试boto3.client('s3').list_objects_v2而不是list_objects,
目前,paginator('list_objects') 将 return 一个 "Marker" 元素,它允许您使用 JMESPpath 跳转到特定的迭代器。
filtered_iterator = page_iterator.search("Contents[?Marker = `<a_marker_key>`]")
for key_data in filtered_iterator:
print(key_data)
但是,您仍然需要遍历整个分页器迭代器来存储标记键,并进行页面操作。对于 list_objects_v2,您将获得 "ContinuationToken"(如 Marker)和 "NextContinuationToken",与 list_object
相比,它可以让您更好地遍历页面您将 MaxItems
与 PageSize
混淆了。
MaxItems
Limits the maximum number of total returned items returned while paginating.
页面大小
Controls the number of items returned per page of each result.
无需跟踪下一个page/token,迭代器会为您完成。以下代码 returns 每页 2 个对象,最多 10 个对象,这意味着最多可以有 5 次迭代。 MaxItems
和 PageSize
都是可选的。现在清楚了吗?
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket',
PaginationConfig={'PageSize': 2, 'MaxItems': 10})
for page in page_iterator:
print(page['Contents'])