Есть ли способ перебора содержимого объекта s3 с помощью выражения SQL? - PullRequest
0 голосов
/ 10 мая 2019

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

Мне удалось создать скрипт Python, который перечисляет все объекты внутри моего ведра.

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucketname')
startAfter = 'bucketname/directory'
for obj in bucket.objects.all():
    print(obj.key)

Мне также удалось создать скрипт Python, который использует выражение SQL для просмотра содержимого объекта.

import boto3

S3_BUCKET = 'bucketname'

s3 = boto3.client('s3')

var1 = 'aj9c03869'
var2 = 'b3bu11043'


r = s3.select_object_content(
        Bucket=S3_BUCKET,
        Key='name_of_object',
        ExpressionType='SQL',
        Expression='select * from s3object s where s.\"serialnumber\" in (%r,%r) ' % (var1,var2),
        OutputSerialization={'JSON': {}},
        InputSerialization={
        'CompressionType': 'GZIP',
        'JSON': {
            'Type': 'DOCUMENT'
    } }, )


for event in r['Payload']:
    if 'Records' in event:
        records = event['Records']['Payload'].decode('utf-8')
        print(records)

Я хотел бы создать цикл, который проходит через каждый объект корзины, использует выражение sql для поиска данных внутри объекта и возвращает все совпадения.

- Edit:

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

Ответы [ 3 ]

2 голосов
/ 10 мая 2019

Взгляните на Amazon Athena - интерактивные запросы SQL для данных в Amazon S3

0 голосов
/ 10 мая 2019

S3 Выбрать также вариант, но Афина будет проще.

0 голосов
/ 10 мая 2019

Возможно, вы захотите взглянуть на пакетные операции S3, которые позволят вам выполнить свой код Python (развернутый в lambda) для всех объектов в ваших корзинах (ах)

С этим решением вы не будетеНужно перечислить объекты в корзине, но AWS может запустить ваш скрипт на всех ваших объектах.

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