AWS Lambda GraphicsMagick错误:找不到gm / convert二进制文件“

时间:2018-12-17 19:23:22

标签: node.js aws-lambda graphicsmagick

我正在使用Node的Lambda函数起诉GraphicsMagick,但出现此错误:

Could not execute GraphicsMagick/ImageMagick: gm "convert" "/tmp/yH3Js6ALXVGGAokvIsij.png" "/tmp/a086ffd7-a143-4f83-8f6a-fcdd29b12630.png" this most likely means the gm/convert binaries can't be found
at ChildProcess.<anonymous> (/var/task/node_modules/gm/lib/command.js:232:12)
at emitOne (events.js:96:13)
at ChildProcess.emit (events.js:188:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:213:12)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickDomainCallback (internal/process/next_tick.js:128:9)

因此它显示the gm/convert binaries can't be found,这意味着尽管行"gm": "^1.23.1"位于package.json中,但尚未安装该应用程序。您现在可以告诉我,我可以在仓库中加入gm/convert binaires使其正常工作吗?谢谢!

2 个答案:

答案 0 :(得分:2)

gm是用于使用ImageMagick的NodeJS程序包。您仍然需要ImageMagick本身。

您需要为Lambda环境安装并编译ImageMagick。然后,您可以将其上传为Lambda图层,您的Lambda函数可以位于该图层之上。

如果使用serverless,可以看看this answer,它为您提供了如何将ImageMagick构造为Lambda层的步骤。

答案 1 :(得分:0)

有一个静态的ImageMagick构建,您可以直接从此页面进行部署。 https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:145266761615:applications~image-magick-lambda-layer

部署将创建一个Lambda层,您可以在Lambda函数中使用它。

请注意,您仍然需要GraphicsMagick node.js库,您可以通过运行以下命令在Amazon Linux 2 AMI实例上构建该库:

sudo yum update
curl -sL https://rpm.nodesource.com/setup_10.x  | sudo bash -
sudo yum install nodejs
mkdir nodejs
cd nodejs
npm init
npm install gm
cd ..
zip -r nodejslayer.zip ./nodejs

然后可以将该zip文件直接上传以创建第二个Lambda层。要成功运行Lambda函数,必须使用ImageMagick和GraphicsMagick Lambda层。