Есть ли способ для потоковой передачи объекта CSV из корзины S3 в AWS лямбда с помощью boto3? - PullRequest
1 голос
/ 10 мая 2019

Есть ли способ передавать данные вперед и назад в AWS lambda с помощью Boto3?У меня есть рабочий код, но он загружает данные CSV в память, обрабатывает их и помещает в объект s3.Я скорее ищу способ для потоковой передачи объекта из S3 с использованием Boto3 и потоковой передачи обратно на S3.

import csv
import json
import boto3

def lambda_handler(event, context):

    targetbucket = 'AWS_BUCKET_NAME'
    csvkey = 'CSV_FILENAME.csv'
    jsonkey = 'JSON_FILENAME.json'

    s3 = boto3.resource('s3')
    csv_object = s3.Object(targetbucket, csvkey)
    csv_content = csv_object.get()['Body'].read().splitlines()
    s3_client = boto3.client('s3')
    result = []

    for line in csv_content:
        x = json.dumps(line.decode('utf-8')).split(',')
        Name = str(x[0])
        Title = str(x[1])
        Age = str(x[2])
        jsonData = '{ "Name": ' + Name + '"' + ','  \
            + ' "Title": ' + '"' + Title + '"' + ',' \
            + ' "Age": ' + '"' +  Age + '"' + '}'
        result.append(jsonData)

    s3_client.put_object(
        Bucket=targetbucket,
        Body= str(result).replace("'",""),
        Key=jsonkey
    )

Ответы [ 2 ]

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

Я использую smart_open: https://github.com/RaRe-Technologies/smart_open Вот пример из его README.

>>> # can use context managers too:
>>> with open('smart_open/tests/test_data/1984.txt.gz') as fin:
...    with open('smart_open/tests/test_data/1984.txt.bz2', 'w') as fout:
...        for line in fin:
...           fout.write(line)

Вы можете открыть файл в корзине s3 с URL-адресом, который выглядит следующим образом: s3: // my_bucket / my_key

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

Для потоковой передачи данных из файла CSV / JSON в S3 вы можете использовать ' S3 Select '. Используя это, вы транслируете данные прямо в ваш код и используете его вместо загрузки файла в вашу память и обработки.

Кроме того, вы также можете выполнять базовые операторы SQL для кода.

Вы также можете обратиться к этому коду для ссылок: https://gist.github.com/SrushithR/1dbb6d3521383c259b47756506cf5955

...