Запуск IronPDF на AWS Lambda - невозможно распаковать двоичные файлы в / tmp (.NET / C #) - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь запустить простое доказательство концепции запуска IronPDF на лямбда-AWS.Код разворачивается нормально, но при вызове IronPDF не может распаковать двоичные файлы, необходимые Chromium для рендеринга моего PDF.

Документы по установке IronPDF

Я использую serverless + csharpшаблон и функция вызывались нормально перед добавлением IronPDF.

Я пытался вручную установить каталог установки, но получаю ошибку permssion:

"IronPdf.Installation.TempFolderPath в настоящее время установлено в '/ tmp ', но у него недостаточно разрешений для развертывания. \ nПожалуйста, проверьте, существует ли этот каталог и предоставлены ли полные разрешения для текущего пользователя приложения "

Насколько я знаю, у пользователя AWS lambda есть полные разрешения для" /tmp ", но я никогда раньше не запускал .NET lambda.

РЕДАКТИРОВАТЬ: я смог написать текстовый файл в / tmp без проблем.

       public Response Hello(Request request)
       {
         IronPdf.Installation.TempFolderPath = @"/tmp";

         IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf();
         var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello from DocThread</h1>");
         PDF.SaveAs("/tmp/sample.pdf");

         return new Response("Go Serverless v1.0! Your function executed successfully!", request);
       }

Наконец, я представляючто это всего лишь вопрос, что я новичок в C # / .NET на AWS Lambda.Это довольно распространенный способ записи файлов в / tmp перед загрузкой в ​​S3.

Заранее спасибо за помощь!

1 Ответ

1 голос
/ 03 мая 2019

Я тоже боролся с этим вопросом и только что понял.Вот что я сделал:

  • Запустите IronPDF локально и установите TempFolderPath в каталог, который вы можете быстро найти.IronPdf распакует необходимые файлы (два .dll, .dylib и .so) в этот каталог.
  • Найдите распакованные файлы в указанном выше наборе TempFolderPath и скопируйте IronPdf_ChromeRenderingEngine.so в корень Lambda.проект.
  • В Visual Studio установите Действие построения на Содержимое на вкладке свойств для .so
  • В Visual Studio установите Скопировать в выходной каталог в Скопировать, если новее, на вкладке свойств для .so
  • Добавить Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ":" + Environment.GetEnvironmentVariable("LAMBDA_TASK_ROOT")); в конструктор для Lambda.
  • Установите IronPdf.Installation.TempFolderPath = @"/tmp";

Я также установил для MemorySize значение 512 и значение тайм-аута на 180 в serverless.template, потому что я увеличивал память на 256.

Я надеюсь, что этоимеет смысл и поможет вам решить вашу проблему!

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