Python AWS Lambda S3: [Errno 2] Нет такого файла или каталога: 'which' - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь преобразовать файл HTML в pdf и загрузить его в S3, используя Python 3.8 и лямбду. Я создал пакет развертывания с использованием pdfkit, но при преобразовании в pdf получаю сообщение об ошибке "[Errno 2] Нет такого файла или каталога: 'which'". Тот же фрагмент кода работает на моей локальной машине с локальным путем.

Я также пытался создать txt-файл в / tmp, чтобы убедиться, что у меня есть доступ, и он успешно смог создать файл и оттуда загрузить на S3. Пожалуйста, помогите мне здесь.

    s3_upload = boto3.resource('s3')
    bucket_name = 'bucket-invoice'
    html_body = '<html>Hello from test-resource</html>'
    writeFileName = 'test_invoice.pdf'
    local_file_path = '/tmp/local_pdf_file.pdf'

    print('Step 1: ' + local_file_path, html_body)
    pdfkit.from_string(html_body, local_file_path)  # <-- Getting error here

    # Write to S3:
    print('Step 2: Uploading in S3')
    s3_upload.meta.client.upload_file(local_file_path, bucket_name, writeFileName)

    print('Step 3: upload done')

Сообщение об ошибке:

Response:
{
  "errorMessage": "[Errno 2] No such file or directory: 'which'",
  "errorType": "FileNotFoundError",
  "stackTrace": [
    "  File \"/var/task/invoice_api.py\", line 49, in lambda_handler\n    generate_pdf_2()\n",
    "  File \"/var/task/invoice_api.py\", line 161, in generate_pdf_2\n    pdfkit.from_string(html_body, local_file_path)\n",
    "  File \"/var/task/pdfkit/api.py\", line 69, in from_string\n    r = PDFKit(input, 'string', options=options, toc=toc, cover=cover, css=css,\n",
    "  File \"/var/task/pdfkit/pdfkit.py\", line 42, in __init__\n    self.configuration = (Configuration() if configuration is None\n",
    "  File \"/var/task/pdfkit/configuration.py\", line 17, in __init__\n    self.wkhtmltopdf = subprocess.Popen(\n",
    "  File \"/var/lang/lib/python3.8/subprocess.py\", line 854, in __init__\n    self._execute_child(args, executable, preexec_fn, close_fds,\n",
    "  File \"/var/lang/lib/python3.8/subprocess.py\", line 1702, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n"
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...