PageIterator skipping a page when browsing list_objects_v2
with Delimiter
#3119
Labels
bug
This issue is a confirmed bug.
investigating
This issue is being investigated and/or work is in progress to resolve the issue.
p2
This is a standard priority issue
s3
Describe the bug
The pagination of S3
list_objects_v2
skip pages when usingCommondPrefixes
(i.e.Delimiter
) andStartingToken
Use case:
Our API provides a list of S3 "folders" and supports pagination. It is a wrapper over our internal S3 bucket and forwards the information. The first response of the API returns a list of common prefixes and the
next token
provided by thePageIterator
. The second request uses this token to continue the listing.Expected Behavior
Using the
paginator.paginate()
method with theDelimiter
parameter and not settingStartingToken
should return all pages starting from the first one and its next token.Using it again but this time with a given
StartingToken
(the first pagenext token
) should return all pages starting from the second one and its next token.Current Behavior
When the
paginator.paginate()
is called withStartingToken
it returns the second page with an emptyCommonPrefixes
list but the third with a validCommonPrefixes
listReproduction Steps
You need a bucket with date partitions and files in them.
Output:
Possible Solution
No response
Additional Information/Context
I followed the issue down to
PageIterator.__iter__()
(.venv/lib/python3.11/site-packages/botocore/paginate.py
)The
primary_result_key
is initiated a few lines before that asself.result_keys[0]
andresult_keys
are essentially coming from a JSON schema fromvenv/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/paginators-1.json
where
result_key
isContents
which is missing in the S3 response bodyparsed
SDK version used
1.31.17
Environment details (OS name and version, etc.)
MacOS 14.2.1 (23C71)
The text was updated successfully, but these errors were encountered: