【发布时间】:2017-11-27 11:39:17
【问题描述】:
我正在使用适用于 Node.js 的 gm 包以及 AWS Lambda 上可用的默认 ImageMagick 安装。
const gm = require('gm').subClass({ imageMagick: true });
由于某些原因,某些图像的调整大小功能失败。
我使用 Amazon Linux AMI (ami-hvm-2016.03.3.x86_64-gp2) 创建了一个 EC2 实例。
我安装了可从yum 获得的(旧)6.x 版本的 ImageMagick。当我在 EC2 实例上使用该安装运行我的脚本时,它会重现我在 Lambda 上运行代码时看到的故障,确认是这个版本的 IM 导致了故障。
如果我使用sudo yum install GraphicsMagick 安装 GraphicsMagick。这允许我的脚本执行调整大小而不会出错。
const gm = require('gm').subClass({ imageMagick: false });
但是,我不确定如何在我的部署中将其与无服务器捆绑在一起。如果我使用 sudo yum --installroot=/var/task install GraphicsMagick 将 GraphicsMagick 安装到与脚本相同的文件夹,并使用此 require 语句运行我的脚本:
const gm = require('gm').subClass({ imageMagick: false, appPath: './usr/bin/' });
当我在 EC2 实例上运行我的脚本时,调整大小会起作用。但是当我使用无服务器部署并且脚本在 Lambda 中运行时,可执行文件似乎已损坏。 gm 在调用 gm(buffer).size(/*...*/) 时失败并出现以下错误。
could not get the image size: ERR:
{"code":"EPIPE","errno":"EPIPE","syscall":"write"}
我如何构建可以使用无服务器部署的 ImageMagick 或 GraphicsMagick 版本?
【问题讨论】:
标签: node.js imagemagick aws-lambda graphicsmagick serverless-framework