читать все файлы из s3 bucket python, отсортированные по времени - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь получить все файлы, отсортированные по времени загрузки файла, у меня есть этот код:

s3 = boto3.client('s3')
objs = s3.list_objects_v2(Bucket='my_bucket')['Contents']
[obj['Key'] for obj in sorted(objs, key=get_last_modified)]

, но он дает мне только 1000 файлов, хотя я получил больше в корзине,что мне не хватает?

1 Ответ

0 голосов
/ 21 февраля 2019

list_objects_v2 ограничено первыми 1000 объектами.Ответы API имеют поле ContinuationToken, которое можно передать в API ListObjects для получения следующей страницы результатов.Ища этот токен и используя его для повторного запроса, мы можем постоянно извлекать каждый ключ из корзины:

"""Get a list of all keys in an S3 bucket."""
keys = []

kwargs = {'Bucket': 'my_bucket'}
while True:
    resp = s3.list_objects_v2(**kwargs)
    for obj in resp['Contents']:
        keys.append(obj['Key'])

    try:
        kwargs['ContinuationToken'] = resp['NextContinuationToken']
    except KeyError:
        break

Подробнее https://alexwlchan.net/2017/07/listing-s3-keys/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...