我想在AWS Lambda函数中将html转换为pdf。有一个使用wkhtmltopdf的节点包。这是它的链接。
https://www.npmjs.com/package/wkhtmltopdf
但是当我运行我的代码时,我得到了以下错误。
Error: /bin/sh: wkhtmltopdf: command not found
at Socket.<anonymous> (/var/task/node_modules/wkhtmltopdf/index.js:79:17)
at Socket.g (events.js:180:16)
at Socket.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:765:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:427:10)
at emitReadable (_stream_readable.js:423:5)
at readableAddChunk (_stream_readable.js:166:9)
at Socket.Readable.push (_stream_readable.js:128:10)
at Pipe.onread (net.js:529:21)
无论如何都要在lambda函数中安装“wkhtmltopdf”命令。
答案 0 :(得分:3)
从文档(https://www.npmjs.com/package/wkhtmltopdf):
首先,您需要在系统上安装wkhtmltopdf命令行工具。
以下是有关如何在lambda https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/
上安装文件的说明Lambda的内置沙箱可让您安全地运行以任何语言编写的代码,因为Lambda不依赖语言运行时来提供功能之间的隔离。无论Lambda是为您启动流程还是您自己启动流程,无论其编写语言如何,您都可以获得相同的保护。有了这个,让我们看看它有多容易:
和
包含您自己的可执行文件很容易;只需将它们打包到您上传的ZIP文件中,然后在从Node.js或之前启动的其他进程中调用它们时引用它们(包括您创建的ZIP文件中的相对路径)。确保在功能代码的开头包含以下内容:
答案 1 :(得分:2)
我可以在nodejs中添加二进制文件。实际上,我们的代码运行在/var/task
,它位于process.env[‘LAMBDA_TASK_ROOT’]
。
因此,如果我们将二进制文件放在zip文件夹的root中,那么我们可以将它包含在如下所示的路径中。
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];