在node.js中的AWS Lambda上使用.overlayWith()时出错

在node.js中的AWS Lambda上使用.overlayWith()时出错,node.js,amazon-web-services,amazon-s3,aws-lambda,sharp,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,Sharp,我在AWS Lambda上使用sharp,它工作得很好,但是,当我尝试添加水印时,它会给出一个错误 The input file is missing or of an unsupported image format 它在本地服务器上运行良好,但在AWS lambda上运行良好;它给出了这个错误 function watermarkLogo(buffer, last) { sharp(buffer) .overlayWith('wa

我在AWS Lambda上使用sharp,它工作得很好,但是,当我尝试添加水印时,它会给出一个错误

The input file is missing or of an unsupported image format
它在本地服务器上运行良好,但在AWS lambda上运行良好;它给出了这个错误

function watermarkLogo(buffer, last) {
              sharp(buffer)
                .overlayWith('watermark.png', { gravity: sharp.gravity.center } )
                .toBuffer(versions[ind].format, function(err, buffer) {
                  if (err) last(err);
                  else last(null, buffer);
                });
          }
水印和lambda函数在同一个存储桶中


如何解决此问题要添加水印,您可以使用复合水印


然后,您可以使用FTP和缓冲区获取水印,然后以复合方式传递缓冲区。

可能是“水印.png”文件丢失,您可以在AWS控制台上重新检查并确保该文件存在。@hoangdv我再次检查它的位置。我更新了问题并给出了链接alsoHix,您的Lambda函数将存储在您案例的节点容器中,因此代码将无法获取您的文件。s3 bucket仅存储lambda代码,当您使用选项Upload a file from Amazon s3 Upload:D创建/更新代码输入类型的lambda函数时,系统只需复制代码而不复制图像。您可以制作一个包含代码和图像的zip文件,然后上传到lambda函数或s3。你可以在任何地方看到任何东西
    let sharp = require('sharp');
    let imageBuffer = null;

    await sharp(buffer)
        .composite([{ input: './watermark.png', gravity: 'center' }])
        .sharpen()
        .withMetadata()
        .toBuffer()
        .then(function(outputBuffer) {
            imageBuffer = outputBuffer;
        });

return imageBuffer;