【发布时间】:2021-04-16 14:07:51
【问题描述】:
我是 NodeJS 和 AWS Lambda 的新手。我正在创建一个 lambda 函数来获取 s3 put 对象的预签名 URL。我在这里面临的问题是,调用 s3.getSignedUrl 是异步进程,它在回调中响应签名 URL,但在此调用响应之前,lambda 函数控件在此调用之后到达下一行,并且在客户端收到空响应。这是我的 lambda 函数的代码 sn-p。
exports.handler = async (event) => {
// Some stuff like reading inputs from request, initialising s3 object with AWS_ACCESS_KEY, and AWS_SECRET_KEY
var response="default response";
response = s3.getSignedUrl('putObject', {
"Bucket": myBucket,
"Key": fileName,
"ContentType": fileType
}, function (err, url) {
if (err) {
console.log("error")
return {
statusCode: 200,
body: JSON.stringify("Error in creating signed url"),
};
} else {
console.log("generated "+url)
return {
statusCode: 200,
body: JSON.stringify(url),
};
}
});
console.log("at end");
return response;
};
如果在日志语句方面说,那么在语句error 或generated url at end 之前打印日志语句并返回默认响应。是否有人可以更正此代码以响应在 s3.getSignedUrl 的回调中准备的响应。
【问题讨论】:
标签: node.js amazon-web-services amazon-s3 aws-lambda nodes