我正在尝试复制上传到 S3 存储桶的文件以创建带时间戳的备份。 (“实时”文件将定期覆盖以维护永久链接)
但是,AWScopyObject 似乎并未执行。我收到以下错误
{
"errorMessage": "Process exited before completing request"
}
导致该错误的代码如下;
console.log('Loading function');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = function(event, context) {
var srcBucket = event.Records[0].s3.bucket.name;
var srcKey = event.Records[0].s3.object.key;
var dstKey = srcBucket+'/backup/'+ Date.now() + '-' +srcKey;
console.log(srcKey);
console.log(dstKey);
var copyParams = {
Bucket: srcBucket,
CopySource : srcBucket + '/' + srcKey,
Key: dstKey
};
s3.copyObject(
copyParams,
function (err, data) {
if (err) {
console.log("ERROR copyObject");
console.log(err);
}
else {
console.log('SUCCESS copyObject');
}
context.done();
});
};
什么可能导致 lambda 在 AWSCopyObject 回调之前退出?根据https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/此错误表明 context.done() 从未被命中。
最佳答案
我遇到了类似的问题,似乎只有当我尝试使用 AWS Lambda 控制台进行测试时才会出现问题,但是当我尝试使用真实存储桶执行测试(上传测试文件)并且 Lambda 函数成功执行时。
尝试查看“日志输出”,您将获得有关实际错误的更多详细信息。
谢谢
关于node.js - AWS Lambda 复制对象 "Process exited before completing request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377190/