错误:使用 html-to-pdf 包在 AWS Lambda 上生成 EACCES

wil*_*wil 1 node.js aws-lambda

我正在使用html-pdf并尝试使用节点 js 在 AWS Lambda 上将 html 转换为 pdf,但出现错误Error: spawn EACCES" message

START RequestId: 8bc188e7-8249-41d7-b8f7-8a2585ea8e46 Version: $LATEST
2019-06-07T20:44:44.824Z    8bc188e7-8249-41d7-b8f7-8a2585ea8e46    ************** start
2019-06-07T20:44:45.025Z    8bc188e7-8249-41d7-b8f7-8a2585ea8e46    Error: spawn EACCES
    at _errnoException (util.js:1022:11)
    at ChildProcess.spawn (internal/child_process.js:323:11)
    at Object.exports.spawn (child_process.js:502:9)
    at PDF.PdfExec [as exec] (/var/task/node_modules/html-pdf/lib/pdf.js:87:28)
    at PDF.PdfToBuffer [as toBuffer] (/var/task/node_modules/html-pdf/lib/pdf.js:44:8)
    at exports.handler (/var/task/index.js:17:35)
END RequestId: 8bc188e7-8249-41d7-b8f7-8a2585ea8e46
REPORT RequestId: 8bc188e7-8249-41d7-b8f7-8a2585ea8e46  Duration: 345.46 ms Billed Duration: 400 ms     Memory Size: 128 MB Max Memory Used: 39 MB  
RequestId: 8bc188e7-8249-41d7-b8f7-8a2585ea8e46 Process exited before completing request
Run Code Online (Sandbox Code Playgroud)

Vla*_*nko 5

夫妇的想法:

  1. 你如何打包和上传你的代码?lambda 要求文件对所有用户具有读取访问权限,尤其是“其他”,如果缺少此权限,您将在尝试调用该函数时收到一个不明显的错误。修复很简单,在创建 zip 文件之前执行“chmod a+r *”。如果代码在内嵌编辑器中可见,添加一个空行并保存也将解决问题,大概是通过使用正确的权限覆盖文件。

  2. 你在哪里保存转换后的文件/你是否使用 lambda tmp 目录?可能走错路

  3. Lambda 超时不允许有足够的时间来执行您的函数。不太可能,但由于提到进程在完成之前退出,我会仔细检查。检查函数的超时设置

  • @wil `EACCESS` 不是那种“访问”。这是一个 Linux 系统错误代码(代码 13),它转换为消息“权限被拒绝”——如果您试图在用户无权运行的机器上运行程序,就会发生同样的事情。`chmod a+r filename` * 和* `chmod a+x filename` 在构建 zip 之前*可能*是需要的。 (4认同)
  • @michael-sqlbot 谢谢,这是权限问题。我不知道 aws lambda 需要这个。 (2认同)