У меня возникла проблема, когда мне нужно было произвести случайную выборку из корзины AWS S3. Я использую библиотеку python boto3
для запросов S3.
Проблема в том, что в корзине содержится около 400 миллионов ключей. Так что создание списка ключей в виде:
kwargs = {'Bucket': bucket}
count = 0
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
займет огромное количество времени.
Другой вариант, если есть способ, сделать случайную выборку ключей на AWS сторона уже. Я не уверен, возможно ли это даже быстрее или быстрее?
Каким был бы быстрый способ случайной выборки некоторых ключей из корзины AWS? Конечно, я счастлив использовать что-то отличное от boto3
Я думал, что фильтрация по дате - это то, чем я могу легко управлять, поэтому я сделал что-то вроде:
export LASTWEEK=`date -v-1d +%F`
aws s3api list-objects-v2 --bucket alcheratech-old-analysed-data --query 'Contents[?LastModified > `$YESTERDAY`]'
Это кажется Бежать некоторое время, а также. Не уверен, что это перечисляет все, а затем фильтрует ...