Под префиксом более 3к объектов. Я использую следующий код для перечисления всех объектов, чтобы получить их имена, но API извлекает только 1000 объектов. s3_client = boto3.client ('s3')

response = s3_client.list_objects(
    Bucket = "my-bucket",
    Prefix = "my-prefix",
    MaxKeys=50000
)


s3 = boto3.resource('s3')
bucket = s3.Bucket(S3)

print(len(response['Contents'])) # only retrieve 1000
5
BrightFlow 15 Фев 2018 в 05:43

1 ответ

Лучший ответ

Используйте пагинаторы для просмотра нескольких страниц. См. Создание пагинаторов

import boto3

client = boto3.client('s3')
paginator = client.get_paginator('list_objects')
operation_parameters = {'Bucket': 'my-bucket',
                        'Prefix': 'my-prefix'}
page_iterator = paginator.paginate(**operation_parameters)
for page in page_iterator:
    print(page['Contents'])
8
helloV 15 Фев 2018 в 06:10