AWS Lambda - Python - чтение CSV-файла в S3-загруженной упакованной функции ZIP - PullRequest
0 голосов
/ 21 января 2019

У меня есть лямбда-функция в Python 3.6, которую я сжал в zip-файл для загрузки на S3 (общий размер функциональной папки составляет 180 МБ, поэтому). Внутри zip у меня есть 1 файл csv ('example.csv'), который я хочу прочитать в функции-обработчике лямбды.

Как читать этот файл? Я попробовал:

filename = 'example.csv'
filepath = os.environ['LAMBDA_TASK_ROOT'] + '/' + filename
df = pd.read_csv(filepath, dtype=str)

# Failed with OSError: Initializing from file failed

Пример содержимого моей папки с функциями лямбды:

root:
 -- lambda_function.py
 -- example.csv
 -- bunch of library folders

Содержимое моего CSV-файла:

  id | value | something | else
-----------------------------------
  0  |  lol  |    ok     |  bye
  1  |  omg  |    foo    |  bar
  2  |  thx  |    baz    |  qux

Каков путь к моему CSV-файлу?

1 Ответ

0 голосов
/ 21 января 2019

Я предполагаю, что вы используете boto3 , в документации есть метод download_file, доступный для загрузки файла на локальном компьютере.

import boto3
import zipfile
def lambda_handler(event, context):
    s3 = boto3.resource('s3')
    s3.Bucket('<first_bucket>').download_file('<file_name>.zip', '/tmp/<file_name>.zip')

    # put unzip code
    zip_ref = zipfile.ZipFile('/tmp/<file_name>.zip', 'r')
    zip_ref.extractall(directory_to_extract_to)
    zip_ref.close()
    #handle CSV file reading and rest of operation

После вышеприведенного кода вы можете поместить код обработки csv для чтения и выполнения необходимых операций над ним.

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