AWS Lambda在node.js 4.3中收到错误“找不到模块'gm'”

时间:2016-06-04 11:57:59

标签: node.js amazon-web-services amazon-s3 imagemagick aws-lambda

这是我在AWS上的第一个lambda函数。

我只想将S3上的JPG转换为PNG。到目前为止,我有这个:

'use strict';

let aws = require('aws-sdk');
let im = require('imagemagick');
let s3 = new aws.S3();

exports.handler = (event, context, callback) => {
    const bucket = event.Records[0].s3.bucket.name;
    const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
    const s3params = {
        Bucket: bucket,
        Key: key
    };
    s3.getObject(s3params, function(err,s3obj) {
        //s3obj has the image in .Body...
    });
}

我一直试图找出如何使用imagemagick将此JPG转换为PNG。 convert函数似乎需要文件而不是缓冲区。我无法弄清楚如何去做,似乎没有我能找到的例子。

帮助!

1 个答案:

答案 0 :(得分:0)

以下是我如何在lambda上使用graphicsmagick: var gm = require('gm').subClass({ imageMagick: true });

请注意,由于5月初在ImageMagick库中发现的漏洞,AWS Lambda团队已在imagemagick预装模块中禁用了imagemagick某些功能(EPHEMRAL,URL,HTTPS,MVG和MSL)(请参阅https://imagetragick.com并在此进一步解释:AWS Lambda not working along with the gm module。通常情况下,您可以使用gm从网络中提取图像,然后将该流保存为您的png,但您可能会遇到上述问题