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 函数所必需的。
我在 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 函数所必需的。