Как составить список более 1000 объектов с помощью S3 ListBucket? - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю с API Amazon S3, в частности с ListObjects (v2), командой GetBucket. К сожалению, я могу вернуть только 1000 предметов. Я думаю, что вы указываете, что Delimeter или nextMarker установлены, чтобы вызвать разбиение на страницы и вернуть все. У кого-нибудь есть пример того, как это достигается? Окончательный результат от curl или GET на самом деле возвращает все, а не только 1000 объектов.

1 Ответ

0 голосов
/ 27 февраля 2020

Если для ответа list_objects() для IsTruncated установлено значение True, вы можете сделать следующий вызов, передав NextContinuationToken из предыдущего ответа в поле ContinuationToken при последующем вызове. Это вернет следующие 1000 объектов.

Или вы можете использовать предоставленные Paginators, чтобы сделать это для вас.

От Paginators - документация Boto 3 :

import boto3

# Create a client
client = boto3.client('s3', region_name='us-west-2')

# Create a reusable Paginator
paginator = client.get_paginator('list_objects')

# Create a PageIterator from the Paginator
page_iterator = paginator.paginate(Bucket='my-bucket')

for page in page_iterator:
    print(page['Contents'])
...