У меня есть ведро S3 с примерно 10 000 объектов в нем. Все объекты имеют одинаковый шаблон именования, за исключением самого конца имени. Например, файл имеет следующий шаблон:
"Order_RandomValuesHere_UniqueIDHere.txt"
Итак, все файлы начинаются со слова Order, за которым следуют случайные данные, и END со значением ID, которое я хочу искать дальше. Я пытаюсь создать Python лямбда-скрипт, который будет принимать идентификатор в качестве входного параметра, а затем искать в S3 конкретный объект c, который имеет это значение идентификатора в имени объекта, и извлекать данные из этого object.
objectlist = s3.list_objects_v2(Bucket="My-Bucket", Prefix="OrderNumber")
Вышесказанное прекрасно работает, чтобы захватить все, если у меня меньше 1000 результатов. Затем я перебираю ключи в поисках своего идентификатора в Key, поскольку префиксный параметр не сужает мой список:
for _ in range(len(objectlist['Contents'])):
if myId in objectlist['Contents'][_]['Key']:
print("We have found our Order file! It's key is: " + objectlist['Contents'][_]['Key'])
Однако проблема в том, что метод list_objects_v2 (и оригинальный list_objects) возвращает только первые 1000 результатов. Как мне получить запрос лямбда-функции ко всем более 10000 результатов, ища один файл, который я знаю, там? (но просто не знаю полного имени файла или уникального префикса). Вышеприведенное прекрасно работает, если в вашем ведре меньше 1000 объектов.
Любые предложения приветствуются! Я знаю, что, возможно, есть другой способ думать об этой проблеме, но я сталкиваюсь здесь с умственными препятствиями ...
Спасибо!