как запросить все объекты в ведре с помощью s3.select_object_content? - PullRequest
0 голосов
/ 28 мая 2020

Мне нужно искать во многих объектах s3 текстовую строку только в первой строке. Я понимаю, как это сделать для одного объекта, и по отдельности я могу перечислить все объекты в ведре, но у меня проблемы с их объединением.

Чтобы получить содержимое только из одного файла, у меня есть следующее:

s3 = boto3.client('s3')
sql_stmt = """select * from s3object limit 1"""

req = s3.select_object_content(
Bucket="some-bucket",
Key="some_file",
ExpressionType='SQL',
Expression=sql_stmt,
InputSerialization = {'CSV': {'FileHeaderInfo': 'NONE'}},
OutputSerialization = {'CSV': {}})

Он вернул первую строку, так здорово. Но может ли это работать с обычными методами для обхода всех объектов, таких как paginator? Я не мог заставить его работать.

Кто-то задал этот вопрос в прошлом году, и ответ заключался в том, чтобы использовать Афину, которую я посмотрел, и опять же, она работает для одного объекта, но я не знаю, как это сделать для многих объектов. Поэтому, пожалуйста, не помечайте меня как дубликат, потому что на самом деле он не был решен.

Есть ли способ перебрать содержимое объекта s3 с помощью выражения SQL?

Итак, вопрос в том, как сделать это для всех объектов в ведро? Может ли Афина это сделать? Я не понимаю, как это сделать. Спасибо.

...