AWS Lambda GraphicsMagick error: gm/convert binaries can't be found"

AWS Lambda GraphicsMagick error: gm/convert binaries can't be found"

我在 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 以使其工作吗?谢谢!

gm 是一个使用 ImageMagick 的 NodeJS 包。你还需要 ImageMagick 本身。

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

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

有一个静态构建的 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 层。 ImageMagick 和 GraphicsMagick Lambda 层都是成功 运行 您的 Lambda 函数所必需的。