zgrep S3 bucket из скрипта - PullRequest
       12

zgrep S3 bucket из скрипта

0 голосов
/ 11 апреля 2019

Если я хочу извлечь файл из терминала, я могу использовать AWS CLI следующим образом:

aws s3 cp s3://path/to/file/filename.tsv.gz - | zgrep 12345

Я хотел бы сделать это рекурсивно из сценария.Пока я делаю это

import boto3

s3_client = boto3.client('s3')
obj = s3_client.get_object(Bucket=bucket, Key=prefix + file_name)
body = obj['Body'] 
with gzip.open(body, 'rt') as gf:
    for ln in gf:
        if string in ln:
            print(string)

Это прекрасно работает, но на самом деле это не очень быстро.Поэтому я бы хотел использовать zgrep.

Я пытался

import subprocess

cp = 'aws s3 cp s3://' + bucket + '/' + prefix + file_name + ' - | zgrep ' + string

result = subprocess.run(cp, check=True, shell=True, stdout=subprocess.PIPE)
print(result)

Но получить subprocess.CalledProcessError в качестве команды returned non-zero exit status 1

...