我正在使用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
使其正常工作吗?谢谢!
答案 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层。