Ошибка при импорте pdfminer в aws lambda

Извините за повторный вопрос, потому что они не решили мою проблему, которая уже задавалась здесь раньше, как преобразовать pdf-файл из s3 в строковую переменную с помощью лямбда-функции,

Моя лямбда-функция показывает ошибку

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

Unable to import module 'lambda_function': No module named 'pdfminer'

import json
import boto3
import botocore
import sys
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
import io
s3 = boto3.client('s3')
def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    filename = 'myfile'
    s3.download_file(bucket,key, '/tmp/'+filename)
    print('reading')
    fp = open('/tmp/'+filename, 'rU').read()
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    # Create a PDF interpreter object.
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    # Process each page contained in the document.

    for page in PDFPage.get_pages(fp):
    interpreter.process_page(page)
    data =  retstr.getvalue()

    print(data)

person Arun Kumar    schedule 27.02.2018    source источник


Ответы (1)


Проблема здесь в том, что ваша лямбда-функция не может найти библиотеку pdfminer. Эта библиотека отсутствует в лямбда-контейнере. Чтобы преодолеть это, вам нужно установить библиотеку в корень вашего приложения (там, где присутствует ваш файл lambda_handler). Для этого есть 2 способа:

  1. Установите pdfminter, выполнив эту команду в корне вашего каталога: pip install pdfminter -t ./
  2. Создайте файл requirements.txt в корне вашего приложения и определите в нем pdfminter. Установите все зависимости, выполнив следующую команду в корне вашего каталога: pip install -r requirements.txt -t ./

Всегда рекомендуется запускать приведенные выше команды в виртуальной среде.

Рекомендации:

  • См. это Документ AWS о создании пакетов развертывания для Lambda.
  • См. этот вопрос о стеке. , где у них была аналогичная проблема с другой зависимостью.
  • Документ со списком всех модулей, установленных по умолчанию в среде Python Lambda, можно найти здесь
person krishna_mee2004    schedule 27.02.2018