【发布时间】:2020-10-13 09:40:40
【问题描述】:
我正在编写一个用于转换图像的 lambda,并为此使用 async.waterfall。 我很难调试 lambda,因为它似乎没有启动第二个函数转换。任何机构都可以帮助我进行调试。这实际上是一个非常基本的设置,但我不明白为什么它没有进入转换函数也没有抛出任何错误
async.waterfall([
function download(next) {
s3.getObject({
Bucket: srcBucket,
Key: srcKey
},
next);
},
function transform(response, next) {
console.log("transform", response);
sharp(response.Body)
.webp()
.toBuffer(next);
},
function upload(data, info, next) {
console.log("upload");
s3.putObject({
Bucket: dstBucket,
Key: dstKey,
Body: data,
},
next);
}
], function (err) {
if (err) {
console.error(
'Unable to convert ' + srcBucket + '/' + srcKey +
' and upload to ' + dstBucket + '/' + dstKey +
' due to an error: ' + err
);
} else {
console.log(
'Successfully converted ' + srcBucket + '/' + srcKey +
' and uploaded to ' + dstBucket + '/' + dstKey
);
}
callback(null, "message");
});
【问题讨论】:
-
lambda函数是用SAM构建的吗?
-
是的!这有什么不同吗?
-
仅供参考,
getObject回调接收两个参数:err和data。 -
它是否真的执行了 getObject 调用(我看那里没有日志记录)?此 Lambda 函数的 CloudWatch Logs 是否显示任何错误? Lambda 函数是否超时(默认超时为 3 秒,可能不足以下载大文件)?
标签: node.js asynchronous aws-lambda