Node.js AWS Lambda GraphicsMagick错误:gm/convert二进制文件可以';“找不到”;

Node.js AWS Lambda GraphicsMagick错误:gm/convert二进制文件可以';“找不到”;,node.js,aws-lambda,graphicsmagick,Node.js,Aws Lambda,Graphicsmagick,我在使用节点的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 Child

我在使用节点的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)
无法执行GraphicsMagick/ImageMagick:gm“convert”“/tmp/yH3Js6ALXVGGAokvIsij.png”“/tmp/a086ffd7-a143-4f83-8f6a-fcdd29b12630.png”这很可能意味着找不到gm/convert二进制文件
在这个过程中。(/var/task/node_modules/gm/lib/command.js:232:12)
在emitOne(events.js:96:13)
在ChildProcess.emit(events.js:188:7)
在Process.ChildProcess.\u handle.onexit(internal/child\u Process.js:213:12)
在onErrorNT(内部/子进程js:367:16)
at _combinedTickCallback(内部/流程/下一步_tick.js:80:11)
在进程中。_tickDomainCallback(internal/process/next_tick.js:128:9)

所以它说找不到gm/convert二进制文件,这意味着该应用程序没有安装,尽管行
“gm”:“^1.23.1”
在package.json中。你能告诉我现在我可以在回购协议中加入
gm/convert binaires
,使其生效吗?谢谢大家!

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

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


如果使用
serverless
,您可以查看其中提供的有关如何将
ImageMagick
构建为Lambda层的步骤。

有一个ImageMagick的静态构建,您可以直接从此页部署。

部署将创建一个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层。ImageMagick和GraphicsMagick Lambda层都是成功运行Lambda功能所必需的。

Jeez大量命令!他说的是在服务器上执行这些代码,对吗?他是说他想在一个bash文件中包含所有这些代码,并让Lambda在部署时执行它吗?(我不能对他的回答发表评论)不。您可以在Linux机器中执行以创建Lambda层。如果您在Mac OSX或Windows中,则必须使用
docker
vagrant
来创建与Lambda兼容的层。然后,部署Lambda层。然后,将Lambda函数配置为在Lambda层上运行。谢谢您的回答!我让AmazonLinux在Docker容器中运行,但我仍然难以理解如何完成其余的工作(使用所有代理获取ImageMagick,从容器中提取二进制文件,将它们用作AWS Lambda中的层…)。除了我们在谷歌搜索中找到的点点滴滴,你还有什么可以分享的参考资料吗?