Node.js AWS Lambda在放置s3对象时出错
我正在开发一个功能,当任何图像被上传到bucket中的images文件夹时,通过将图像的缩略图版本保存在screenshot文件夹中来创建缩略图。我使用的是无服务器框架。我不断收到如下所示的错误。我粘贴了精确的代码,因此任何人都可以复制粘贴并实现此解决方案。还包括Serverless.yml、handler函数文件以及任何支持文件 我不明白什么时候我指的是缓冲区,为什么我会得到这个错误,对象类型不是缓冲区等等Node.js AWS Lambda在放置s3对象时出错,node.js,amazon-s3,aws-lambda,aws-sdk,serverless,Node.js,Amazon S3,Aws Lambda,Aws Sdk,Serverless,我正在开发一个功能,当任何图像被上传到bucket中的images文件夹时,通过将图像的缩略图版本保存在screenshot文件夹中来创建缩略图。我使用的是无服务器框架。我不断收到如下所示的错误。我粘贴了精确的代码,因此任何人都可以复制粘贴并实现此解决方案。还包括Serverless.yml、handler函数文件以及任何支持文件 我不明白什么时候我指的是缓冲区,为什么我会得到这个错误,对象类型不是缓冲区等等 {InvalidParameterType:预期params.Body为字符串、缓冲
{InvalidParameterType:预期params.Body为字符串、缓冲区、流、Blob或类型化数组对象
在ParamValidator.fail(/var/runtime/node_modules/aws sdk/lib/param_validator.js:50:37)
在ParamValidator.validatePayload(/var/runtime/node_modules/aws sdk/lib/param_validator.js:255:10)
在ParamValidator.validateScalar(/var/runtime/node_modules/aws sdk/lib/param_validator.js:133:21)
在ParamValidator.validateMember(/var/runtime/node_modules/aws sdk/lib/param_validator.js:94:21)
在ParamValidator.validateStructure(/var/runtime/node_modules/aws sdk/lib/param_validator.js:75:14)
在ParamValidator.validateMember(/var/runtime/node_modules/aws sdk/lib/param_validator.js:88:21)
在ParamValidator.validate(/var/runtime/node_modules/aws sdk/lib/param_validator.js:34:10)
at Request.VALIDATE_参数(/var/runtime/node_modules/aws sdk/lib/event_listeners.js:125:42)
at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:105:20)
在callNextListener(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:95:12)
消息:“预期params.Body为字符串、缓冲区、流、Blob或类型化数组对象”,
代码:“InvalidParameterType”,
时间:2019-03-12T16:37:26.910Z}
您的大小调整器
函数的返回值不是您所期望的。您正在使用带有回调的getBuffer
函数,这意味着图像的缓冲区不是由承诺解析的,而是在回调中使用的,这不是您的意图。您应该改为使用getBufferAsync
,它返回解析为图像缓冲区的承诺。您的大小调整器
函数应该如下所示:
function resizer(data, height) {
return Jimp.read(data)
.then(image => image
.resize(Jimp.AUTO, height)
.quality(100) // set JPEG quality
.getBufferAsync(Jimp.MIME_JPEG)
)
.catch(err => err);
}